0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenHarmony瘦设备内核移植实战

OpenHarmony技术社区 来源:OpenHarmony技术社区 2023-05-08 10:50 次阅读

OpenHarmony 系统移植最核心的步骤是内核的移植,内核的稳定是一切子系统稳定的基础,本文将介绍内核移植实操部分。

内核启动流程梳理

确保移植前开发板的官方 SDK 是可以跑起来的,原有 SDK 通常为 FreeRTOS 或者其他系统,固件的编译有对应编译流程,以及系统启动流程。

我们要做的工作就是梳理原有系统启动流程,包括:如何将固件代码拷贝到内存,栈针从哪里开始引导系统启动,系统启动前需要做哪些软硬件的初始工作,然后让 OH 通过这套流程跑起来。

系统启动流程及原理图:

b0dba7a2-ed42-11ed-90ce-dac502259ad0.png

MCU 启动工作原理图:

b0f627da-ed42-11ed-90ce-dac502259ad0.png

①BootLoader 将系统程序从 Flash 加载到运行内存中。

②通过汇编指令完成系统启动前的软硬件初始化准备工作。

③初始化系统并启动系统。

④系统启动完成。

⑤完成系统框架层的启动,使各个子系统处于可用状态。

配置 vendor

配置 vendor,创建如下目录结构:

b10a6dee-ed42-11ed-90ce-dac502259ad0.png

BUILD.gn 代码如下:
group("explorer"){
}
config.json 代码如下:
"product_name":"explorer",
"type":"mini",
"version":"3.0",
"device_company":"alientek",
"board":"explorer",
"kernel_type":"liteos_m",
"kernel_version":"3.0.0",
"subsystems":[
{//增加liteos_m内核
"subsystem":"kernel",
"components":[
{
"component":"liteos_m",
"features":[]
}
]
},
//这里可以继续添加XTS子系统、DFX子系统,以及其他特性子系统
],
"third_party_dir":"",
"product_adapter_dir":""
}
配置完成后保存,我们可以使用 hb set 命令尝试编译。b11cd86c-ed42-11ed-90ce-dac502259ad0.png可以看到在选项中会出现 alientek -> explorer 构建选项。

直接使用 hb build -f 编译后看看结果,得到错误提示:需要创建 device 相关的文件。

b12feb14-ed42-11ed-90ce-dac502259ad0.png

根据报错提示,可得知应该是缺少 device 相关配置,接下来继续创建 device 相关配置文件。

配置 device/board

board 配置板卡编译相关的工具链,以及最为核心的启动汇编命令、链接库脚本,它将指定 main 函数来启动系统。

根据配置规范,我们在 device 下创建对应的文件夹,开发板是正点原子(alientek)的探索者(explorer),因此我们根据 OH 规范创建目录结构,如下:

b143f50a-ed42-11ed-90ce-dac502259ad0.png

BUILD.gn 代码如下:

