前言
全志 allwinner D1 哪吒
开发板基于RISC-V 64位架构,平头哥64位C906核心,默认运行Linux系统,通过简单的修改,可以运行rt-smart
rt-smart 当前不能直接从NandFlash 加载运行,需要借助bootloader,如 U-Boot
借助全志的
tina Linux,把 Linux 内核文件替换为 rt-smart内核文件,运行 rt-smart 内核
操作步骤
首先搭建基于 rt-smart 的最小系统,也就是 rt-smart 内核文件 加上 BSP d1-allwinner-nezha,搭建的过程还算顺利,不过d1-allwinner-nezha的当前BSP需要简单的修改才能保证编译通过,这里注意讲解 rt-smart 内核固件的烧写与运行
搭建d1-allwinner-nezha 的 rt-smart 最小系统后,在ubuntu RISCV64编译环境下,通过 scons 生成 rtthread.bin文件,初步测试 mkimage 出来的 rtthread.img 暂时无法正常引导,所以直接使用rtthread.bin
在全志在线开发者社区 , 注册一个账号,下载全志Tina Linux SDK,使用这个SDK的好处是,OpenSBI U-Boot 等适配好了,可以编译后直接拿来使用
编译 Tina Linux,过程可以参考全志社区的文章,主要的操作步骤如下
本篇的文章部分参考了全志社区的 rt-smart 相关文章
build 环境设置
source build/envsetup.sh
替换 boot.img
u-boot引导修改
lunch 选择 2. d1-h_nezha-tina
make 编译,如:make -j4,后面的 -j4 根据实际情况可与改大,这样编译会快一些,如果编译失败需要安装一下ubuntu 依赖的软件包
pack 命令打包,打包后镜像,可以烧写到 哪吒开发板 NandFlash中运行
默认 Tina Linux 打包后是 Linux 系统镜像,如果想替换为 rt-smart,最简单的方式就是使用 rt-smart 替换Linux内核文件
通过对 Tina Linux 的产物初步了解, Linux 内核在 boot.img 中,而 当前 哪吒开发板的下载工具,只支持 Tina Linux pack后的镜像文件
也就是 使用 rtthread.bin 替换 boot.img,再使用 pack 打包,这样生成的:tina-d1-h/out/d1-h-nezha/tina_d1-h-nezha_uart0.img,就可以使用 哪吒的下载工具烧写了,这里烧写到 NandFlash中
哪吒烧写工具是:PhoenixSuit.exe
U-Boot 引导 Linux 内核,一般默认把内核读取到RAM中,使用 bootm引导,如:sunxi_flash read 45000000 ${boot_partition};bootm 45000000,这里需要把 bootm 替换为 go 命令,这样直接运行 rt-smart 编译后的 rtthread.bin
系统启动后进入u-boot 的命令行,通过 setenv 命令修改,也可以进入 Tina Linux,修改:tina-d1-h/device/config/chips/d1-h/configs/nezha/env.cfg 配置文件
rt-smart 不使用 Linux 的 rootfs,所以删除 rootfs的分区,这样pack 打包后的 镜像文件就变小了
tina-d1-h/device/config/chips/d1-h/configs/nezha/sys_partition.fex
修改完上面的,可以再次 make 编译 ,并使用 rtthread.bin 替换 tina-d1-h/out/d1-h-nezha/boot.img, 再运行 pack 命令,这样打包后的镜像,就是 rt-smart的启动镜像文件了
镜像烧写
使用NandFlash引导,首先打开 哪吒的windows的烧写工具:PhoenixSuit.exe,选择 打包好的rt-smart镜像文件:PhoenixSuit.exe
哪吒开发板断电, 按住 按键【FEL】,USB 插入 【OTG】的 USB口上电,等 PhoenixSuit 进入烧写状态,松开 按键 FEL,就可以烧写了,如果第一次,可能需要安装 USB【驱动】
烧写完,开发板重新上电,如拔插【USB】线,板子重启,引导并启动 rt-smart了
备注:哪吒开发板没有引出硬件重启的复位按键,复位引脚的测试点,在板子的背面
启动信息
至此 rt-smart 初步在【哪吒开发板】d1-h 上运行起来了
小结
mkimage 出来的 img 镜像文件,无法正确的引导,这个后面抽时间分析,因为这样,就可以直接u-boot bootm 启动了
后面继续研究 rt-smart 的启动流程,用户应用程序的编译 与 烧写方法。
原作者:张世争