瑞芯微Cortex-A7系列芯片u-boot补丁,引导鸿蒙内核liteos.bin 精华
鸿蒙系统已开源不久,网上关于鸿蒙移植到第三方芯片的相关资料较少,把自己移植的步骤陆续分享给大家 。
手上的几个Rockchip系列芯片做了移植,在rv1126,rk3126c,rk3288几颗芯片跑了liteos的最小系统。
这篇文章先教大家如何修改uboot引导鸿蒙内核liteos.bin
1.烧写工具修改与配置。瑞芯微原厂提供的烧写工具可对Android固件和Linux固件的烧写。修改工具添加liteos和rootfs两个分区。用来烧写鸿蒙的liteos.bin内核,rootfs.img。
右键点击瑞芯微烧写工具,选择导入配置选择我已经修改好的cfg文件。工具显示的几个分区loader,uboot,liteos,rootfs会根据parameter分区所指定的parameter.txt文件更新实际的分区地址。
接下来配置下希望固件烧写在设备上存储的对应位置和分区大小。
我们打开看下rk3288原厂的Android配置文件parameter.txt
指出的标红部分是我做的修改。
0x00010000@0x0000a000(liteos)
@符号左边10000指分区的大小(以块为单位512),a000指分区其实位置,(liteos)指分区名称。
在这里分区大小和分区起始地址保持默认的,将分区名字从原来的kernel改成了liteos.
0x00010000@0x0005a000(rootfs)
这边也将原来的分区名称system改成了rootfs,并把原来的分区大小改成了10000.
分区的大小可自己随便修改。分区大小以块为单位,每块大小是512。可对分区大小进行换算,计算出实际可存储空间,把10000十六进制转换成10进制
0x00010000 转十进制65536 ,乘上块大小512 再转换成M位单位,实际存储空间是32M
(65536 * 512)/1024/1024 = 32M
上面配置文件可知liteos和rootfs分区各分配了32M用来存放固件,大家可根据需求修改.重新配置删除不需要的分区
2.修改u-boot 引导liteos.bin。
liteos.bin可通过go命令+litesos.bin文件在内存中对应的内存地址进行启动。
如:go x01000000
前面烧写的固件被存放到0x0000a000(liteos)分区大小为0x00010000
我们需要将liteos和rootfs这两个个分区的数据读到物理内存。
对u-boot进行修改,添加两个u-boot环境变量,用于指定分区存放的物理内存位置
把 liteos和rootfs分别放到物理内存x01000000和0x40000000。
打开cmd/bootrkp.c文件修改拷贝分区,并执行go命令
找到uoboot启动命令bootrkp对应方的法
修改include/configs/rockchip-common.h文件,将bootrkp命令放到前面执行,删除用不上的Android启动命令。
接着重新编译u-boot
烧写固件启动:
致此,我们的u-boot代码已修改完成,u-boot支持启动烧写到存储设备上的liteos.bin了。
u-boot代码和烧写工具可在 github获取:
https://github.com/rockchip-linux/u-boot.git
https://github.com/rockchip-linux/tools/tree/master/windows/RKDevTool/RKDevTool_Release
完整的u-boot补丁可在附件下载
好东西啊。。。。。。。。。。。
膜拜大佬,求教一下rv1108可以移植liteOS_a版本的鸿蒙吗
rv1108可以移植, 对着芯片手册修改mmu内存映射,uart串口启动,具体移植方法参考韦东山的视频课程