OpenHarmony瘦设备内核移植实战(二) 原创 精华
一、背景
OpenHarmony系统移植最核心的步骤是内核的移植,内核的稳定是一切子系统稳定的基础,上一篇我们一起认识了板卡、SoC、芯片架构,并在OpenHarmony源码中找到了对应层面的开发路径,本文将开始介绍实操部分。
二、内核启动流程梳理
确保移植前开发板的官方SDK是可以跑起来的,原有SDK通常为FreeRTOS或者其他系统,固件的编译有对应编译流程,以及系统启动流程。我们要做的工作就是梳理原有系统启动流程,包括:如何将固件代码拷贝到内存,栈针从哪里开始引导系统启动,系统启动前需要做哪些软硬件的初始工作,然后让OH通过这套流程跑起来。
系统启动流程及原理图:
MCU启动工作原理图:
1.BootLoader将系统程序从Flash加载到运行内存中。
2.通过汇编指令完成系统启动前的软硬件初始化准备工作。
3.初始化系统并启动系统。
4.系统启动完成。
5.完成系统框架层的启动,使各个子系统处于可用状态。
三、配置vendor
配置vendor,创建如下目录结构
BUILD.gn代码如下:
config.json代码如下:
配置完成后保存,我们可以使用hb set命令尝试编译。
可以看到在选项中会出现 alientek -> explorer 构建选项。
直接使用hb build -f编译后看看结果,得到错误提示:需要创建device相关的文件。
根据报错提示,可得知应该是缺少device相关配置,接下来继续创建device相关配置文件。
四、配置device/board
board配置板卡编译相关的工具链,以及最为核心的启动汇编命令、链接库脚本,它将指定main函数来启动系统。
根据配置规范,我们在device下创建对应的文件夹,开发板是正点原子(alientek)的探索者(explorer),因此我们根据OH规范创建目录结构,如下:
BUILD.gn 代码如下:
在/device/board/alientek/explorer/目录下创建BUILD.gn文件,以及liteos_m目录。
BUILD.gn代码与之前一样。
创建开发板配置文件,最终得到如下目录结构。
配置文件代码如下:
device/board/alientek/explorer/explorer_stm32f407_defconfig配置:
device/board/alientek/explorer/Kconfig.liteos_m.board配置:
device/board/alientek/explorer/Kconfig.liteos_m.defconfig.board配置:
device/board/alientek/Kconfig.liteos_m.boards配置:
device/board/alientek/Kconfig.liteos_m.defconfig.boards配置:
device/board/alientek/Kconfig.liteos_m.shields配置:
终于等到第二篇了
学习移植样例
瘦设备指的是什么
有完整源码吗
终于到实操部分了