OpenHarmony标准系统芯片适配指南
前言 本文是OpenHarmony标准芯片的适配指南,希望能帮助大家更清晰认识到OpenHarmony芯片的适配过程。本文描述的过程范围,从头从零开始——芯片没有在OpenHarmony适配过,到满足商用质量和通过兼容性测试——功能稳定性性能安全等各方面都达到商用质量,并且能通过OpenHarmony兼容性认证,描述这个过程中的
前言
本文是OpenHarmony标准芯片的适配指南,希望能帮助大家更清晰认识到OpenHarmony芯片的适配过程。本文描述的过程范围,从头从零开始——芯片没有在OpenHarmony适配过,到满足商用质量和通过兼容性测试——功能稳定性性能安全等各方面都达到商用质量,并且能通过OpenHarmony兼容性认证,描述这个过程中的主要步骤、适配思路,提供指导和案例。不同产品的硬件能力不一样,需要适配的功能模块也不一样,可以根据需要裁剪。
适配全局观
先上一个全局的图,让大家对OpenHarmony标准芯片适配有个整体的认识。
适配过程介绍
再给大家介绍整个适配过程。整个适配过程可以分为六大阶段。
下面介绍各个阶段的划分和主要内容。
阶段一 系统启动
本阶段主要目标是将OpenHarmony系统在这个新芯片上启动起来,能从后台看进入了OpenHarmony系统。完成这一步后,就有了可供各开发者并行开发的基础版本。其他硬件模块的适配,第二、三、四阶段的硬件适配,如图形、WiFi、GPU等,都可以开始并行工作了。
为了完成这一步,从最初的代码工程搭建、烧录打包、内核移植、内核启动等一系列工作,直到System Init启动;为了方便更多开发者调试,特意加了HDC适配。
阶段二 点屏
本阶段主要目标是点亮屏幕,提供一个肉眼可见的OpenHarmony系统版本,为后续开发更见便捷。
在阶段一的基础上,点亮屏幕依赖两个方面:一是应用要正常启动,二是图形要适配。
应用的正常启动:没有专门要适配的,主要依赖上一阶段内核移植修改要全面,如果没有启动就依次检查各个点,一般是相关功能依赖的没有开启。比如Accesstoken如果没有移植,会导致SoftBus、Foundation等启动不了。
图形适配:主要是图形驱动移植和Display HDI适配。
适配完成之后,修改系统采用CPU点亮屏幕。
阶段三 基础硬件适配
这一步只包括输入和WiFi,为什么单独划分出来呢?
因为完成这一步,除了会更加便捷,还是简单开发板的XTS认证最小集。这两个模块,适配工作量很小,不需要等很长时间。
有了输入,界面可以操作,应用可以输入,更加方便;除了其他硬件能力设备调测更方便,也可以开发调试应用了。
有了WiFi,就有了分布式。
阶段四 增强硬件适配
到这一步,就是大批量的各种硬件能力适配了,有的设备需要的硬件能力多,有的设备需要的硬件能力少,按情况取舍下。
阶段五 商用能力补齐
完成上一步,就具备了基础开发板的各种能力,但我们目标是商用,还得补齐各种商用能力。有功能方面的,有安全的,也有DFX的,如下图。
阶段六 XTS认证
XTS认证不一定非得在最后阶段才开始,在前面第三阶段后的任意时间,就可以进行测试和认证;前面认证通过后,后续增加了功能,需要再次刷新XTS认证。
从3.2 Release版本开始,XTS认证,除了验证测试用例和解决问题,也有了模块开发——需要集成设备证明模块。
适配指导
涉及案例指导较多,在持续更新中...
适配阶段 | 适配事项 | 思路 | 指导&案例 |
阶段一 系统启动
|
工程搭建 |
确定好芯片名称、产品名称、供应商名称,选择适当的OpenHarmony代码分支,基于该代码分支新增一个产品,可以编译构建出产品镜像。 建议选择最新的Release版本。 |
新增产品指导: 下文中定义开发板部分 |
烧录打包 |
基于原厂提供的镜像烧录能力,打包OpenHarmony的镜像。 |
RK芯片打包OpenHarmony镜像案例:
| |
内核移植 |
选择好内核版本,使用OpenHarmony 5.10内核,还是芯片原厂内核。 集成内核,打上补丁,编译打包出镜像。 |
基于原厂内核的适配指导: https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/porting/porting-linux-kernel.md
基于原厂内核需要的OpenHarmony补丁: | |
内核启动 | 修改BootLoader、DTS等,让OpenHarmony内核能正常启动。 |
内核BootLoader等修改说明: | |
Ramdisk启动 | 编译、打包Ramdisk,启动进入Ramdisk,加载OpenHarmony系统相关分区 |
RamDisk无法启动案例: | |
System Init启动 | 启动System Init,进入OpenHarmony系统 |
System Init适配说明: | |
HDC适配 | 适配HDC,方便调试 |
USB HDC适配案例: https://laval.csdn.net/64b7a27a813b05242dfd72e9.html HDC传输文件异常案例: | |
阶段二 点屏 |
应用正常启动 | 确保应用依赖的系统关键服务启动、应用可以安装,能够运行起来 |
应用启动适配指导: https://laval.csdn.net/64bf8f0c9a15ac690d7c667c.html
Launcher无法启动不能显示桌面的案例: https://laval.csdn.net/64b4ea9e9169c924d2755038.html |
图形适配 | 完成图形驱动、屏幕驱动移植,完成图形基础HDI适配,调试点亮屏幕。 |
基础图形适配指导: https://laval.csdn.net/64c7a6439a15ac690d7c7035.html HDMI屏幕全屏适配: https://laval.csdn.net/64b7a7c274de4411227aaa18.html 屏幕不亮问题案例: | |
阶段三 基础硬件适配 | 输入 |
思路1:使用Linux内核驱动对接OpenHarmony系统 思路2:使用HDF驱动框架适配Input外设部分。 |
Linux内核驱动对接OpenHarmony系统的方法:
|
WiFi | 使用WPA对接WiFi驱动 |
WiFi适配指导: https://laval.csdn.net/64be7c94bfca273ff3548afd.html
WiFi适配案例: https://laval.csdn.net/64be78adbfca273ff3548afa.html
| |
阶段四 增强硬件适配 |
Camera |
UHDF Camera Host已做好驱动模型的分层,在最下层是平台适配层PlatForm Adpter,能够对接不同的Camera驱动模型。 已支持的模型:MPP、V4L2,对接起来稍微简单,只有对接UHDF中的PlatForm Adpter层。 不支持的模型,需要写UHDF的PlatForm Adpter。 |
Camera适配方法: https://laval.csdn.net/64f0908e4cd6367bad13147a.html USB Camera适配方法: |
Audio |
思路1:使用ALSA框架,对接OpenHarmony系统。OpenHarmony系统通过开源组件libalsa对接ALSA驱动。 思路2:适配OpenHarmony ADM音频驱动框架 |
Audio适配方案: | |
编解码 | 使用OpenMax对接实现Codec HDI接口 |
基于OpenMax的Codec HDI适配指导: | |
Bluetooth | 在UHDF bluetooth host中预留有vendorlib,vendorlib可直接使用厂家的库,也可以在vendorlib中对接厂家的库。 |
蓝牙适配案例: | |
Modem | 在ril adapter host中预留有vendorlib,在vendorlib中通过AT指令或者厂家接口对接厂家底层 |
内置Modem适配案例: https://laval.csdn.net/64bfb154813b05242dfd7a3c.html
外接Modem模组适配案例:
| |
GNSS | 在location host中预留有vendorlib,在vendorlib中对接厂家库。 |
GNSS适配说明: | |
NFC | HDF方式适配 |
NFC适配指导 | |
GPU | 使用开源或者闭源GPU驱动,提供OpenGL标准渲染指令库,对接到OpenHarmony图形系统。 |
开源GPU适配指导: | |
Sensor |
可以HDF适配 也可以自行实现HDI接口。 |
基于HDF Sensor驱动模型的案例指导: https://laval.csdn.net/64ce21c9ecb00a6374e18d95.html 基于HDF模型的案例指导: | |
电源电池管理 | 基于HDF框架进行适配 |
电源电池适配: | |
USB | 按HDF框架进行适配。需要注意usb驱动代码里面需要添加USB设备通知事件,不同硬件的USB驱动不一样,这部分没有做成通用能力,需要各产品适配。 |
USB及ACM适配指导: | |
TF卡 | 配置自动挂载路径 |
TF卡自动适配案例: | |
阶段五 商用能力补齐 |
功能-系统更新 | 按照OpenHarmony升级服务的框架进行适配,包括BootLoader适配、分区配置、配置表、组件cfg配置、组件编译等 |
升级开发指导: |
安全-Selinux | 开启Selinux功能后根据报错配置规则 |
OpenHarmony中Selinux使用详解: | |
性能-工具 | 工欲善其事必先利其器 |
性能分析工具使用指导: | |
性能-硬件合成 | 为提高图形效率,提升界面操作的体验,需要硬件合成。主要是讲display HDI接口中的gfx部分,对接到芯片厂家提供的硬件合成接口。 |
OpenHarmony硬件合成方案解析: | |
性能-内存查杀 | 内存管理部件,会监控内存PSI压力事件、zswpad回收压力事件,根据预定义的配置策略,进行进程回收。产品需要根据实际情况合理配置进程回收策略。 |
内存查杀配置说明: | |
性能-内存压缩 | 内存管理部件,会监控内存PSI压力事件、zswpad回收压力事件,根据预定义的配置策略,进行内存压缩。产品需要根据实际情况合理配置内存压缩策略。 |
内存压缩配置说明: | |
性能-KPI优化 | 根据业务关键场景定义场景KPI,持续进行优化。基础体验部分主要在图形渲染合成效率、内存等方面的适配和优化。 |
系统优化案例: https://laval.csdn.net/64b5feab9a15ac690d7c5d69.html 应用优化案例: https://laval.csdn.net/64b78516bc2c435cdd54a5c0.html 性能KPI测试方法: https://laval.csdn.net/64c1cdea813b05242dfd7cc0.html 性能工具使用指导: https://laval.csdn.net/64c75ed9bfca273ff3549508.html
| |
稳定性-专项 | 稳定性也是可以策划设计的,不仅是出问题后去解决问题,也有特性保障,还要有工具支持,详见《稳定性专项运作知识地图》。 |
专项链接: | |
阶段六 XTS认证 | 认证准备&提交 | 按照OpenHarmony兼容性平台申请测评,自验证有很多要注意的事项。 |
标准系统认证准备和提交注意事项: |
设备证明模块集成 | 从3.2版本开始认证需要厂商集成到产品的部件,用于支撑产品的兼容性测试。需要南向适配。另外要注意在网站上注册的信息要和开发板中的信息一致,比设备类型、制造商等字段信息。 |
设备证明集成指导: https://gitee.com/openharmony/xts_device_attest/ 设备证明模块修改设备类型导致应用不能安装案例: | |
认证问题解决和澄清
| 包括acts、acts-validator、hats、dcts、ssts等测试。跑用例,分析解决问题,大部分问题还是跟底层适配有关,部分可以根据产品能力进行澄清。 |
acts-validator应用性能测试指导: https://laval.csdn.net/64b8eb6bbc2c435cdd54a67c.html acts-Validator帧率问题案例: acts-Validator启动任务管理器测试无结果案例: acts-Validator冷启动性能案例: hats案例: https://laval.csdn.net/6497e373d385f560138029dc.html dcts案例: https://laval.csdn.net/6497dcbc187b2e3b840b45a5.html acts案例: | |
移植案例 |
芯片移植案例 |
SL8541e移植案例 | |
RK3568移植案例 | https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/porting/porting-dayu200-on_standard-demo.md | ||
RK3566移植案例 | https://gitee.com/openharmony/vendor_kaihong/blob/master/khdvk_3566b/porting-khdvk_3566b-on_standard-demo.md | ||
RK3399移植案例 | https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/porting/porting-yangfan-on_standard-demo.md | ||
树莓派&小米6移植案例 | https://ost.51cto.com/column/105 |
更多推荐
所有评论(0)