【移植】轻量级系统内核移植

移植芯片架构

芯片架构的移植是内核移植的基础,在 OpenHarmony 中芯片架构移植是可选过程,如果当前 OpenHarmony 已经支持对应芯片架构则不需要移植操作,在“liteos_m/arch”目录下可看到当前已经支持的架构,如表 1:
表 1 OpenHarmony 已支持的架构

系列 型号
arm arm9
cortex-m3
cortex-m4
cortex-m7
cortex-m33
csky v2
risc-v nuclei
riscv32
xtensa lx6

如果当前 OpenHarmony 尚未支持对应芯片架构,则需要芯片厂商自行适配,arch/include 目录包含了通用的芯片架构适配所需要实现的函数。部分芯片架构代码由汇编实现,而汇编代码会因编译器的不同而不同,因此在具体的芯片架构下,还包含使用不同编译器(iar、keil、gcc 等)编译的架构代码。

kernel/liteos_m/arch          # 不同版本路径有差异
├── arm                       # arm系列
│   ├── arm9
│   ├── cortex-m3
│   ├── cortex-m33
│   │   ├── gcc               # 使用gcc编译器编译的架构代码
│   │   └── iar               # 使用iar编译器编译的架构代码
│   ├── cortex-m4
│   ├── cortex-m7
├── csky                      # csky系列
├── include                   # 包含通用的芯片架构所需要实现的函数
│   ├── los_arch.h            # 定义芯片架构初始化所需要的函数
│   ├── los_atomic.h          # 定义芯片架构所需要实现的原子操作函数
│   ├── los_context.h         # 定义芯片架构所需要实现的任务上下文相关函数
│   ├── los_interrupt.h       # 定义芯片架构所需要实现的中断和异常相关的函数
│   └── los_timer.h           # 定义芯片架构所需要实现的系统时钟相关的函数
├── risc-v                    # risc-v系列
│   ├── nuclei
│   └── riscv32
└── xtensa                    # xtensa系列
     └── lx6

移植芯片厂商 SDK

编译框架搭建完成后,需要将芯片厂商的 SDK 加入 OpenHarmony 编译框架,从而可以编译出带 SDK 的烧录文件(此时编译出的是不带系统的裸机工程),以便 OpenHarmony 可以调用 SDK 中的接口。通过以下步骤将厂商 SDK 加入 OpenHarmony 编译框架中:

  1. 将芯片厂商 sdk 置于 device 目录下合适的位置,SDK 的编译脚本/镜像打包脚本整合进编译框架中。
    参考编译脚本:“device/MyDeviceCompany/MyBoard/BUILD.gn”
import("//build/lite/config/component/lite_component.gni")
    executable("OHOS_Image.elf") {    # 生成可执行程序
      libs = [
        "xxx/xxx/libxxx.a",           # 链接厂商闭源静态库方法一
      ]
      asmflags = [                    # 汇编编译参数
        "",
      ]
      ldflags = [
        "-T./xxx/xxx/xxx.ld",         # 链接脚本文件
        "-Lxxx/xxx/",                 # 指定厂商静态库路径
        "-lxxx",                      # 链接厂商闭源静态库方法二
        "-Wl,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值