荣品四核S5P4418开发板之摄像头OV5645调试

2025-10-02 18:25:41

1、1、camera驱动文件是ov5645.c

a)  camera驱动是I2C驱动,必须要实现id_table,名字与驱动名字相同。

荣品四核S5P4418开发板之摄像头OV5645调试

2、b) 开启camera时,camera应用调用到HAL层,打开camera设备文件,调用到v4l2层,最终调用ov5645_init函数,对camera复位,向写入寄存器特定的值,使camera能够正常工作。

荣品四核S5P4418开发板之摄像头OV5645调试

3、c  camera在开启时和拍照后调用ov5645_s_stream函数重新设置,图像格式,

图像的格式、分辨率由写入的寄存器的值决定。

荣品四核S5P4418开发板之摄像头OV5645调试

1、2、camera参数部分在device.c

   a)  camera驱动是I2C驱动,除了要实现id_table,还要将camera设备注册到I2C总线上,所以要有实现i2c_board_info。名字与驱动名字相同,地址就是camera的I2C地址,地址必须要正确才能获得来自camera的数据。

荣品四核S5P4418开发板之摄像头OV5645调试

2、 b)  camera的时序、引脚、频率设置、供电控制都在device.c,都保存在capture_plat_data[]

荣品四核S5P4418开发板之摄像头OV5645调试

1、3、HAL层文件NXCameraHWInterface2.cpp、OV5645.cpp

   a)  camera应用打开时,调用到framework层,然后到HAL层最终调用到NXCameraHWInterface2.cpp中的camera_device_open函数,camera的设备结点是在这个函数打开的。

   b)  HAL层相关代码目录

                   hardware\samsung_slsi\slsiap\camera

                   hardware\samsung_slsi\slsiap\v4l2

device\nexell\s5p6818_drone\camera

      framework层相关源码目录

                   frameworks\av\camera

   c)  NXCameraHWInterface2.cpp中的camera_device_open函数。

     if (false==hal ->init()) {         NXCameraHWInterface2.cpp 调用

     android_nxp_v412_init();        Android-NXP-V412.CPP调用

     int ret = v412_init(&s);           Nxp-v412.cpp调用

     int ret = _priv ->init(scheme));   调用

     MediaFD = open("/dev/media0",O_RDWR);

     if (MediaFD <0) {

         ALOGE("can't open media device");

         return MediaFD;

      }

最终打开设备结点

    d) OV5645.cpp支持的图像像素大小

      const int32_t ResolutionOV5645[] = {

           2592,1944,

           1280,960,

            //1600,1200,

       };

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