前言
- 全志 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需要简单的修改才能保证编译通过,这部分的操作可以查看 https://gitee.com/zhangsz0516/allwinner_d1s 后面会整理详细的搭建流程,这里注意讲解 rt-smart 内核固件的烧写与运行 - 搭建
d1-allwinner-nezha
的 rt-smart 最小系统后,在ubuntu RISCV64编译环境下,通过 scons
生成 rtthread.bin
文件,初步测试 mkimage
出来的 rtthread.img
暂时无法正常引导,所以直接使用rtthread.bin
- 在全志在线开发者社区 https://www.aw-ol.com/ , 注册一个账号,下载全志
Tina Linux
SDK,使用这个SDK的好处是,OpenSBI
U-Boot
等适配好了,可以编译后直接拿来使用 - 编译
Tina Linux
,过程可以参考全志社区的文章,主要的操作步骤如下 - 本篇的文章部分参考了全志社区的 rt-smart 相关文章
- build 环境设置
source build/envsetup.sh
- lunch 选择
2. d1-h_nezha-tina
- make 编译,如:
make -j4
,后面的 -j4
根据实际情况可与改大,这样编译会快一些,如果编译失败需要安装一下ubuntu 依赖的软件包 -
pack
命令打包,打包后镜像,可以烧写到 哪吒开发板 NandFlash中运行
替换 boot.img
- 默认
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引导修改
- 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 的启动流程,用户应用程序的编译 与 烧写方法