在高通平台的Camera Driver设计中,描述了KMD(Kernel Mode Driver,内核模式驱动)框架的三个主要组成部分:CRM、Camera Sync和子设备。以下是对这些组件的作用和功能的解释:
CRM(Camera Resource Manager)的作用:
-
顶层管理:CRM作为框架的顶层管理者,负责创建和管理V4L2主设备,这是用户空间与内核空间交互的核心。
-
设备节点暴露:CRM创建了一个V4L2主设备,并暴露了设备节点
video0
给用户空间,这样用户空间的应用程序就可以通过这个节点与相机驱动进行通信。 -
业务逻辑维护:CRM内部维护着整个底层驱动的业务逻辑,这可能包括相机硬件的初始化、配置、状态管理、错误处理以及与Camera Sync和子设备的协调等。
Camera Sync的作用:
-
状态同步:Camera Sync创建了一个V4L2主设备,用于向用户空间反馈图像数据的处理状态。这可能包括缓冲区的填充状态、捕获进度、错误状态等。
-
设备节点暴露:Camera Sync同样暴露了设备节点
video1
给用户空间,这个节点专门用于状态同步和反馈,而不直接参与图像数据的捕获。
子设备模块的作用:
-
精细化控制:子设备模块被抽象成
v4l2_subdev
设备,允许用户空间进行更精细化的控制。这可能包括对特定硬件功能模块(如自动曝光、自动对焦、白平衡等)的控制。 -
设备节点暴露:子设备模块同样暴露了一个设备节点
v4l2-subdev
给用户空间,通过这个节点,用户空间可以发送特定的控制命令到子设备。
通过media controller机制枚举底层硬件设备:
-
硬件枚举:在整个框架初始化的过程中,media controller机制允许用户空间进行底层硬件设备的枚举。这使得用户空间能够发现和识别系统中的相机硬件。
-
拓扑管理:media controller还负责维护和管理硬件设备的拓扑结构,包括了解不同设备之间的连接关系,以及如何通过这些连接传输数据。
-
用户空间访问:通过media controller,用户空