if(ohos_kernel_type=="liteos_m"){
import("//kernel/liteos_m/liteos.gni")
module_name=get_path_info(rebase_path("."),"name")
module_group(module_name){
modules=[
"explorer",
]
在 /device/board/alientek/explorer/ 目录下创建 BUILD.gn 文件,以及 liteos_m 目录。BUILD.gn 代码与之前一样。

创建开发板配置文件,最终得到如下目录结构。

b156360c-ed42-11ed-90ce-dac502259ad0.png配置文件代码如下:

device/board/alientek/explorer/explorer_stm32f407_defconfig 配置:

LOSCFG_BOARD_EXPLORER_STM32F407=y
LOSCFG_SOC_SERIES_STM32F407=y
LOSCFG_SOC_STM32F407=y

device/board/alientek/explorer/Kconfig.liteos_m.board 配置:

configBOARD_EXPLORER_STM32F407
bool"selectboardexplorerstm32f407"
dependsonSOC_STM32F407

device/board/alientek/explorer/Kconfig.liteos_m.defconfig.board 配置:

ifBOARD_EXPLORER_STM32F407
configBOARD
string
default"explorer_stm32f407"
endif#BOARD_EXPLORER_STM32F407

device/board/alientek/Kconfig.liteos_m.boards 配置:

ifSOC_STM32F407
orsource"explorer/Kconfig.liteos_m.board"
endif

device/board/alientek/Kconfig.liteos_m.defconfig.boards 配置:

orsource"*/Kconfig.liteos_m.defconfig.board"

device/board/alientek/Kconfig.liteos_m.shields 配置:

//可以不用填内容


审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1372

    浏览量

    40276
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1035

    浏览量

    45900
  • OpenHarmony
    +关注

    关注

    25

    文章

    3713

    浏览量

    16254

原文标题:OpenHarmony瘦设备内核移植实战

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    linux 内核移植问题 make menuconfig

    linux内核移植问题make menuconfig
    发表于 08-25 13:25

    linux内核移植

    linux内核移植教程
    发表于 10-15 21:24

    OpenHarmony设备内核移植实战(一)

    一、背景 在各行各业存在很多不同的智能设备,每个设备都使用芯片去实现不同的业务场景需求。本文将以常用的STM32F407ZG芯片为例,介绍OpenHarmony
    发表于 04-24 16:04

    OpenHarmony设备内核移植实战(二)

    一、背景 OpenHarmony系统移植最核心的步骤是内核移植内核的稳定是一切子系统稳定的基础,上一篇我们一起认识了板卡、SoC、芯片架
    发表于 05-10 16:03

    HHARM9200移植2.6内核移植文档

    HHARM9200移植2.6内核移植文档
    发表于 03-01 16:04 37次下载
    HHARM9200<b class='flag-5'>移植</b>2.6<b class='flag-5'>内核移植</b>文档

    ARM开发板上uClinux内核移植

    ARM开发板上uClinux内核移植 简述:针对“如何在以S3C44B0X为核心的ARMSYS开发板上建立uClinux内核移植”的一个总结,其内容包括对Bootloader的功能分析和uClinux2.4.24发行版内
    发表于 02-02 11:07 731次阅读

    嵌入式Linux内核移植详解(顶嵌)

    嵌入式内核移植步骤详解 含配置含义及内容等方面
    发表于 11-20 16:00 19次下载

    基于DSP的嵌入式Linux内核移植的研究与实现_王晓东

    基于DSP的嵌入式Linux内核移植的研究与实现_王晓东
    发表于 03-19 11:45 1次下载

    Linux内核移植相关代码解析

    本文通过整理之前研发的一个项目(ARM7TDMI +uCLinux),分析内核启动过程及需要修改的文件,以供内核移植者参考。整理过程中也同时参考了众多网友的帖子,在此谢过。由于整理过程匆忙,难免错误
    发表于 11-07 11:29 0次下载

    腾讯物联网系统TOS内核移植起来比你想象的要简单

    腾讯物联网系统TOS,内核移植起来比你想象的要简单
    的头像 发表于 02-05 12:51 2462次阅读

    如何实现Linux内核移植和yaffs2根文件系统制作

    本文档的主要内容详细介绍的是如何实现Linux内核移植和yaffs2根文件系统制作。
    发表于 03-24 09:12 9次下载

    Armlinux内核移植及系统初始化过程分析

    Armlinux内核移植及系统初始化过程分析说明。
    发表于 04-06 15:53 11次下载

    RT-Thread文档_内核移植

    RT-Thread文档_内核移植
    发表于 02-22 18:31 3次下载
    RT-Thread文档_<b class='flag-5'>内核移植</b>

    OpenHarmony设备内核移植实战(一)

    背景 在各行各业存在很多不同的智能设备,每个设备都使用芯片去实现不同的业务场景需求。本文将以常用的STM32F407ZG芯片为例,介绍OpenHarmony
    的头像 发表于 05-11 20:16 1050次阅读
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>瘦</b><b class='flag-5'>设备</b><b class='flag-5'>内核移植</b><b class='flag-5'>实战</b>(一)

    鸿蒙设备移植:SoC适配

    OpenHarmony 系统移植最核心的步骤是内核移植内核的稳定是一切子系统稳定的基础,上一篇我们讲述了
    的头像 发表于 05-22 10:49 1431次阅读
    鸿蒙<b class='flag-5'>瘦</b><b class='flag-5'>设备</b><b class='flag-5'>移植</b>:SoC适配