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

软通动力HOS
发布于 2023-4-14 17:09
浏览
2收藏

一、背景

在各行各业存在很多不同的智能设备,每个设备都使用芯片去实现不同的业务场景需求。本文将以常用的STM32F407ZG芯片为例,介绍OpenHarmony瘦设备内核移植方法,希望能对热爱OpenHarmony的开发小伙伴有所帮助。

二、认识芯片架构、Soc、开发板

OpenHarmony瘦设备内核移植实战(一)-鸿蒙开发者社区
进行内核移植前我们首先要了解芯片架构、SoC、开发板之前的关系,这将有助于后续移植工作。

芯片架构是指芯片的内部器件构造以及对应的指令集,比如PC使用的英特尔i7或者AMD的R7-4800都是x86架构,手机使用的骁龙8Gen2芯片使用的则是ARM架构。

SoC是指具体的芯片架构实现,芯片厂商针对不同的应用场景开发出的芯片各不相同,但要符合架构定义,比如STM32F470就会有不同的定制版本,有些Flash会大一些,有些则是芯片封装或者引脚数不同。

开发板则是板卡厂商针对不同的产品定制的不同开发板,会根据业务需求设计不同的PCB、外设器件。

本文采用正点原子的STM32F407ZG开发板,对应的开发板、SoC、芯片架构分别是:

开发板型号:explorer(探索者)

板卡厂商:alientek(正点原子)

芯片型号:STM32F407ZGT6

芯片系列:STM32F407

芯片厂商:ST(意法半导体)

具体架构:Cortex-M4

芯片架构:ARM

三、内核移植的四个层面

OH适配分为如下四个层面

Vendor

负责配置的目标产品的内核类型、系统版本、子系统、三方库等。编译时,工具链依赖这里的配置。

Vendor的代码位于://vendor/

Board

开发板层面的移植,芯片已适配OH,只是开发板不同,难度不大。

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

Board相关的代码位于://device/board

SoC

SoC片上系统层面的移植,芯片架构已支持,有一定难度

配置芯片层级编译依赖库,包括CMSIS、HAL(硬件抽象层)等,这里包含操作总线、串口、时钟、寄存等库函数

SoC相关的代码位于://device/soc

ARCH

目标芯片架构不在支持的范围内的全新架构移植,难度较大

ARCH相关的代码存放在//kernel/liteos_m/arch文件夹中

整体难易度

Vendor < Board < SoC < ARCH

四、OpenHarmony瘦设备已支持的芯片架构

内核类型 芯片架构 架构名称
LiteOS_M ARM arm9、cortex-m3、cortex-m4、cortex-m7、cortex-m33、cortex-m55
LiteOS_M csky v2
LiteOS_M risc-v nuclei、riscv32
LiteOS_M xtensa lx6

源码路径为:
kernel/liteos_m/arch/arm
OpenHarmony瘦设备内核移植实战(一)-鸿蒙开发者社区

五、总结

OpenHarmony瘦设备的移植需要从芯片架构、SoC、开发板开始,因此本文首先讲述了三者之前的关系。瘦设备使用的内核为LiteOS-M,针对不同层面的移植工作的难易度、工作量也会有所不同,根据以往经验难易度排序为Vendor < Board < SoC < ARCH,下篇文章将继续介绍移植前的准备工作。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
2
收藏 2
回复
举报
回复
    相关推荐