编辑语:
随着RISC-V生态的蓬勃发展,相关开源开发套件也开始逐渐丰富。为了帮助开发者快速了解、玩转新推出的RISC-V开发套件,OCC推出RISC-V生态开发套件解析系列内容,详细讲解生态开发套件的功能特点与上手教程。
有关Sipeed LicheeRV 86开发板,我们已经介绍了其套件组成和3种接线方式,并讲解了如何进行TF系统烧录操作。作为一款模块化的开发套件,LicheeRV 86开发板拥有丰富的外设功能。本期内容我们将集中讲解该套件各外设功能的操作方法,旨在帮助广大开发者认识其特点,并实现更深层次的应用开发。
01 点灯
1.1 准备
- LicheeRV 核心板
- 数据线
(注:该教程不适用于86-panel,因为对应引脚连接了外设,86panel用户可以拆下核心板来操作实验)
1.2 点灯操作
核心板的螺丝固定焊盘旁有一颗LED,查看原理图:https://dl.sipeed.com/shareURL/LICHEE/D1/Lichee_RV/HDK/2_Schematic
可知该LED连接的是PC1,换算该IO的数字标号为:2*32+1=65,或者查看IO复用情况表:
cat /sys/kernel/debug/pinctrl/2000000.pinctrl/pinmux-pins ... pin 64 (PC0): device 2008000.ledc function ledc group PC0 pin 65 (PC1): UNCLAIMED pin 66 (PC2): UNCLAIMED pin 67 (PC3): UNCLAIMED pin 68 (PC4): UNCLAIMED pin 69 (PC5): UNCLAIMED pin 70 (PC6): UNCLAIMED pin 71 (PC7): UNCLAIMED
我们先导出该GPIO:
echo 65 > /sys/class/gpio/export cd /sys/class/gpio/export/gpio65
然后再将该IO置为输出状态,即可操作其电平:
echo out>direction echo 1 > value #LED点亮 echo 0 > value #LED熄灭
至此我们就成功在RISC-V 64 D1上点灯啦~
你也可以对 串行RGB LED WS2812 进行花式点灯:
cd /sys/class/leds/ echo 255 > sunxi_led0r/brightness;echo 0 > sunxi_led0g/brightness;echo 0 > sunxi_led0b/brightness; echo 0 > sunxi_led0r/brightness;echo 255 > sunxi_led0g/brightness;echo 0 > sunxi_led0b/brightness; echo 0 > sunxi_led0r/brightness;echo 0 > sunxi_led0g/brightness;echo 255 > sunxi_led0b/brightness;
02 音频功能
2.1 准备
- LicheeRV 86 Panel (含Tina/WAFT镜像)
- 数据线
2.2 录放音操作
录音设备查看
root@MaixLinux:~# arecord -l **** List of CAPTURE Hardware Devices **** card 0: audiocodec [audiocodec], device 0: SUNXI-CODEC 2030000.codec-0 [] Subdevices: 1/1 Subdevice 0: subdevice 0 card 1: snddmic [snddmic], device 0: 2031000.dmic-dmic-hifi dmic-hifi-0 [] Subdevices: 1/1 Subdevice 0: subdevice 0 card 2: sndhdmi [sndhdmi], device 0: 2034000.daudio-audiohdmi-dai 20340a4.hdmiaudio-0 [] Subdevices: 1/1 Subdevice 0: subdevice 0
播放设备查看
root@MaixLinux:~# aplay -l **** List of PLAYBACK Hardware Devices **** card 0: audiocodec [audiocodec], device 0: SUNXI-CODEC 2030000.codec-0 [] Subdevices: 1/1 Subdevice 0: subdevice 0 card 2: sndhdmi [sndhdmi], device 0: 2034000.daudio-audiohdmi-dai 20340a4.hdmiaudio-0 [] Subdevices: 1/1 Subdevice 0: subdevice 0
录放音测试:
arecord -D hw:1,0 -f S16_LE -t wav -d 3 t.wav aplay -D hw:0,0 t.wav
另外可以使用alsamixer 进行音量调整
aplay只能播放wav或者pcm格式,如果想播放mp3等编码的音频,可以使用内置的ffmpeg进行相关播放操作:
ffmpeg -i /root/ybdl.mp3 -f alsa hw:0,0
03 USB及网络
3.1 准备
- LicheeRV 86 Panel (含Tina/WAFT镜像)
- 数据线
- C转A的转接头
3.2 USB功能
86 panel 使用type-C口引出了USB Host口,所以需要使用C转A的转接头来插常见的USB外设。
默认内核支持外挂U盘的驱动,插上U盘后可以使用 fdisk -l 查看到新增的 /dev/sda 如果U盘没有被格式化,可以使用mkfs.vfat指令来格式化U盘,再使用mount指令挂载 默认Tina固件里的 /dev/mmcblk0p8 分区即可使用上述方式格式化后挂载,来提升可用空间.
默认也支持一些免驱的USB键鼠,如果你烧录的是debian镜像,可以直接使用USB键鼠进行界面操作。
如果需要支持其他USB功能,需要自行编译USB相关内核驱动。
3.3 有线网络
LicheeRV-86 Panel 支持百兆网络,使用套餐附送的网线尾线接上网线后,执行以下指令来连接有线网络
ifconfig eth0 up udhcpc -ieth0
网线端子的连接方式为:
3.4 无线网络
LicheeRV 底板默认使用XR829或者RTL8723BS wifi模块,可以使用以下指令进行联网操作:先配置热点信息:
vim /etc/wifi/wpa_supplicant.conf network={ ssid="Sipeed_2.4G" psk="XXXX" }
配置完成后重启,ifconfig wlan0 up; udhcpc -iwlan0 即可连上对应的wifi。连上网络后,你就可以使用ssh远程登录板卡,或者使用scp来进行文件传输啦~
如果你烧录的是WAFT镜像,则开机默认会启动app_wifi.wasm应用,该应用内可以进行界面上的联网操作:
04 屏显触摸
4.1 准备
- LicheeRV 86 Panel (含Tina/WAFT镜像)
- 数据线
- 自备MP4视频资源文件
4.2 屏幕显示
LicheeRV系列支持以下显示屏:
SPI屏 1.14寸屏(TODO) RGB屏 4.3寸 480x272;5.0寸 800x480; RGB+SPI屏 4.0寸 480x480(st7701s); 4.0寸 720x720(nv3052c) MIPI屏 8.0寸 1280x720(ILI9881C)
Tina下可以通过以下指令测试屏幕显示:fbviewer xxx.jpg 如果需要调试屏幕驱动,可以使用以下指令查看屏幕驱动信息:
cat /sys/class/disp/disp/attr/sys screen 0: de_rate 300000000 hz, ref_fps:60 mgr0: 480x480 fmt[rgb] cs[0x204] range[full] eotf[0x4] bits[8bits] err[0] force_sync[0] unblank direct_show[false] iommu[1] dmabuf: cache[0] cache max[0] umap skip[0] overflow[0] lcd output backlight( 50) fps:59.5 esd level(0) freq(60) pos(0) reset(0) 480x 480 err:0 skip:184 irq:230715 vsync:0 vsync_skip:0 BUF enable ch[1] lyr[0] z[16] prem[N] a[globl 255] fmt[ 0] fb[ 480, 480; 480, 480; 480, 480] crop[ 0, 0, 480, 480] frame[ 0, 0, 480, 480] addr[ffe00000, 0, 0] flags[0x 0] trd[0,0]
屏幕彩条测试:echo 1 > /sys/class/disp/disp/attr/colorbar
4.3 屏幕触摸
如果你购买的是86面板套餐,可以使用 ts_test进行触摸测试 (注意触摸驱动有瑕疵,ts_test测试时松开后,光标会不动,但是终端仍会正常打印信息)
4.4 视频播放
最终我们可以尝试在LicheeRV上播放BadApple啦~ Tina镜像中内置了ffmpeg软件包,ffmpeg是强大的多媒体库,可以用于录屏或者播放 录屏指令:ffmpeg -f fbdev -framerate 10 -i /dev/fb0 record.avi 播放指令(分别是扬声器播放音频和hdmi播放音频):
ffmpeg -i /mnt/UDISK/badapple_640480_xvid.mp4 -pix_fmt bgra -f fbdev /dev/fb0 -f alsa hw:0,0 ffmpeg -i /mnt/UDISK/badapple_640480_xvid.mp4 -pix_fmt bgra -f fbdev /dev/fb0 -f alsa hw:2,0
这里由于是CPU软解,所以测试最高分辨率约为720x540, 再高会变卡。
MP4资源可以从矽速下载站或者网盘中下载(详见镜像烧录章节的链接)