1. 简介
本文在不改变原有系统基础框架的基础上, 介绍了一种OpenAtom OpenHarmony(以下简称“OpenHarmony”)轻量系统适配方案。
本方案使用的是 OpenHarmony v3.2 Release版本源码。
2. 方案设计
本文使用的硬件模块的主要特性及功能如下:
通常,适配OpenHarmony的方案是,将内核由RTOS改为LiteOS-M,并移植原生所有功能模块和镜像打包功能。采用该方案面临了诸多困难:
●编译系统更改Gn+Ninjia,重写和调试编译脚本,需要学习成本
●适配和测试全部的原生功能,原本测试通过的功能需要重新测试,付出重复的劳动
●适配新的OS接口,需要修改原生系统的OSI层接口,以对接LiteOS-M
该方案的改动较多,将导致开发人员无法将精力聚焦于项目的新功能、工作量大、难度大,无法满足项目的工期要求,项目风险大。
OpenHarmony的轻量系统编译过程是,首先将各模块编译链接为静态库,再将静态库链接为应用程序,最后打包为镜像文件。烧录入硬件后,系统运行单一进程,各个不同的任务以多个线程运行。
结合原生编译系统和 OpenHarmony的特点,最终采用的适配方案如下:
●不改变原生代码的编译系统和打包系统
●使用原生代码的交叉编译工具链编译OpenHarmony为静态库,将静态库集成到原生代码中
●OpenHarmony中不编译LiteOS-M内核,使用原生代码的RTOS内核
●原生代码中新增适配代码,以提供OpenHarmony需要的接口
整体的软件框架设计如下:
方案保留了原始系统框架的大部分功能,新增OpenHarmony的模块功能和其他项目需求功能,修改或升级部分原生功能(FreeRTOS、 MbedTLS等)
3. OpenHarmony编译
3.1 创建虚拟设备编译
创建新的vendor和新的device配置,目录如下:
●vendor/ohemu/L0_xts_demo
●device/qemu/L0_xts_demo
3.2 子系统配置
修改vendor/ohemu/L0_xts_demo/config.json,该文件包含了所有必须的子系统配置。
3.3 工具链配置
修改device/qemu/L0_xts_de