赞
踩
鸿蒙系统的启动流程
Liangkz 2021.04.11 Ver1.0
目录
1. 第一阶段:U-Boot启动
2. 第二阶段:汇编代码引导LiteOS-a内核
3. 第三阶段:内核LiteOS-a的C语言启动阶段
4. 第四阶段:鸿蒙系统应用层的启动
5. 鸿蒙应用(APP)的启动
6. #task命令查看进程/线程信息(简表)
声明:
严格来说本文档并非真正原创的,这是上了朱有鹏老师的免费课《想读懂鸿蒙2.0源码,也许你需要先懂这些》之后,做的一些总结。
课程时间一个半小时,内容也很多,学习过程中我发现朱老师的ppt上部分代码/文件,在我本地的鸿蒙系统代码上找不到,或者路径不相同,所以我就做了一些整理。
这里仅摘取课程中的鸿蒙系统在HI3516DV300平台上的启动流程部分(从30:00开始讲解启动过程)进行汇总和整理,如有错误,请朱老师和各位同学指正。后继在学习过程中会继续对本文当作修正升级。
我的本地代码是基于最新发布的OpenHarmony 1.1.0 LTS(2021-04-01)版本抓取的,代码根目录OHOS1_1_0LTS:
$repo init -u https://gitee.com/openharmony/manifest.git -b refs/tags/OpenHarmony_release_v1.1.0--no-repo-verify
$repo sync
在根目录下执行:
OHOS1_1_0LTS$ hbset
[OHOS INFO] Input code path: .
OHOS Which product do you need?
->ipcamera_hispark_taurus@hisilicon
OHOS1_1_0LTS$ hb build
即可开始编译 hi3516dv300 平台代码。
输出的过程文件和最终bin,在以下路径内:
out\hispark_taurus\ipcamera_hispark_taurus
因为本人还没有开发板,无法烧录、抓取log分析以及做相关的操作去验证。
1. 第一阶段:U-Boot启动
System startup
Uncompress Ok!
U-Boot 2016.11 (......) hi3516dv300
............
............(省略)
Hit anykeytostop autoboot: 0
MMC read: dev #0, block # 2048,count16384 ... 16384 blocksread: OK
## Starting application at0x80000000...
到此为止属于U-Boot的启动。
Uboot不属于鸿蒙系统,这里不做进一步分析,代码在目录
device\hisilicon\third_party\uboot\u-boot-2020.01
2. 第二阶段:汇编代码引导LiteOS-a内核
Uboot引导liteos-a内核启动起来,需要有一个入口,在:
kernel\liteos_a\tools\build\liteos.ld
打开这个文件,可见:
ENTRY(
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。