海思平台和Movidious平台新sensor bringup的对比,对于产品公司开发新sensor;芯片公司提供简单,可靠的多媒体开发平台应该都有帮助。
从海思文档找到的sensor bringup的步骤如下,调试思路都是一样的。
1. 准备材料
准备环节与平台无关。
1.1 确认主芯片规格
支持Master模式,支持的线性、WDR接口模式,支持输入频率上限。
1.2 Sensor datasheet
确认图像传输接口模式,输出频率。
确认曝光时间、增益如何设置,帧率如何修改。
确认在WDR 模式下的以上两项。
LVDS 接口,需要确认同步码。
1.3 Initialize Settings
获取Sensor Initialize Settings,一般至少要准备最大规格和标准分辨率两种序列。
2 采集图像
海思
2.1 sensor
sensor文件夹 mpp/component/isp/user/sensor/hi3519av100/sony_xxx/
sensor_sensor_ctl.c
- sensor寄存器的基地址sensor_i2c_addr,地址的比特位宽sensor_addr_byte,寄存器的比特位宽信息sensor_data_byte。
- sensor_init()实现初始化序列
- 配置分辨率
sensor_cmos.c
- 修改 cmos_set_image_mode函数,及cmos_get_isp_default中的u32MaxWidth,u32MaxHeight参数。使该senosr分辨率、帧率可以被正确设置。
- 配置曝光时间,增益,分辨率的寄存器,可以暂时把修改寄存器的地方暂时屏蔽。
生成sensor库,libsns_xxx.a
2.2 pipeline
pipeline文件夹 mpp/sample/vio/smp,可以使用sample_vio这个例子。
sample/Makefile.param中增加SENSOR_TYPE和SENSOR_LIB
sample_comm_vi.c
配置mipi->vi dev->vi pipe->vi channel,配置mipi时序和vi对新格式的支持
sample_comm_isp.c
配置isp, 添加新格式的支持
海思平台对mpp的内存管理有专门的处理单元。
Movidius
movidious与国内芯片平台的camera framework有一定的区别。
2.1 mvlibCamera
mvlcRegisterCameras(camSocketsList, &mvlcModulesDataBase, “Camera_”, MVLC_PROBE_ALL) camera注册需要两个输入camSocketsList和mvlcModulesDataBase,分别来自2.1.1和2.1.2。
2.1.1 CamSockets
camSocketsList 来自mvLibCamera里的camsockets,主要是硬件连接配置相关, gpio, mipiID, i2cID。
2.1.2 Modules
mvlcModulesDataBase 来自mvLibCamera里的modules,主要是driver相关。需要进行设备注册,mvlcRegisterCameras注册的时候调用了init(mvlcGenericCamCtlDevInit),注册过程中调用了powerup。
2.1.3 Sensor
添加NewSensor,configdb中是sensor的输出格式,包含初始化时序。mipi的时序配置也在这步骤完成。
2.2 pipeline
两种常见的pipeline,对pipeline的各个plugin进行配置。数据流方向是plgSrcMipi->plgIspCtrl->plgIsp->plgOutput, plgSrcMipi相当于mipi的应用层驱动,控制了数据流的输入。
内存管理是通过plgPoolSrc和plgPoolIsp。
3 ISP的基本功能
主要是配置AE,保证亮度基本正常。