全志A31下CMOSCamera移植修改记录表

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

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

摄像头型号      I2C地址 AVDD DVDD IODD Reset PWDN    
三星S5k4ec        0x5a 2.8V 1.5V 2.8V    
MT9P001              2.8V 1.8V 2.8V 2.8V 2.8V
OV5640              0x78 2.8V 1.5V 2.8V 2.8V 2.8V
OV2710 3.3V 1.5V 1.8V 1.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。比如:

vip_dev0_mname           = "ov2710"
vip_dev0_twi_id          = 0
vip_dev0_twi_addr        = 0x6c
vip_dev0_isp_used        = 1
vip_dev0_fmt             = 1
vip_dev0_stby_mode       = 0
vip_dev0_vflip           = 0
vip_dev0_hflip           = 1
vip_dev0_iovdd           = "axp22_dldo3"
vip_dev0_iovdd_vol       = 2800000
vip_dev0_avdd            = "axp22_ldoio0"
vip_dev0_avdd_vol        = 2800000
vip_dev0_dvdd            = "axp22_eldo1"
vip_dev0_dvdd_vol        = 1800000
vip_dev0_afvdd           = ""
vip_dev0_afvdd_vol       = 2800000

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

[camera_list_para]
camera_list_para_used   = 1
ov7670                  = 0
gc0308                  = 0
gt2005                  = 0
hi704                   = 0
sp0838                  = 0
mt9p001                 = 0
mt9m113                 = 0
gc2035                  = 0
ov2655                  = 0
hi253                   = 0
gc0307                  = 0
mt9d112                 = 0
ov5640                  = 0
ov5647                  = 0
gc2015                  = 0
ov2643                  = 0
gc0329                  = 0
gc0309                  = 0
tvp5150                 = 0
s5k4ec                  = 0
ov5650_mv9335           = 0
siv121d                 = 0
ov2710                  = 1

2、

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

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

__camera_list_t camera_list[MAX_CAMERA_LIST_ITEM] = {
    CAMERA_LIST_ITEM_INIT(ov7670,        1, 1, 0x42, 1, 0, 0, 1, 1, 0),
    CAMERA_LIST_ITEM_INIT(gc2035,        1, 1, 0x78, 1, 0, 0, 1, 1, 0),
    CAMERA_LIST_ITEM_INIT(gc0308,        1, 1, 0x42, 1, 0, 0, 1, 1, 0),
    CAMERA_LIST_ITEM_INIT(gt2005,        2, 1, 0x78, 0, 1, 0, 1, 1, 0),
    CAMERA_LIST_ITEM_INIT(hi704,         1, 1, 0x60, 1, 0, 0, 1, 1, 0),
    CAMERA_LIST_ITEM_INIT(sp0838,        1, 1, 0x30, 1, 0, 0, 1, 1, 0),
    CAMERA_LIST_ITEM_INIT(mt9m112,       1, 2, 0xba, 1, 0, 0, 1, 1, 0),
    CAMERA_LIST_ITEM_INIT(mt9m113,       2, 2, 0x78, 1, 0, 0, 1, 1, 0),
    CAMERA_LIST_ITEM_INIT(ov2655,        2, 1, 0x60, 1, 0, 0, 1, 1, 0),
    CAMERA_LIST_ITEM_INIT(hi253,         1, 1, 0x40, 1, 0, 0, 1, 1, 0),
    CAMERA_LIST_ITEM_INIT(gc0307,        1, 1, 0x42, 1, 0, 0, 1, 1, 0),
.........
};

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

#add mt9p001/ov2710 camera
	insmod /system/vendor/modules/mt9p001.ko
	insmod /system/vendor/modules/ov5640.ko
	insmod /system/vendor/modules/ov2710.ko
	insmod /system/vendor/modules/s5k4ec.ko
	insmod /system/vendor/modules/vfe_v4l2.ko

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

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

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

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

时间: 2024-08-25 05:04:00

全志A31下CMOSCamera移植修改记录表的相关文章

Linux3.6.7在OK6410下的移植

这是在本学期期末整项目时习得的,不知道以后会不会有用. 一个天天整js+css+html的,突然弄Linux C,学到的确实不少. 遗憾的是,虽然努力了,导师还是觉得我进度慢把这部分砍掉了,唉. 前言 对于我这个新手而言,第一次学习linux,面对庞大的代码,复杂的程序结构和自身对linux知识的严重缺乏,一下子还真不知道该做什么.想想开发板厂家提供的演示程序,其过程是这样:先运行bootloader,bootloade引导linux内核启动,启动后再运行UI程序.对应的程序也有三个分别为u-b

