文档详情

嵌入式系统开发 ——基于分布式系统OpenHarmony 课件 04-HDF驱动程序框架; 05-OpenHarmony的系统构成;06用户程序框架.pptx

发布:2025-04-18约3.7千字共222页下载文档
文本预览下载声明

基于OpenHarmony的嵌入式开发

第四章HDF驱动程序框架;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;安全边距;[4.6.3]HDF开发示例3-Camera驱动框架

(1)Camera模块的运行机制:包含服务、设备的初始化,数据通路的搭建,流的配置、创建、下发、捕获等功能。

①系统启动时创建camera_host进程:进程创建后,首先枚举底层设备,创建(也可以通过配置表创建)管理设备树的DeviceManager类及其内部各个底层设备的对象,创建对应的CameraHost类实例并且将其注册到UHDF服务中,方便相机服务层通过UHDF服务获取底层CameraDeviceHost的服务,从而操作硬件设备。

②获取CameraHost实例:Service通过CameraDeviceHost服务获取CameraHost实例,CameraHost具备获取底层的Camera能力,包括打开手电筒、调用Open接口打开Camera并创建连接、创建DeviceManager(负责底层硬件模块上电)和创建CameraDevice(向上提供设备控制接口)等。;[4.6.3]HDF开发示例3-Camera驱动框架

(1)Camera模块的运行机制:包含服务、设备的初始化,数据通路的搭建,流的配置、创建、下发、捕获等功能。

③配置流和创建流。Service通过CameraDevice模块配置流、创建Stream类。其中,StreamPipelineStrategy模块通过上层下发的模式和查询配置表创建对应流的Node连接方式,StreamPipelineBuilder模块创建Node实例并且连接返回该Pipeline给StreamPipelineDispatcher。StreamPipelineDispatcher则提供统一的Pipeline调用管理。

④操作流。Service通过Stream控制整???流的操作。AttachBufferQueue接口将从显示模块申请的BufferQueue下发到底层,由CameraDeviceDriverModel自行管理buffer,当Capture接口下发命令后,底层开始向上传递buffer。Pipeline的IspNode依次从BufferQueue获取指定数量buffer,然后下发给底层ISP硬件,ISP填充完之后将buffer传递给CameraDeviceDriverModel,再通过循环线程将buffer填充到已经创建好的Pipeline中,各个Node处理后通过回调传递给上层,同时buffer返回BufferQueue等待下一次下发。

;[4.6.3]HDF开发示例3-Camera驱动框架

(1)Camera模块的运行机制:包含服务、设备的初始化,数据通路的搭建,流的配置、创建、下发、捕获等功能。

⑤下发拍照命令:Service通过Capture接口下发拍照命令。ChangeToOfflineStream接口查询拍照buffer位置,如果ISP已经出图,并且图像数据已经送到IPPnode,可以将普通拍照流转换为离线流,否则直接走关闭流程。ChangeToOfflineStream接口通过传递StreamInfo使离线流获取到普通流的流信息,并且通过配置表确认离线流的具体Node连接方式,创建离线流的Node连接(如果已创建则通过CloseCamera释放非离线流所需的Node),等待buffer从底层Pipeline回传到上层再释放持有的Pipeline相关资源。

⑥下发CaptureSetting参数。Service可以通过CameraDevice的UpdateSettings接口向下发送CaptureSetting参数(图像质量、旋转角度等)。CameraDeviceDriverModel通过StreamPipelineDispatcher模块,向各个Node转发,StartStreamingCapture和Ca

显示全部
相似文档