我是靠谱客的博主 朴实老虎,最近开发中收集的这篇文章主要介绍鸿蒙os内核移植,(四)Nano Pi移植鸿蒙OS——运行liteos,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本篇文章将介绍如何给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。

3759ebcbb70b2f5c01e89bcc91d11286.png

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

a69e1b35470fc07fdd86d21ca1ef07eb.png

接下来使用load命令将内核加载到指定地址上,然后使用go命令跳转到指定地址上执行指令。load mmc 0:2 0x40000000 /boot/liteos.bin

go 0x40000000

当上面的命令敲完之后,设备打印了条信息就卡住了。

bbd49720bf14a818039b84503cd9a3dd.png

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

daca17694c2f7d07c25be3363f915947.png

最后

以上就是朴实老虎为你收集整理的鸿蒙os内核移植,(四)Nano Pi移植鸿蒙OS——运行liteos的全部内容,希望文章能够帮你解决鸿蒙os内核移植,(四)Nano Pi移植鸿蒙OS——运行liteos所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部