前言

本文是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版本。

新增产品指导:

下文中定义开发板部分

https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/porting/standard-system-porting-guide.md

烧录打包

基于原厂提供的镜像烧录能力,打包OpenHarmony的镜像。

RK芯片打包OpenHarmony镜像案例:
https://laval.csdn.net/64be5b3bbc2c435cdd54ab75.html


展锐芯片打包OpenHarmony镜像案例:
https://laval.csdn.net/64be5ad6bfca273ff3548ade.html

内核移植

选择好内核版本,使用OpenHarmony 5.10内核,还是芯片原厂内核。

集成内核,打上补丁,编译打包出镜像。

基于原厂内核的适配指导:

https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/porting/porting-linux-kernel.md

 

基于原厂内核需要的OpenHarmony补丁:

https://laval.csdn.net/64b5002155562f28498884a7.html

内核启动

修改BootLoader、DTS等,让OpenHarmony内核能正常启动。

内核BootLoader等修改说明:

https://laval.csdn.net/64c7944e9a15ac690d7c7027.html

Ramdisk启动

编译、打包Ramdisk,启动进入Ramdisk,加载OpenHarmony系统相关分区

RamDisk无法启动案例:

https://laval.csdn.net/6481d056ade290484cb2eda1.html

https://laval.csdn.net/64cd97b39ce0834324268aa1.html

System Init启动启动System Init,进入OpenHarmony系统

System Init适配说明:

https://laval.csdn.net/64c320c9813b05242dfd7dfa.html

HDC适配

适配HDC,方便调试

USB HDC适配案例:

https://laval.csdn.net/64b7a27a813b05242dfd72e9.html

HDC传输文件异常案例:

https://laval.csdn.net/6481d2610fa9cc227b4deb44.html

阶段二 点屏

应用正常启动

确保应用依赖的系统关键服务启动、应用可以安装,能够运行起来

应用启动适配指导:

https://laval.csdn.net/64bf8f0c9a15ac690d7c667c.html

 

Launcher无法启动不能显示桌面的案例:

https://laval.csdn.net/64b4ea9e9169c924d2755038.html
https://laval.csdn.net/6483eb2f55c3e102e65f8eba.html

https://laval.csdn.net/6481cb71cbbd6810f1b4ef12.html

https://laval.csdn.net/64b4baca52a1df134f558077.html

图形适配

完成图形驱动、屏幕驱动移植,完成图形基础HDI适配,调试点亮屏幕。

基础图形适配指导:

https://laval.csdn.net/64c7a6439a15ac690d7c7035.html

HDMI屏幕全屏适配:

https://laval.csdn.net/64b7a7c274de4411227aaa18.html

屏幕不亮问题案例:

https://laval.csdn.net/6492972dd385f5601380287e.html

阶段三 基础硬件适配输入

思路1:使用Linux内核驱动对接OpenHarmony系统

思路2:使用HDF驱动框架适配Input外设部分。

Linux内核驱动对接OpenHarmony系统的方法:
https://gitee.com/tanpengju/openharmonydevice#%E6%AD%A5%E9%AA%A47-%E8%A7%A6%E6%91%B8%E5%B1%8F%E7%9A%84%E9%80%82%E9%85%8D


使用HDF框架适配Input的方法:
https://laval.csdn.net/64b5356c813b05242dfd70c9.html

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适配方法:

https://laval.csdn.net/64c0f441813b05242dfd7b13.html

Audio

思路1:使用ALSA框架,对接OpenHarmony系统。OpenHarmony系统通过开源组件libalsa对接ALSA驱动。

思路2:适配OpenHarmony ADM音频驱动框架

Audio适配方案:

https://laval.csdn.net/64eef49d6ffa502025762163.html

编解码

使用OpenMax对接实现Codec HDI接口

基于OpenMax的Codec HDI适配指导:

https://laval.csdn.net/64c8b15874de4411227abcab.html

Bluetooth

在UHDF bluetooth host中预留有vendorlib,vendorlib可直接使用厂家的库,也可以在vendorlib中对接厂家的库。

蓝牙适配案例:

https://laval.csdn.net/64b656f6813b05242dfd7193.html

Modem

在ril adapter host中预留有vendorlib,在vendorlib中通过AT指令或者厂家接口对接厂家底层

内置Modem适配案例:

https://laval.csdn.net/64bfb154813b05242dfd7a3c.html

 

外接Modem模组适配案例:
https://laval.csdn.net/6492ec78d385f560138028c2.html

 

GNSS

在location host中预留有vendorlib,在vendorlib中对接厂家库。

GNSS适配说明:

https://laval.csdn.net/64eff1d82ea0282871eac446.html

NFC

HDF方式适配

NFC适配指导

https://laval.csdn.net/64b90001813b05242dfd73b9.html

