MENU

(四)Nano Pi移植鸿蒙OS——运行liteos

2020 年 12 月 06 日 • 鸿蒙OS

本篇文章将介绍如何给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
QQ截图20201206215408.jpg

通过查看鸿蒙内核的链接文件kernel/liteos_a/platform/board.ld,我们需要将内核加载至0x40000000的地址上。
QQ截图20201206215908.jpg

接下来使用load命令将内核加载到指定地址上,然后使用go命令跳转到指定地址上执行指令。

load  mmc 0:2 0x40000000 /boot/liteos.bin
go 0x40000000

当上面的命令敲完之后,设备打印了条信息就卡住了。
QQ截图20201206220209.jpg

为什么会卡住呢?因为其实内核可能启动到某个阶段了,但是由于我们没有去写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程序的时候出异常了,需要解决。
Snipaste_2021-05-05_15-39-49.png

最后编辑于: 2023 年 10 月 05 日