mini6410移植cmos和usb camera到android中

 


友善在新的版本上闭源了多媒体相关的驱动,而我花了好多钱从友善那里买的camera不能浪费啊,所以就只好自己porting了。好久不写东西了,而且在libreoffice里排好版贴上来就乱了,凑合着看吧。


系统版本:
Kernel:2.36
Android:2.3.1
一:CMOScamera
  1
Kernel部分
     
这部分主要基于2.28版本的代码(这个版本的代码是开源的)。要做些修改使编译通过,没有太大的改动。

主要是下面几个部分:

s3c_fimc_core.c

//staticconst struct file_operations s3c_fimc_fops

staticconst struct v4l2_file_operations s3c_fimc_fops = {

s3c_fimc3x_regs.c

s3c_fimc_set_input_address

if(frame->planes == 1)

end_y= start_y + (width * height * 2);

后面的函数自己找吧,不写文件了。

s3c_fimc_v4l2_querybuf())

b->memory= V4L2_MEMORY_MMAP;//this is set to zero in v4l2-ioctl.c

if(b->memory != V4L2_MEMORY_MMAP)

return-EINVAL;


ov9650驱动那部分要添加probe函数。去掉以前的I2C设备注册的函数。

staticint ov965x_probe(struct i2c_client *client,const struct i2c_device_id*did)

{

s3c_fimc_register_camera(&ov965x_data);

ov965x_data.client= client;

i2c_set_clientdata(client,&ov965x_data);

printk("=========ov965x_probe\n");

}

return0;



}


2Android  libcamera部分:

主要基于google原来的Fake camera的代码和Nexus的代码修改。其实就是基于V4l2的程序,网上其他这种代码也很多(比如mjpeg-stream)。

其中要注意的是尺寸要设对。2.28代码里ov9650驱动中只用640X480部分的代码是正确的,其他尺寸的要自己对照datasheet修改。再者就是格式,目前是设成RBGYUV格式surfacefinger那边不认,而且还要改下surfacefinger那边的代码,强制设成RGB。不过我看友善最新的代码是设成YUV的,应该还有其他的办法。


二:USBcamera

这个要简单些。如果是买的友善的摄像头,这个摄像头UVC驱动是支持的,直接插上就能用。不过要注意,如果开机之前插的话,usbcamera的设备节点是dev/video0,cmos camera dev/video1。开机后查usb cameravideo2cmos cameravideo0.另外还要注意设备节点的权限, 默认权限不够。还有就是在previewthread中的delay去掉,这个是fake camra用的,不去掉的话usb camera会挂掉。反正是用poll,并不需要delay


代码过段时间整理一下会放到github上。

欢迎来信讨论6410相关问题  hnmsky#gmail。com  #换掉。


代码放到github上了

https://github.com/hnmsky/mini6410_android2.3_porting



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值