GPU

使用开源或者闭源GPU驱动,提供OpenGL标准渲染指令库,对接到OpenHarmony图形系统。

开源GPU适配指导:

https://laval.csdn.net/64804567ade290484cb2ed06.html

Sensor

可以HDF适配

也可以自行实现HDI接口。

基于HDF Sensor驱动模型的案例指导:

https://laval.csdn.net/64ce21c9ecb00a6374e18d95.html

基于HDF模型的案例指导:

https://laval.csdn.net/64cdfc9fff5c3157f8ba9500.html

电源电池管理

基于HDF框架进行适配

电源电池适配:

https://laval.csdn.net/64c255febc2c435cdd54b087.html

USB

按HDF框架进行适配。需要注意usb驱动代码里面需要添加USB设备通知事件,不同硬件的USB驱动不一样,这部分没有做成通用能力,需要各产品适配。

USB及ACM适配指导:

https://laval.csdn.net/64b65098bfca273ff3548422.html

TF卡配置自动挂载路径

TF卡自动适配案例:

https://laval.csdn.net/64d9e422ecb00a6374e1a2b5.html

阶段五 商用能力补齐

功能-系统更新

按照OpenHarmony升级服务的框架进行适配,包括BootLoader适配、分区配置、配置表、组件cfg配置、组件编译等

升级开发指导:

https://laval.csdn.net/6492b8c48f99b051ab00c5f0.html

安全-Selinux开启Selinux功能后根据报错配置规则

OpenHarmony中Selinux使用详解:

https://laval.csdn.net/64ee90df4165333c3076badb.html

性能-工具工欲善其事必先利其器

性能分析工具使用指导:

https://laval.csdn.net/64c75ed9bfca273ff3549508.html

性能-硬件合成

为提高图形效率,提升界面操作的体验,需要硬件合成。主要是讲display HDI接口中的gfx部分,对接到芯片厂家提供的硬件合成接口。

OpenHarmony硬件合成方案解析:

https://laval.csdn.net/64efed5ca3cccc782cc583d0.html

性能-内存查杀内存管理部件,会监控内存PSI压力事件、zswpad回收压力事件,根据预定义的配置策略,进行进程回收。产品需要根据实际情况合理配置进程回收策略。

内存查杀配置说明:

https://laval.csdn.net/64b74f14bc2c435cdd54a4eb.html

性能-内存压缩

内存管理部件,会监控内存PSI压力事件、zswpad回收压力事件,根据预定义的配置策略,进行内存压缩。产品需要根据实际情况合理配置内存压缩策略。

内存压缩配置说明:

https://laval.csdn.net/64b75055813b05242dfd720c.html

性能-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

 

稳定性-专项

稳定性也是可以策划设计的,不仅是出问题后去解决问题,也有特性保障,还要有工具支持,详见《稳定性专项运作知识地图》。

专项链接:

https://laval.csdn.net/64a2a8c7dc9c0736dde43269.html

阶段六 XTS认证认证准备&提交按照OpenHarmony兼容性平台申请测评,自验证有很多要注意的事项。

标准系统认证准备和提交注意事项:

https://laval.csdn.net/64f0627d993dd34278ee021e.html

设备证明模块集成从3.2版本开始认证需要厂商集成到产品的部件,用于支撑产品的兼容性测试。需要南向适配。另外要注意在网站上注册的信息要和开发板中的信息一致,比设备类型、制造商等字段信息。

设备证明集成指导:

https://gitee.com/openharmony/xts_device_attest/

设备证明模块修改设备类型导致应用不能安装案例:

https://laval.csdn.net/64ba503074de4411227aabbf.html

认证问题解决和澄清

 

包括acts、acts-validator、hats、dcts、ssts等测试。跑用例,分析解决问题,大部分问题还是跟底层适配有关,部分可以根据产品能力进行澄清。

acts-validator应用性能测试指导:

https://laval.csdn.net/64b8eb6bbc2c435cdd54a67c.html

acts-Validator帧率问题案例:
https://laval.csdn.net/64b5ef0cbc2c435cdd54a411.html

acts-Validator启动任务管理器测试无结果案例:
https://laval.csdn.net/64b5eed0bfca273ff35483c6.html

acts-Validator冷启动性能案例:
https://laval.csdn.net/64b0b63415f7d66b198d33a7.html

hats案例:

https://laval.csdn.net/6497e373d385f560138029dc.html

dcts案例:

https://laval.csdn.net/6497dcbc187b2e3b840b45a5.html

acts案例:

https://laval.csdn.net/64ee96456ffa50202576145b.html

https://laval.csdn.net/64925781d385f56013802849.html

移植案例

芯片移植案例

SL8541e移植案例

https://laval.csdn.net/64abde430f02295fdae417dc.html

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
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