当前位置:   article > 正文

v851s fastboot 移植sensor 驱动

v851s

1、说明

        v851s  fastboot 快起 SDK 因为有小核 e907 的存在,使得启动速度加快,同时可以理解为小核e907 和 大核各自跑了 rtos  linux系统,小核rtos协助了 linux 的启动,做了准备。因此,在sensor 驱动移植方面,快起代码其实是有两份驱动要移植的,rtos里面的驱动,注重的是前期的sensor 初始化功能,linux启动之后注重其他设置曝光之类的sensor功能。我是这么理解的,说的也不官方,准不准确不晓得。

2、rtos部分驱动移植

        rtos sensor的目录在:lichee/rtos-hal$ cd hal/source/vin/modules/sensor

        目前没见过模组厂直接提供sensor驱动的,我的意思是针对快起的sensor驱动,可以自行移植,可参照其他sensor驱动,重要的是初始化参数,和sensor本身的差异,进行修改,然后将移植好的驱动放本目录下,之后就是修改Makefile Kconfig 和快起专属的其他修改点了。

2.1、驱动中较为重要的点

        首先就是 sensor 设备地址,sensor id 以及各种寄存器不要搞错了,查看 sensor 手册找一下,clk按照模组厂提供的初始化参数,或者你直接定一个clk,问模组厂要你需要的初始化参数,比如 raw bit啊,分辨率啊,fps啊,你有特定需要就问模组厂要参数,把参数弄进你的驱动。

然后就是初始化数组,这个参数是包含在模组厂提供给你的数据里面的,很长的一大串就是,挪过来驱动里面:

这个初始化数组是可以有多个的,比如这里上面的是1600 1200 30fps的,你也可以把你25 fps的,15fps的写出来多个数组。这个数组对应下面 switch_sensor_formats 里面的 switch_regs 参数,在你使用sensor 不同模式的时候,会加载这个初始化参数。

这个数组里面的参数也是一个比较重要的点,其中一些重要参数也是在模组厂商提供的参数中,有的厂家会直接提供给你hts  vts  pclk  mipi_bps ,有的不提供,看具体情况。但基本都提供了 width  height 还有fps。

如果没有提供 hts  vts,或者没有提供 pclk  mipi_bps,总之就是没有全给你,这时候, hts和vts可以在sensor 手册里面找找看,然后 pclk和 bps是可以算出来的:

pclk = hts * vts * fps

mipi_bps = pclk * raw_bit / lane_num

这个raw_bit  有raw8  raw10  raw12的,数据位数, lane_num 就是你摄像头的通道数,有1 lane和 2 lane的,这个模组厂给你的参数里也会有,没有的话你看看手册找找,一般sensor都支持很多raw bit了,看你问厂家要什么bit的参数了。

注意:有的厂家给你的pclk和bps和计算的不一样,你可以先用厂家给的参数,最后实在出图不了,然后其他修改也都没问题,那你可以自己计算,填进去试试,没必要一直纠结这个参数和你计算的参数不相等。

然后注意了,上面的 raw_bit  lane_num还有其他地方需要相应修改,比如这里的lane_num配置,这里是1,      2 lane的要改成2:

还有raw_bit 不一样的话,sensor的rgb格式宏要相应修改,下面这个是raw10的:

刚好说到这个 rgb 格式了,顺带提一嘴,这个格式也是要根据sensor改的,驱动里面有个地方配置这个 egb顺序,也用的这种宏,如果顺序不对,后面点亮sensor,颜色会错乱的,但这都是移植成功,出图的后续修改了,现在离移植成功还远。这种宏在驱动好多地方都有,注意统一raw bit的位数,不要有的地方改了10,有的地方还是12没改。

然后sensor 上电最重要的上电时序就不用说了,这个上电时序不对,那基本上是不行的,这个上电时序是第一步,也是最重要的一步,按照手册自己改一下:

然后这个rtos的 sensor 基本就差不多了。

注意,这个rtos 驱动最后有这个结构体,跟linux  不一样:

2.2、rtos其他修改

修改  lichee/rtos-hal/hal/source/vin/vin.c

参照其他添加自己的sensor:注意这里这个结构体名字就是上面驱动最后那个

修改 lichee/rtos-hal/hal/source/vin/modules/sensor/camera.h

这里要声明那个驱动的结构体,要不然vin.c 里面不认识

修改同目录下的 sensor_register.c 

rtos 修改完成

3、linux内核部分修改

linux部分相比rtos部分修改要容易一些,大头都在驱动上面,还是按照rtos 驱动修改,参照linux 的其他sensor 驱动,修改,放进对应目录,然后 Makefile  Kconfig之类的,然后就是设备树

注意:linux驱动里面还有一点需要注意设置,根据sensor i2c的地址和数据位宽,修改这里的参数:

设备树里面是这样的:

如果设备树只支持了一个sensor,想要打开两路sensor的话,你参考这个博客:

全志V853芯片适配双目GC2053的操作步骤

结语

到这差不多就移植完了,首先系统启动之后,可以看看log,或者 ls /sys/devices 看看有没有对应名字的设备出来。如果一切正常的话,可以使用isp tuning工具连接尝试出图看看,若颜色不对,那就看看sensor手册,替换驱动中rgb顺序试试。 有个看颜色的小窍门就是你找一个色卡,摄像头下面看到rgb色块明显颜色不对,那就替换rgb顺序继续测试,如果rgb色块颜色对了,但是图像整体还是很紫的,那至少sensor 出图这块你已经调好了,剩下的可以交给tuning工程师调一下效果文件,然后就正常了。

不过交给tuning工程师之前,你还需要做的就是完善你的驱动,毕竟这时候你只是简单的点亮了而已,还需要继续填补驱动里面的曝光,增益,旋转,曝光逻辑等一系列功能,只有这些做了,isp tuning工程师才能调试效果文件。

本篇移植驱动已经完了,剩下的修改空了再开一个文章吧

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/326979
推荐阅读
相关标签
  

闽ICP备14008679号