概述
本篇文章将介绍如何给Nano Pi移植liteos,为启动鸿蒙OS启动liteOS类型的内核。
This article will introduce how to port liteOS to Nano Pi and start the liteos type kernel for starting Harmony OS.
OK,在上篇文章中我们给Nano-Pi烧写了U-Boot,但是没有启动程序。接下来我们将为Nano Pi移植liteOS内核,从而为接下来启动鸿蒙OS做好内核准备。
1. 尝试启动主线鸿蒙内核liteos.bin
当然我们可以先把现有的liteOS内核进行启动看下有什么反应。
在上个文章中我们把SD卡上烧写了U-Boot,但是我们还可以继续使用SD卡的后几个分区,比如对于我的SD卡来说,rootfs分区和user data分区都是完整的,所以我这边先把鸿蒙2.0主线上的内核拷贝到rootfs分区下的/boot目录下。然后我们把SD卡插回到设备上,进行上电启动。
在设备串口打印Hit any key to stop autoboot的时候,我们敲下回车键,进入U-Boot命令界面。
然后查看我们的SD卡分区,可以看到刚刚我放置的/boot目录在mmc 0:2。
通过查看鸿蒙内核的链接文件kernel/liteos_a/platform/board.ld,我们需要将内核加载至0x40000000的地址上。
接下来使用load命令将内核加载到指定地址上,然后使用go命令跳转到指定地址上执行指令。load mmc 0:2 0x40000000 /boot/liteos.bin
go 0x40000000
当上面的命令敲完之后,设备打印了条信息就卡住了。
为什么会卡住呢?因为其实内核可能启动到某个阶段了,但是由于我们没有去写UART驱动,所以即使内核有输出信息也不会打印的屏幕上。
2. 给liteOS写Nano Pi的串口驱动
此处代码较为繁琐,后续将开启新章节进行介绍。
3. 加载根文件系统
先装载内核到内存、再装载根文件系统到内存,最后跳转到内核。load mmc 0:2 0x40000000 /boot/liteos.bin
load mmc 0:2 0x58000000 /boot/rootfs.img
go 0x40000000
内核启动正常,根文件系统挂载正常,但是执行init程序的时候出异常了,需要解决。
最后
以上就是朴实老虎为你收集整理的鸿蒙os内核移植,(四)Nano Pi移植鸿蒙OS——运行liteos的全部内容,希望文章能够帮你解决鸿蒙os内核移植,(四)Nano Pi移植鸿蒙OS——运行liteos所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复