一、前言
这几天手里有个任务,组里买了个相机模组,soc是HI3519DV500,配的是IMX585的sensor,但是HI3519DV500的SDK中支持的sensor list没有IMX585,需要进行适配工作。查遍了全网能找到的博客,也咨询了一些博主,进行记录。(海思的坑是真的多,组里也没人搞,所以一个人四处踩坑;衷心感谢每一个帮助过我的博主!欢迎大家在评论区讨论或者私信交流)
声明:工作进行到最后遇到了问题没有调出来,但是适配sensor的流程应该没问题,仅供参考和交流,主要是自我记录和交流解决问题
总体思路:
1.先对SDK中已有的sensor驱动进行修改,此处遵循的原则是非必要不修改,哪怕是名字,因为sensor适配涉及的文件非常多,修改越多越容易犯错,大佬忽略这条
2.对SDK中的sensor驱动的模板修改完毕之后,进行编译产生so文件,然后放到板端运行,在此过程中也需要对板端的配置文件进行修改。
3.使用PQtool来建议适配是否成功
第二篇已经更新:
详细记录海思相机适配新的sensor(IMX585)(二)——Hi3519DV500
二、搭建环境
要做完整个适配工作,需要搭建很多环境,此处先搭建修改sensor的ubuntu环境,采用虚拟机Ubuntu16.04+VScode的形式。
2.1 传送SDK到ubuntu中
首先将官方给的SDK包从PC端传入到虚拟机ubuntu中:
其中带REF的是补丁包,按照readme的说明来把SDK展开和补丁打上。
然后打开SDK包,大概是这些文件夹:
2.2 安装交叉编译链
另外还需要官方给的安装交叉编译链,不然后面可能有问题,千万记得此处安装完之后需要将环境变量生效,不然后面make会提示没有找到命令。
2.3 ssh连接
在ubuntu中使用”ifconfg“查看ubuntu的IP,然后用VScode进行ssh连接,此处这样用是因为虚拟机太卡,不方便使用。
左边显示文件夹,右边上面显示程序,下面显示终端面板。下面就是修改sensor驱动了
三、修改sensor驱动程序
3.1 找到驱动程序所放的目录
在Hi3519DV500_SDK_V1.0.1.0/smp/a55_linux/source/mpp/cbb/isp/user/sensor/hi3519dv500中
如图所示,支持的sensor驱动都放在各个文件夹中
我们要做的是在imx515的基础上改为imx585的驱动,最好的是直接将sony_imx515文件夹再复制一份,命名为sony_imx585,然后对sony_imx585进行修改。在此我直接对sony_imx515进行修改。在程序中的515非必要不做修改,只修改寄存器数值和一些参数(来自小白的小心翼翼),前提是515和585相差不大。
3.2 程序目录结构
首先查看目录结构,一个驱动文件夹下有五个文件
3.3 修改程序
修改驱动程序这里参考了许多网上的博客,但是大部分博客都比较省略,这也是我头疼的地方,大部分说的是只改了寄存器配置,其他没有改动太多。但是其他部分具体改动了什么,我无从得知。我做的尝试:这部分的修改程序遵循一个原则:通用的部分不动,只动不同sensor可能不同的地方。下面以程序中一些地方举例。
3.3.1 对imx515_cmos_ex.h
对于imx515_cmos_ex.h程序,大部分函数有ISP关键词,应该和isp有关,目标是先出图,出图效果不佳再调isp,所以对imx515_cmos_ex.h没修改
3.3.2 对imx515_cmos.c
ID暂时不变,然后看585的sensor手册宽度和高度也是这个,所以这里不动
寄存器地址根据手册进行修改,这里的GAIN的寄存器是我问博主得到的,店铺给的资料里没有
然后下面的一些函数涉及到ae、awb之类的,先出图,所以这些和isp相关的先不管。
3.3.3 对imx515_coms.h
可能要改的是I2C地址:
这个根据手册看管脚电平
问了客服 都是低电平,那就保持不变
3.3.4 对imx515_sensor_ctl.c
查看手册和sensor寄存器表格,发现起始地址不需要修改
对于镜像和上下反转函数需要修改(原):
因为看手册585只支持一种翻转,改后:
下面就是重点要改的地方(原):
这部分内容需要找索尼要寄存器序列表,然后根据序列表来替换其中的地址和数值。序列表有很多个,代表不同的运行模式,选择其中一个设置:
修改完毕
到这基本改完了。下面就是生成so文件,然后测试,放在下一篇文章里。
这里的修改不一定全面,主要是突出适配的整个流程,欢迎大家为我指错和提建议,多多交流。
你的关注和点赞收藏是我更新的动力!