linux下的mysql修改默认编码

基础练习 矩阵乘法 时间限制:1.0s   内存限制:512.0MB 问题描述 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22 输入格式 第一行是一个正整数N.M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数 接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值 输出格式 输出共N行,每行N个整数,表示A的M次幂所对应的矩阵.相邻的数之间用一个空格隔开 样例输入 2 2 1 2 3

CentOS6.5下通过Shell修改MySQL初始密码,开启远程登录,授权远程登录用户

CentOS6.5下通过Shell修改MySQL初始密码,开启远程登录,授权远程登录用户: 最近在写一个自动化部署的Shell脚本,需要通过Shell修改MySQL初始密码,开启远程登录,授权远程登录用户, 经过一番查找和实验,得到以下几个命令,给大家分享一下: 修改初始密码:mysqladmin -uroot -pvyCE2UwSaqx3xofR password "123456" 开启远程登录,授权远程登录用户:mysql -uroot -proot -e "grant

浅析RAC下SPFILE文件修改之整理三篇文章

关于RAC下spfile浅析_整理于_2014.4.17 第一篇:RAC下SPFILE文件修改 在RAC下spfile位置的修改与单节点环境不完全一致,有些地方需要特别注意,否则可能修改会失败. 下面用一个例子说明:SPFILE放在ASM中一个不正确的目录(+ARCH)中,现在想把它放在另外一个目录(+DBSYS)下. 以下是具体步骤: 1. 原spfile位置 SQL> show parameter spfile NAME TYPE VALUE ------------------------

ListView在编辑状态下不能获取修改后的值,无法更新数据

ListView在编辑状态下不能获取修改后的值,获取到的总是以前的值解决方法:在page_load事件里写: if(!IsPostBack) { ListViewBind(); } 原因:这涉及到aspx页各事件的执行顺序,因为如果没有判断IsPostBack,每次点更新时page_load都会去执行ListViewBind(),对ListView进行重新绑定,那你再去获取ListView里的值时当然就是以前的值了,这样写后ListView没有被重新绑定,里面的数据就还是以前的,所以就可以获取到

WinXP下如何巧妙修改硬盘分区容量

在使用Windows的时候经常因为分区分的理想感觉非常烦恼,想将数据有条理的放置起来就是因为分区不合适最后东西放的乱七八糟,结果过段时间就找不到想要的文件了,其实系统盘C盘要是不动的话,其他磁盘分区都可以在XP系统啊解决.下面就介绍一下方法. 强调: 1.不能调整系统盘. 2.被调整盘上的数据会全部丢失(可先移至不重分的盘).操作步骤: 1.关闭所有应用程序,打开“控制面板”,打开“管理工具”,打开“计算机管理”. 2.在左边栏中选择“存储”,再选择“磁盘管理”,在右边就会显示你计算机的磁盘分区

discuz论坛移植修改数据库配置

从其他地方拷贝的discuz源码,可能需要修改数据库配置 分别打开discuz目录下面以下三个文件 discuzRoot/uc_server/data/config.inc.phpdiscuzRoot/config/config_ucenter.phpdiscuzRoot/config/config_global.php 将前面几行的DBHOST,DBUSER,DBPASS 也就是数据库主机名,数据库用户名和数据库密码改成正确的即可. discuz论坛移植修改数据库配置

CentOS7环境下SSH端口修改笔记

CentOS7环境下SSH端口修改笔记 说明: CentOS7服务器环境,默认SSH端口为22,考虑到安全方面问题,欲修改端口为62231(机器内网IP为192.168.1.31) ssh配置文件和iptables中端口开放配置调整时,原先的先不要移除,显式的同时打开22和62231端口,待配置完成确认62231端口访问正常后再逐个移除22端口的配置,防止配置过程中出现差错导致服务器访问不了. 一.SELinux配置修改 1.先检查SELinux状态,如果已关闭则无需相关修改 [[email p

Android Eclipse下工程移植到Android Studio详细步骤

重新申请了一台电脑之后,最近开始试着使用Android studio对项目进行开发,安装好studio之后首先要做的就是之前Eclipse上面项目的移植问题,今天尝试了几个不同的项目,顺便参考了不同的网上资料,资料比较多,就想着自己整理一份以备不时之需,开始具体的步骤: 1.Eclipse上要一直项目的输出,选中项目右键 --> Export --> Android --> Generate Gradle build files,接下来Next,选中要移植的项目Finish,项目中如果出