详细沟通: 请加jiazhiwen0921微信号
目前开发过的allwinner平台:
V5/V3/V3S/V40/T3/T7/A64等
开发过的mipi sensor:
sony:imx317、imx477、imx274、imx258、imx286、imx307、imx385等
ov:ov2718、ov12895、ov2710等
ar: ar0238等
国产:gc1024、gc1034、jxf23等
参数:
分辨率帧率: 4K30fps、1080p30fps/60fps、720p30fps/60fps/120fps
lane数: 4lane、2lane、1lane
控制接口: I2C、SPI
1.概述
(1)全志平台视频输入驱动框架有两套,VFE和VIN, 前者是针对一些老的平台低分辨率和帧率的驱动框架,VIN是后面重构优化过的针对一些主流编码产品的,两者底层硬件也不太一样。
(2)大概还是基于V4L2那一套来的,只是一些硬件状态信息、buffer管理、中断管理、ISP等等有些不一样。
(3)由于VFE框架相对而言比较简单,也比较老,所以这里主要按照VIN框架进行讲解分析
2.软硬件认识
硬件和软件通路:
Sensor模组+csic接口+VIN+V4L2+应用
Sensor模组接口:mipi、hispi、lvds、dvp、bt1120/bt656
Isp: 区分带isp的模组和不带isp的模组
图像数据走向:
目前多采用不带isp的模组,直接出RAW图,用芯片这段的ISP处理数据格式等;
因而ISP用不用是*可控的,一般抓RAW是为了测试通路
3.主控硬件接口介绍
这是V5的CSI控制器的硬件图
接口部分:
V5目前支持四个接口,两个combo口(串行,可连mipi /hispi /lvds),两个NCSI(并行,可连dvp/bt1120/bt656)
ISP:
目前只有ISP0和ISP1有实际的作用,ISP2和ISP3只是路由功能没有实际作用
VIPP:
(1)实际对应我们的video节点的数量,理论上支持八个,实际一般用四个,因为ISP2
和ISP3并没有实际作用;若NCSI0/1直接直接输入YUV数据是可以直接出八路video
(2)由于VIPP多路的硬件实现,可以实现一路sensor源输出多路视频,ISP可*
选择,分辨率的*裁减
链路连接:
由于硬件的复杂性和灵活性,如上图,实体线能够连接到达的实体硬件,在软件上都可以实现*配置
4.模组端接口介绍
这一部分内容在上一章已经讲过了
https://blog.csdn.net/jzwjzw19900922/article/details/102520863
5.VIN框架结构
6.如何换一个camera模组
通过模组子板找到模组的型号和接口,再通过以下目录查看SDK中是否有对应模组的驱动
linux4.4/drivers/media/platform/sunxi-vin/modules/sensor
6.1. 有驱动
6.1.1.修改sysconfig
V5目前选取的mipi接口camera模组,一般需要修改的就只有sensor name和I2C地址,这两个参数直接在驱动中查找,若无I2C地址可以查找对应的datasheet。
三路电压值IOVDD、AVDD、DVDD,一般是不需要修改的,但是最好核对确认一遍,一般I2C不通就是这里的问题。
RESET和PWDN管脚核对,一般是不变的,有些客户板可能会修改(双目全景就是修改过的)
6.1.2.menuconfig配置驱动
在lichee/linux-4.4/目录下输入 make ARCH=arm menuconfig
按照如下步骤选择:
6.1.3.修改启动脚本
6.2. 无驱动
6.2.1移植驱动
目前sensor驱动都是有一个整体框架的,大同小异,如果只是点亮camera暂时不考虑曝光增益之类的话,可以参考imx317_mipi.c驱动,修改关键内容即可
(1)修改原厂的初始化寄存器配置
对应 sensor_default_regs,有些sensor可能不需要
(2)添加不同分辨率下的寄存器配置
同时修改sensor_win_sizes
(3)核对上电时序、reset、pwdn管脚,I2C地址
6.2.2. 其它与mipi接口修改一致