HarmonyOS设备开发:内核架构移植规范指南

移植芯片架构

芯片架构的移植是内核移植的基础,在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,--whole-archive",
        "-lmodule_xxx",
        "-Wl,--no-whole-archive",
      ]
      deps = [
        "//build/lite:ohos",          # 依赖OpenHarmony静态库编译完成,链接OpenHarmony编译出来的静态库
        ":sdk",                       # 依赖厂商源码静态库编译完成,链接厂商源码生成的静态库
      ]
    }
     
    copy("prebuilt") {                # 准备镜像生成工具等,一般把镜像生成工具拷贝到out目录
      sources = [ ]                   # 复制的源文件
      outputs = [ ]        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值