1. 我需要具备哪些方面的知识?
KaihongOS南向适配的方向分为:驱动开发、内核开发。 根据适配方向划分,需要掌握的知识技能分别为:
驱动开发 - C++,GN,HCS,linux常用命令
内核开发 - c,cmake,dts, linux常用命令
以上,如能对某一模块的南向适配研究透彻,自行调通,积极解决问题。那么对一名kaihongOS的南向驱动开发工程师而言,他便是合格的,若具备模数电和单片机基础,尤佳。
2. KaiHongOS的南向适配工作是如何划分的?
KaiHongOS的南向适配开发工作分为<驱动子系统开发>和<内核子系统开发>。
其中,<驱动子系统开发>分’外设驱动(UHDF)‘和’平台驱动(KHDF)’。
简单划分如下图所示:
3. 如何开发UHDF(用户态驱动框架)?
KaiHongOS驱动架构为用户提供了多种标准外设驱动模型。这些模型屏蔽硬件差异,为上层服务提供稳定、标准的接口。您可以基于这些模型进行外设驱动的开发,不同类型的外设采用不同的模型,详细的使用方法可参考“外设驱动使用”章节。
详见章节 – 外设驱动开发)
4. 如何开发KHDF(内核态驱动框架)?
当您需要为新的平台设备适配KaiHongOS驱动时,可使用KaiHongOS平台驱动框架提供的标准模型和统一的适配接口,这样您只需要关注自身硬件的控制,而不必关注设备管理及公共业务流程。平台设备的驱动适配操作,可参考“平台驱动开发”章节。
平台驱动适配完成后,您可以使用KaiHongOS平台驱动框架为系统及外设驱动提供的统一访问接口进行进一步的服务和应用的开发,而不必关注具体硬件及OS平台的差异。平台驱动提供的访问接口的使用方法,可参考“平台驱动使用”章节。
详见章节 – 平台驱动开发)
5. 如何开发内核子系统?
- 首先区分待开发设备是“轻量设备”还是“标准设备”。
轻量设备:主控为微控制器MCU(Microcontroller Unit),百K级内存。
标准设备:主控为微处理器MPU(Microprocessor Unit)用处理器的设备,设备内存>128MiB。
- 掌握一定对应内核的编译构建基础知识(具体文档检索能力、Linux基础命令使用能力、ohos工具链基本使用)
- 持有待开发驱动的DTS、驱动代码、DataSheet资料(如开发RTC,需要RTC的规格书、硬件原理图、驱动代码、DTS等资料,一般考虑原生适配的操作系统)
- 掌握一定硬件基础知识与对应驱动基本调测方法(日志分析、物理现象分析、命令行反馈分析等)
详见章节 – 内核子系统)
6. KaiHongOS驱动子系统特性?
KaihongOS的驱动子系统采用多内核(Linux内核或者LiteOS)设计。其目的在于相同硬件兼容不同内核使用,降低移植适配和运维工程师的负担。为此,KaihongOS基于下述特性和能力做出改进和优化。
- 驱动框架弹性优化
在原有的驱动框架能力的基础上,KaiHongOS驱动子系统通过构建弹性化的框架能力,可支持在百K级别到百兆级容量的终端产品形态部署。如以Hi3863, Hi3873, RK3568, RK3588芯片平台为基础的,超过60款的适配产品,从L0到L2一应俱全。
- 驱动接口标准化
除常见驱动接口,为驱动开发者和使用者提供更加完善、丰富且稳定的接口,并和已开放的手机、平板、实验箱、PC,笔电等设备驱动接口保持API兼容性。
- 驱动模型优化
基于组件化的驱动模型,KaihongOS为开发者提供更精细化的驱动管理,在支持的组件化拆分驱动模块的基础上,实现了编译效率优化、南向适配解耦。使南向适配工程师可以将精力放在驱动与硬件的交互的同时,获得更加舒适的适配体验。
- 参数配置改进
在配置界面(HCS)与跨平台的配置转换和生成工具(hc_gen)的基础上,KaihongOS做了系统优化,将动态配置抽到上层代码作单独处理,丰富并完善了CAMERA、DISPLAY驱动框架,并在未来会进一步完善其他模块。