LicheeRV Nano 是一款迷你尺寸的开发板(仅22.86*35.56mm),搭载算能SG2002处理器,大核1GHZ (RISC-V/ARM可选)小核700MHZ RISC-V,256MB DDR3内存,内置 1Tops NPU;板载MIPI-CSI、MIPI-DSI、SDIO、ETH、USB、SPI、UART、I2C等丰富的接口,可扩展多种多样的应用;直插/半孔设计,方便量产贴片。
项目 | 参数 |
---|---|
CPU | 算能 SG2002; 大核:1GHz RISC-V C906 / ARM A53 二选一; 小核:700MHz RISC-V C906; 低功耗核:25~300M 8051 |
NPU | 1TOPS INT8,支持 BF16 |
内存 | 内封 2Gbit (256MByte) DDR3 |
存储 | TF卡 / SD NAND 二选一启动 (SD NAND 焊盘在 TF 卡槽下) |
视频接口 | 视频输出:2 lane MIPI DSI 输出,标准 31pin 接口,支持 6pin 电容触摸屏 视频输入: 4 lane MIPI CSI 输入,22Pin 接口,支持拆分双路 CSI |
音频接口 | 音频输出: 板载PA功放,可在排针上直接连接1W以内的喇叭 音频输入: 板载模拟硅麦,可直接收音 |
有线连接 | E 后缀版本支持百兆 RJ45 连接器 |
无线连接 | W 后缀版本支持 2.4G / 5.8G 双频 WiFi6 + BLE5.4 |
USB | 1 x USB2.0 OTG Type-C |
IO接口 | 2 x 14pin 2.54 插针接口,间距 800mil,可直插面包板 |
按键 | 1 x RST 按键 + 1 x BOOT 按键 |
指示灯 | 1 x 电源 LED,1 x 用户 LED |
操作系统 | Buildroot Linux / Debian |
尺寸 | 22.86*35.56mm |
配置 | 基础系统 | 麦克风/扬声器 | 以太网 | WiFi6/BT5 |
---|---|---|---|---|
LicheeRV-Nano-B | Y | Y | N | N |
LicheeRV-Nano-E | Y | Y | Y | N |
LicheeRV-Nano-W | Y | Y | N | Y |
LicheeRV-Nano-WE | Y | Y | Y | Y |
规格书、原理图、尺寸图等均可在这里找到:点击这里
LicheeRV Nano 先后生产两个版本的硬件,分别为内测版(PCB识别号:70405),量产版(70415)。两者外观和性能上存在些许差异
LicheeRV Nano根据网络分为四个版本:
标准版(B)无网络配件
网口版(E)板载100M网口
WiFi版(W)板载WiFi6/BT5.2模块,BT5.2功能默认不启用,如需使用蓝牙功能,需要贴此处4颗0201电阻或使用2B铅笔填涂短接
注:70415及以上版本可使用0402*4的排阻短接
WiFi网口版(WE)板载WiFi6/BT5.2模块,同时提供一个网口小板,通过铜柱与排线连接到开发板上
同时我们提供以下六种配件:
摄像头
该摄像头(3754)左右螺丝固定孔不短路,铜柱推荐固定到第5个焊盘上
3寸屏幕
屏幕分辨率为480*845,带触摸;包装附赠屏幕触摸转接板和排线
5寸屏幕
屏幕分辨率为480*845,不带触摸;排线可直接连接到LicheeRV Nano 31Pin屏幕接口上
7寸屏幕
屏幕分辨率为800*1280,带触摸;排线可直接连接到LicheeRV Nano 31Pin屏幕接口和6Pin触摸接口上
10寸屏幕
屏幕分辨率为800*1280,带触摸;包装附赠触摸转接板和排线,屏幕排线可直接连接到LicheeRV Nano 31Pin屏幕接口
焊接排线
按照下图方向焊接排线
使用万用表检测通断
固定铜柱
为避免焊接铜柱时烫手,可以先将将铜柱拧到网口小板上
将铜柱插入第5个焊盘,可以提前在焊盘上涂抹锡膏,提升焊接后铜柱的稳定性
在底部使用电烙铁焊接
组装
将排线接入网口小板的FPC座子,并锁紧
用螺丝将网口小板固定到铜柱上
固定铜柱
与上面固定方法类似:先将铜柱和螺丝拧到摄像头模组上
将铜柱插入第5个焊盘,可以提前在焊盘上涂抹锡膏,提升焊接后铜柱的稳定性
在底部使用电烙铁焊接
组装
根据下图连接摄像头排线
螺丝固定
3寸屏幕安装
5寸屏幕安装
7寸屏幕安装
LicheeRV Nano的大核支持作为RISC-V(C906)或ARM(A53)启动,在开发板背面,SG2002芯片旁边有丝印圈出的短接电阻,如下图所示,默认贴在C906(RISC-V)一侧
若大核需要作为ARM启动,需要将该电阻挪至另外一边,如下图
需注意,目前A53模式下的SDK视频编解码存在问题,测试镜像点击这里下载
LicheeRV Nano适配不同尺寸的屏幕,其中3寸、2.3寸为单串LED;5寸为双串LED;7寸、10.1寸为四串LED。
如上图背光电阻默认使用两个10R 0201并联,适配5寸屏幕;
接入2.8/3寸屏幕会明显发烫,内测版70405需拆掉BL电阻(下图位置),70415及后续版本可通过PWM自动适配小尺寸屏幕;
接入7/10.1寸屏幕时屏幕略暗,若需达到100%亮度,要将该电阻修改为3.3R
LicheeRV Nano 上不包含锂电池充电电路,如果用户需要嵌入电池,同时希望使用 RV Nano 自带的 USB TypeC 充电,则需要断开VBUS与VSYS的电阻(下图位置),VBUS接口作为PMU的外部电源输入,VSYS接口连接PMU的VSYS。如有疑问,请联系我们获得支持
镜像使用xz/lz4进行压缩,解压后使用rufs/win32diskimager/dd工具写入到SD卡
镜像使用xz进行压缩,解压后使用rufs/win32diskimager/dd工具写入到SD卡
使用7zip工具进行解压:
https://www.7-zip.org/download.html
使用 rufs/win32diskiamger 写入到SD卡
https://sourceforge.net/projects/win32diskimager/
将UART串口连接到板子的 GND
、A16(TX)
、A17(RX)
然后使用终端软件连接串口,波特率115200
在USB接口上的SBU1/2上也引出了UART0,可使用USB TypeC转接板引出RX0、TX0
首先将用户空间的输出转到别的tty设备上:
然后设置内核日志等级:
测试方法:
另一种方法是在/boot/uEnv.txt中加入以下内容将console换到别的tty上:
UART1和2的引脚默认用作连接UART蓝牙芯片:
如果只想使用UART1,则不需要更改PINMUX,只需要连接 GPIOA28 GPIOA29
如果想要同时使用UART1和UART2的功能,则需要写入寄存器来设置引脚的PINMUX:
在Linux用户空间可以使用devmem工具来写入寄存器
shell:
UART3 的引脚被默认复用为SDIO:
如果想要使用UART3的功能,则需要写入寄存器来设置引脚的PINMUX:
在Linux用户空间可以使用devmem工具来写入寄存器
shell:
Linux系统中的串口使用:
C:
shell:
将板子的usb typec口连接到电脑时会提供一个usb rndis网卡设备(linux gadget 提供)
PC会使用DHCP自动获取地址
将自动获取的IPv4地址最后一位换成1即是板子的IPv4地址:
然后使用 ssh root@板子的IP地址进行连接:
用户名: root
密码: root
Windows 系统下,需要进行一些配置。
打开设备管理器,找到下面的选项:
选择更新驱动程序。
选择浏览我的电脑以查找驱动程序。
选择让我从计算机上的可用驱动程序列表中选取。
在设备类型列表中选择网络适配器。
厂商选择 Microsoft,型号选择远程NDIS兼容设备。
若弹出这个警告请点击确定。
然后可在设备管理器中的网络适配器列表下找到远程NDIS兼容设备项。
将网线连接到板子,板子开机时会使用DHCP自动获取地址
板子镜像默认启用了MDNS服务
使用命令:
列出广播域中域名带有的licheervrvnano的设备
然后使用:
连接板子
查看SOC温度:
查看SOC时钟:
在sd卡第一个分区创建 usb.dev 文件,并且删掉 usb.host 文件:
如果需要启用acm虚拟串口:
如果需要启用rndis虚拟网卡:
然后重启设备
在sd卡第一个分区创建 usb.host 文件,并且删掉 usb.dev 文件:
然后重启设备,给排针的VBUS或VSYS供5V电源,连接设备到TYPEC口,在系统内使用lsusb检查设备是否连接
PWM的引脚默认被用作UART,如果想用作PWM,则需要设置寄存器:
licheerv nano 支持录音和播放,使用标准 ALSA 工具可以进行录音、播放等操作。
首先设置麦克风音量,范围:0-24
如果没有找到amixer工具,也可以使用alsamixer(tui)
设置完成后开始录音:
系统内GPIO查看:
首先用 'devmem 0x0300xxxx 32 0xxx' 修改引脚的PINMUX到GPIO
寄存器查找方式(以A22为例):在此处下载SG2002寄存器手册,手册中查找XGPIOA[22],在表格中对应到GPIO,shell命令: 'devmem 0x03001050 32 0x03'
带WiFI模块的版本 GPIO P18 ~ P23 连接 WiFi 模块的 SDIO 接口,用于 WiFi 通信;GPIO A26 用作 WiFi EN,请避免使用这些引脚,普通版和仅网口版用户可自由定义这些引脚功能
GPIO A18、A19、A28、A29 由一颗0402*4排阻连接至WiFi模块的蓝牙接口,默认空贴,WiFi版用户可自由定义这些引脚的功能,若想启用蓝牙,请参照此处焊接对应电阻
UART1和2的引脚默认用作连接UART蓝牙芯片:
如果想要同时使用UART1和UART2的功能,则需要写入寄存器来设置引脚的PINMUX:
在Linux用户空间可以使用devmem工具来写入寄存器
shell:
UART3 的引脚被默认复用为SDIO:
如果想要使用UART3的功能,则需要写入寄存器来设置引脚的PINMUX:
在Linux用户空间可以使用devmem工具来写入寄存器
shell:
Linux系统中的串口使用:
C:
shell:
插针上引出了 I2C1 和 I2C3,将设备连接到其上即可。
使用前需要先正确设置 PINMUX:
然后可以使用 i2c-tools 进行 i2c 外设的操作,镜像中已经预装。
带WiFi模块的板卡(W、WE版)I2C1和I2C3硬件上连接到WiFi模块的SDIO,存在I2C无法读写的可能,PINMUX到I2C时WiFi模块不可用,可使用以下命令恢复WiFi连接:
摄像头和触摸屏接口共用I2C4,可使用 'i2cdetect -ry 4' 扫描设备。需注意I2C4处于1.8V电源域,连接其他设备时请注意电平匹配。
SPI2默认被复用作SDIO:
如果想要使用SPI2,则需要更改PINMUX:
简单测试SPI:
将SPI的MISO和MOSI连起来,然后执行:
如果TX和RX的数据一样,则引脚复用没有问题
LicheeRV Nano插针上引出了一路12位ADC,在板内已做分压处理,如图:
经测试,ADC输入电压在0-4.6V时,对应ADC值为0000-4095
首先选择 ADC channel,这里以 ADC1 为例:
读取 ADC1 的值:
将屏幕的排线接到板子的MIPI接口,注意线序
创建或编辑sd卡第一个分区中的uEnv.txt文件,添加或修改panel字段:
注:镜像将第一个分区已经挂载到/boot目录下,可在终端中直接操作:
7寸屏(型号以屏幕丝印为准):
5寸屏(型号以屏幕丝印为准):
3寸屏:
2.3寸屏:
如果想用framebuffer功能,则在sd卡第一个分区创建一个文件名为fb的文件:
然后加载驱动:
调整屏幕背光亮度:
测试屏幕显示:
首先按照上面的方法打开fb,然后执行:
将触摸屏排线接到板子的触摸屏接口,注意线序
如果是gt911芯片,则需要在第一个分区创建一个gt9xx文件:
然后加载驱动
然后执行:
点击触摸屏会在终端看到具体坐标
将天线安装到WIFI模块的天线座子上
在sd卡第一个分区创建wifi.sta文件启用sta模式:
然后将AP的SSID和密码写入文件:
重启Wifi服务
在sd卡第一个分区创建wifi.ap文件启用ap模式:
然后将要创建AP的SSID和密码写入文件:
重启Wifi服务
在sd卡第一个分区创建wifi.mon文件启用监听模式:
重启Wifi服务
使用tcpdump或airodump-ng来捕获报文
将摄像头安装到摄像头座子,注意线序
然后执行:
如果使用70405(内测版)的板子:
使用命令查看按键事件:
然后按下USER按键,可以在终端看到对应的事件报告
需要下载平头哥的调试服务器:
https://xuantie.t-head.cn/community/download?id=4209675990638596096
发
准备一个Slogic Combo 8,切换到CKLINK模式,并连接到JTAG引脚
按下切换按键,将指示灯切换为黄色
验证CKLink功能是否开启的方法:
Windows环境打开设备管理器,Linux环境使用lsusb命令,可以找到"CKLink HS"设备
引脚连接
CKLink和DAPLink线序相似,所以放到了一张图里,请忽略掉“DAP”
CKLink模式下可以同时支持一路CKLink和一路UART
使用方法
在Windows、Linux系统可以直接参考使用 CDK + Sipeed RV-Debugger Plus 编译调试和T-HEAD Debug Server 用户手册,用法完全一样
使用CDK进行调试
Start/Stop Debugger
按钮,进入debug界面,如下图所示Debug HellowWorld!
在debug
界面下,你可以在左侧的Register
窗口中查看CPU的内部寄存器数据。同时,在右侧的Peripherals
外设面板中,你可以浏览相应外设寄存器数据。你可以通过顶部菜单栏的Peripherals->System Viewer
来选择所需的外设。此外,在界面上方的工具栏中,你会找到相关的调试按钮,它们可以用于设置断点、单步调试、逐条指令执行以及全速运行等操作。当然,所有这些操作都有相应的快捷键和快速设置方式。如需详细信息,请参考CDK帮助文档,这里就不再详细展开介绍。
点击单步运行按钮,运行代码,即可看到指示光标移动到下一句代码,同时可以看到串口面板中显示输出的 Hello World!
RV Nano的JTAG引脚:
然后将调试器连接到电脑,切换到CKLINK模式,给板子上电,按住RESET按钮,然后松开的时候启动DebugServer
datasheet: https://github.com/sophgo/sophgo-doc/releases
bootrom(bl1) 判断sd卡第一个FAT分区内是否拥有 fip.bin,如果有,则执行2,如果没有,则进入usb烧录模式(提供一个ACM串口从机设备),bl1会初始化uart0,波特率128000
】加载fip.bin(bl2)里面的代码到0x0C000000(TPU SRAM),跳转到bl2,初始化clock,DRAM,执行3
】加载opensbi到DRAM,执行,然后加载uboot到DRAM
】uboot加载第一个分区内的boot.sd文件到DRAM,如果文件没有问题
】跳转到boot.sd内提供的代码(通常是Linux内核)一个简单的裸机HelloWorld demo,用于演示:
】最小化可以启动的fip.bin(bl2):
】启动C906小核
】一些外设的裸机驱动(TODO)
】启动8051(TODO)
https://github.com/0x754C/sg200x-bare
基于算能官方SDK修改,如果要使用mmf框架,则必须使用这个SDK
源码:
https://github.com/sipeed/LicheeRV-Nano-Build
构建环境搭建可以参考repo内的github cicd文件:
文档:
TODO
基于主线buildroot,提供更干净的构建环境
TODO
基于主线openwrt,面向将板子当作便携无线AP的用户。
TODO
基于主线alpine linux,面向在板子上跑distro的用户。
这些寄存器的描述可以在芯片手册中找到
提供两种方法修改引脚复用
例如,wifi的pinmux:
算能SDK提供两种方式:
在middleware中的用户空间demo中添加屏幕初始化序列.
在uboot中添加屏幕的初始化序列.(目前使用这种方式)
算能SDK的MIPI RX目前只能在用户空间初始化,需要修改middleware中的代码
本文用来介绍使用算能SDK开发MMF的方法,为想要上手开发MMF却无从下手的开发者提供一个开发思路。
MMF全称是多媒体软件架构(Multimedia Framework),这个架构将视频输入输出、音频输入输出、图像信号处理、硬件编解码等功能提供了统一格式的API,用户可以通过调用封装好的API来快速实现多媒体相关的功能。
请参考LicheeRV Nano->系统开发->cvi_mmf_sdk
中介绍的方法来搭建MMF的开发环境
或者参考下面的指令
上述指令介绍了如何安装MMF相关的编译环境,以及如何编译SDK提供的MMF示例。
LicheeRV-Nano-Build/middleware/v2/sample/cvg
文件夹后再重试。如果你需要这个demo,则使用build_all编译后再尝试,build_all需要编译整个sdk,因此编译时间较长请参考LicheeRV Nano->板卡介绍
中来找到大部分资料
对于MMF应用可以着重看下面的资料
通过网络连接开发板的目的是为了让我们编译的固件可以被上传到板子中。
请参考LicheeRV Nano->外设使用
中的方法来获取开发板的IP地址,三种方法任意实现其中一种即可:网线连接
、WIFI连接
、USB RNDIS连接
MMF内部封装了直接操作硬件的方法,因此稍有疏忽就有导致系统崩溃的可能,开发MMF一定要注意保持耐心和注重细节。建议是通过示例来修改出自己的程序。
以sample_vio为例
上述指令介绍了如何编译某一个MMF示例,以及上传示例到开发板和运行这个示例。开发者可以根据自己的应用来修改示例,最后开发出自己想要实现的功能。
周一-周五(9:30-6:30)周六(9:30-5:30)
手机:13434470212
邮箱:services04@spotpear.cn
QQ:202004841