我是靠谱客的博主 单身短靴,最近开发中收集的这篇文章主要介绍全志A31下5M的CMOSCamera移植修改记录表,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近一段时间都在用A31评估几颗5M的摄像头,包括ov5640、MT9P001、ov2710。A31下移植不同的摄像头驱动的好处在于,驱动结构规范化,采用video_device下的suddev的架构方式来处理sensor。A31下的移植主要关注几个配置文件+对硬件驱动的初始化配置即可。调试的目的是先跑起来后优化。

以下面的COMS为列,我们需要主要摄像头的以下几个电压值:
典型5M摄像头的芯片电压配置

摄像头型号 I2C地址AVDDDVDDIODDResetPWDN
三星S5k4ec 0x5a2.8V1.5V2.8V  
MT9P0012.8V1.8V2.8V2.8V2.8V
OV5640 0x782.8V1.5V2.8V2.8V2.8V
OV27103.3V1.5V1.8V1.5V


对于配置文件需要关注sys_config.fex与init.sun6i.rc文件。以及对应的驱动文件。

1. 对于sys_config.fex,从硬件上要关注的是摄像头的输出、core电压。

输出数据fmt指的是Raw Bayer data还是YUV data.这个决定了配置sys_config.fex是使用A31的ISP还是Sensor自带了ISP。比如:

view source print ?
01. vip_dev0_mname           = "ov2710"
02. vip_dev0_twi_id          = 0
03. vip_dev0_twi_addr        = 0x6c
04. vip_dev0_isp_used        = 1
05. vip_dev0_fmt             = 1
06. vip_dev0_stby_mode       = 0
07. vip_dev0_vflip           = 0
08. vip_dev0_hflip           = 1
09. vip_dev0_iovdd           = "axp22_dldo3"
10. vip_dev0_iovdd_vol       = 2800000
11. vip_dev0_avdd            = "axp22_ldoio0"
12. vip_dev0_avdd_vol        = 2800000
13. vip_dev0_dvdd            = "axp22_eldo1"
14. vip_dev0_dvdd_vol        = 1800000
15. vip_dev0_afvdd           = ""
16. vip_dev0_afvdd_vol       = 2800000

还有一个是camera_list_para,主要用于驱动加载时的自检测使用,说明当前对应的摄像头是要被自检测的:

view source print ?
01. [camera_list_para]
02. camera_list_para_used   = 1
03. ov7670                  = 0
04. gc0308                  = 0
05. gt2005                  = 0
06. hi704                   = 0
07. sp0838                  = 0
08. mt9p001                 = 0
09. mt9m113                 = 0
10. gc2035                  = 0
11. ov2655                  = 0
12. hi253                   = 0
13. gc0307                  = 0
14. mt9d112                 = 0
15. ov5640                  = 0
16. ov5647                  = 0
17. gc2015                  = 0
18. ov2643                  = 0
19. gc0329                  = 0
20. gc0309                  = 0
21. tvp5150                 = 0
22. s5k4ec                  = 0
23. ov5650_mv9335           = 0
24. siv121d                 = 0
25. ov2710                  = 1

2、

完成了基础的配置文件后(主要给A31的VFE使用),剩余驱动文件

这里包括sensor的驱动和cam_detect的驱动(添加对应的detect源码,更新camera_list)

view source print ?
01. __camera_list_t camera_list[MAX_CAMERA_LIST_ITEM] = {
02. CAMERA_LIST_ITEM_INIT(ov7670,        110x42100110),
03. CAMERA_LIST_ITEM_INIT(gc2035,        110x78100110),
04. CAMERA_LIST_ITEM_INIT(gc0308,        110x42100110),
05. CAMERA_LIST_ITEM_INIT(gt2005,        210x78010110),
06. CAMERA_LIST_ITEM_INIT(hi704,         110x60100110),
07. CAMERA_LIST_ITEM_INIT(sp0838,        110x30100110),
08. CAMERA_LIST_ITEM_INIT(mt9m112,       120xba100110),
09. CAMERA_LIST_ITEM_INIT(mt9m113,       220x78100110),
10. CAMERA_LIST_ITEM_INIT(ov2655,        210x60100110),
11. CAMERA_LIST_ITEM_INIT(hi253,         110x40100110),
12. CAMERA_LIST_ITEM_INIT(gc0307,        110x42100110),
13. .........
14. };

3.修改init.sun6i.rc,添加insmod 加载ko驱动文件:

view source print ?
1. #add mt9p001/ov2710 camera
2. insmod /system/vendor/modules/mt9p001.ko
3. insmod /system/vendor/modules/ov5640.ko
4. insmod /system/vendor/modules/ov2710.ko
5. insmod /system/vendor/modules/s5k4ec.ko
6. insmod /system/vendor/modules/vfe_v4l2.ko


4.考虑摄像头是内置VCM还是外控VCM

一般sensor有ISP的话,支持3A就一般会是集成了内置vcm.直接由sensor来控制vcm.

而外控是指的处理器经过3A后,负责都sensor的VCM进行控制,而这些sensor不带ISP。

基本上对sensor的移植就是对以上内容的修改、配置、编码就是这些内容。

最后

以上就是单身短靴为你收集整理的全志A31下5M的CMOSCamera移植修改记录表的全部内容,希望文章能够帮你解决全志A31下5M的CMOSCamera移植修改记录表所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部