该驱动框架模型内部分为三层,依次为HDI实现层、框架层和设备适配层:
Camera模块主要包含服务、设备的初始化,数据通路的搭建,流的配置、创建、下发、捕获等。
基于HDF驱动框架的Camera驱动模型。
目前,Camera驱动框架主要提供了两种适配方式:V4L2和MPP。
如果其他芯片平台想适配OH的Camera驱动框架,如果是V4L2实现可参考Rockchip的适配方式,如果是私有实现(比如ioctl方式)则需要自己重新添加新的适配层。
下面是展锐SL8541E平台在OH下的Camera适配框图,更详细,参考Rockchip方案适配的,都是基于V4L2,所以很类似:
Camera 驱动框架所在源码目录为:drivers/peripheral/camera
由上可以看出,Camera 驱动框架最核心的3部分:
pipeline控制管理各个硬件模块,首先要获取对应设备的manager,通过manager获取其对应的controller,controller和对应的驱动进行交互
V4L2的适配
这里我们主要看下基于V4L2的适配,以rk3568为例,主要涉及到如下几块:
platform公共代码
platform为平台性公共代码,如linux标准v4l2适配接口定义,为v4l2框架适配的通用node.以及为v4l2框架适配的通用device_manager等
目录结构如下:
device_manager 目录存放着向北与pipeline向南与v4l2 adapter交互的代码。
driver_adapter 目录中存放着v4l2协议相关代码。可通过它们实现与v4l2底层驱动交互。
Pipeline_core 目录与 drivers/peripheral/camera/hal/pipeline_core中代码组合为pipeline框架。v4l2_source_node 和 uvc_node为v4l2框架适配的通用node。
chipset为具体某芯片平台相关代码。
目录结构如下:
device_manager目录下存放了rk3568适配过的sensor的相关配置文件,适配的camera sensor 读取设备能力的代码及相关配置文件,其中 project_hardware.h 比较关键,存放了device_manager支持当前chipset的设备列表
pipeline_core路径下存放了由chipset开发者为满足特点需求增加的pipeline node等。
hcs配置文件
vendor/hihope/rk3568/hdf_config/uhdf/device_info.hcs
vendor/hihope/rk3568/hdf_config/uhdf/camera
因config配置文件里面内容比较多,这里就举例了,具体可自行看源码
以上的内容只是简单介绍了OpenHarmony南向的Camera框架,没有具体到代码分析,移植等细节。
要想成为一名鸿蒙高级开发,以上知识点是必须要掌握的,除此之外,还需要掌握一些鸿蒙应用开发相关的一些技术,需要我们共同去探索。
为了节省大家一些查找的时间,这边联合几位行业大佬,为大家准备了一份《鸿蒙南北双向开发》的学习导图,从入门到进阶再到南向开发实战的一整套完整体系,想要学习了解更多鸿蒙开发的相关知识可以借鉴:《鸿蒙开发学习指南》
除了上面整理的思维导图以外,这里还特别整理的一份《鸿蒙 (Harmony OS)开发学习手册》给大家进行参考学习:
一、入门必看
1. 应用开发导读(ArkTS)
2. ……
二、HarmonyOS 概念
1. 系统定义
2. 技术架构
3. 技术特性
4. 系统安全
5........
三、如何快速入门?
1. 基本概念
2. 构建第一个ArkTS应用
3. 构建第一个JS应用
4. ……
四、开发基础知识
1. 应用基础知识
2. 配置文件
3. 应用数据管理
4. 应用安全管理
5. 应用隐私保护
6. 三方应用调用管控机制
7. 资源分类与访问
8. 学习ArkTS语言
9. ……
五、基于ArkTS 开发
1. Ability开发
2. UI开发
3. 公共事件与通知
4. 窗口管理
5. 媒体
6. 安全
7. 网络与链接
8. 电话服务
9. 数据管理
10. 后台任务(Background Task)管理
11. 设备管理
12. 设备使用信息统计
13. DFX
14. 国际化开发
15. 折叠屏系列
16. ……
更多了解更多鸿蒙开发的相关知识可以参考:《鸿蒙开发学习指南》