越南做企业网站/什么软件可以免费发广告
camera kernel驱动是基于Linux的v4l2驱动,设备名/dev/videox。camera系统采用Client/Service构架,通过Binder IPC来通信,最终Client通过调用Service接口实现各个具体功能。Service进程负责和kernel驱动交互,并将数据给到其它模块,比如显示系统。
- Java层:
应用:com.android.camera.Camera
框架:android.hardware.Camera
代码路径:packages/apps/Camera2
frameworks/base/core/java/android/hardware/camera2
- JNI API层:
接口库:libandroid_runtime
接口实现:frameworks/base/core/jni/android_hardware_Camera.cpp
- C框架层:
Camera 本地模块
代码路径:frameworks/av/camera
生成libcamera_client.so
此链接库按Binder框架实现,用来与service通讯。
Camera Service端
代码路径:frameworks/av/services/camera/libcameraservice
生成libcameraserivce.so
其中CameraService::Client类通过调用Camera HAL实现具体功能。
CameraService被注册在media模块的mediaserver中。
Camera HAL
HAL接口定义:
frameworks/av/services/camera/libcameraservice/device1/CameraHardwareInterface.h
RK3288 android系统实际使用中,camera sensor 寄存器是放在hardware/rockchip/camera/
中。 目录说明如下:
hardware:
rockchip/camera/
├── Android.mk
├── CameraHal Hal的实现
├── Config sensor参数设置
└── SiliconImage ISP库,包括所有支持模组的驱动源码
Kernel:
drivers/media/video:
|___ rk30_camera_oneframe.c VIP/CIF Driver,vip/cif 控制器单帧模式
|___ rk30_camera_pingpong.c
|___ generic_sensor.c generic_sensor.h rockchip Sensor 通用驱动
|___ ov2655.c ov5642.c ov2659.c ov5640.c OV 公司sensor 驱动
|___ mt9p111.c mt9d112.c mt9m112.c Micron(Aptina)公司 sensor 驱动
|___ s5k6aa.c s5k5ca.c Samsung 公司 sensor 驱动
|___ gc0307.c gc0308.c 格科微公司 sensor 驱动
|___ v4l2-xxxxx.c v4l2 设备驱动
|___ rk30_camera.c RK30 camera IO 以及设备注册相关代码
drivers/media/platform/soc_camera:
|___ soc_camera.c soc_camera.h soc_camera 设备驱动
drivers/media/v4l2-core:
|___ v4l2-xxxxx.c v4l2 设备驱动
arch/arm/mach-rockchip:
|___ rk_camera.c IO 操作代码
|___ rk_camera.h RK camera 共用定义头文件
|___ rk_camera_sensor_info.h RK camera 具体型号的宏定义文件
|___ include/mach/include/rk30_camera.h 各芯片平台 camera 模块头文件
arch/arm/boot/dts:
|___rk3288-cif-sensor.dtsi rk3288 板级配置 sensor 文件