前言
根据测评计划,本次在D1S开发板芯片上体验RT-Smart系统,在整个过程中也遇到了很多问题,熬了几个晚上,终于把坑铺平了,本篇文章记录整个过程,本篇文章是完成后才写的,中间可能有部分遗漏,遇到问题的可以在文章下留言,欢迎一起讨论。
环境搭建
虚拟机建议使用unbuntu20,因为之前使用的是unbuntu16的,在搭建环境出现了各种问题,所以放弃了unbuntu16上进行开发,新建了unbuntu20进行了开发。
首先需要获取RT-Smart源码和应用层代码,新建文件夹D1S用于存放应用层代码。
终端打开输入命令:
git clone https://github.com/RT-Thread/userapps.git
接下来进入userapps,下载RT-Smart内核代码,使用一下命令:
git clone https://github.com/RT-Thread/rt-thread.git
在下载源码的过程中可能出现下载失败,连接不上,关闭代理服务器设置就可以了。
接下来配置开发环境,进入tools,输入以下命令:
python3 tools/get_toolchain.py riscv64
退出tools,进入到userapps,输入以下命令进行配置:
source smart-env.sh riscv64
接下来进入/userapps/rt-thread/bsp/allwinner/d1s目录下,输入scons -- menuconfig,进行工程配置或者信息查看。
查看输出串口信息,同时也可以在rtconfig.h中查看,这里主要进行工程配置。
接下来在General Drivers Configruation 下选择General Prupose UARTs中查看串口输出引脚。
接下来进行编译输入scons可以得到sd.bin
在编译过程中可能出现编译工具链不对,在rtconfig.py中修改到自己的路径即可。
编译过程中还可能出现找不到openssl,这里只需要安装libssl-dev
将编译的sd.bin和tools下的boot0_sdcard_sun20iw1p1_d1s.bin拷贝到windows下借助xfel工具进行烧录。
硬件连接
本次需要串口和USB进行下载,串口使用的是uart0,引脚是PE2和PE3。
查看原理图中的排针接口
对应芯片引脚,这里使用其他串口进行连接,不使用板载的BL702
实物连接:
烧录
烧录需要使用zadig这个软件给该设备强制安装winusb驱动,需要使用xfel进行烧录,这里需要注意的是这块板子的SD卡和Bl702有冲突,需要将拨码开关调整OFF,不然永远也下不进去。全部拨到OFF
首先按着开发板的FEL键,然后按一下复位按键进入FEL模式,打开zadig软件强制安装驱动
打开zadig软件进行驱动安装
安装完成后开始下载程序,将sd.bin和boot0_sdcard_sun20iw1p1_d1s.bin拷贝到FEL的同级目录:
接下来使用SD工具SD Card Formatter格式化SD卡。
格式化完成后进入FEL文件路径输入cmd,进入命令行,使用XFEL.EXE进行烧录
下载前确保开发板已经进入了FEL模式,不然会报错,同时确认拨码开关已拨至SD卡。
烧录boot镜像:
xfel.exe sd write 8192 boot0_sdcard_sun20iw1p1_f133.bin
烧录内核镜像:
xfel.exe sd write 8388608 sdroot.bin
接下来打开串口助手,复位开发板,查看输出
总结
本次RT-Smart已经跑起来了,过程中也遇到了很多坑,熬了几个晚上,坚持多尝试总会找到解决办法的,接下来会进行下一步的开发。