调试一款新的 camera sensor 就是按照上一章添加了,不管 你是 mipi 接口的还是 cif 并口的sensor,都是差不多的,主要不一样的就是 在于 cam_board_rk3399.xml 的配置
一、我们先分析下 mipi 接口的
1.
Mipi raw 和 mipi yuv 的区别,简单说就是 raw sensor ,就是我们的sensor 上面是没有 isp 的,直接提供 sensor采集到的原始图像数据传给我们的 RK3399 的isp 来进行处理
Mipi yuv 就是相反了, sensor 端就有 isp 将原始图像数据转化为 yuv格式的数据,然后直接传到 RK3399 ,直接就可以显示这类的,不需要 3399 的 isp 处理
优缺点: raw sensor 因为现在的 3399 这些 cpu 处理能力很强,就可以做到很大的分辨率,像华为手机的就更牛逼了达到 4000万,但是 cpu原厂是没有公开 isp 代码的,调试效果,必须推动 芯片原厂支持才行!那就得很长开发时间!
Yuv sensor 因为自身带芯片处理图像,就可以直接让供应商来调效果,但是因为一般的外置的 isp 处理能力有限,现在最多只能支持500万分辨率的 sensor
还有更多的优缺点请百度
2.
RK3399 摄像头架构分析
分为 HAL 层和 kernel层
Kernel 主要是 rk 芯片端的 camera 系统的驱动代码
kernel/drivers/media/video/rk_camsys
相关的头文件
include\media\camsys_head.h
Kernel 部分基本不用动,RK 原厂已经弄好
重点我们修改的还是 hal 层
| hardware\rockchip\camera
CameraHal CameraHal源码
Config Camera配置文件信息及isp库
SiliconImage ISP库相关头文件信息
isi\drv Sensor驱动源码
我们调试的 sensor 代码就是放到这里的
HM5532\calib Sensor模组tunning参数 ,效果文件
HM5532\source 就是具体的 sensor 初始化 寄存器等的代码
3.
看下我们修改的注册配置 cam_board_rk3399.xml
请看 网盘的 cam_board_rk3399_read.xml
- 一些问题排查
- 开机模组注册失败
Logcat | grep Cam*
看打印是否connect
否则就要检查 gpio ,i2c 通道
很重要一点就是供电问题,不仅仅要上电,而且每路电要正确,特别是 dvdd不正确,就会出现打开摄像头,没报错,就是黑屏,就要根据sensor datasheet检查这一路的电是否正确
- 打开连接上但是黑屏,上面说的 dvdd ,还有就是
检查cam_board.xml 里面的phyindex 配的是0 还是1,mipi rx 那组对应的为0 ,
RX/TX 那组对应为1;
还有可以将 mclk 降为 12M
二、DVP接口
总体和 mipi的差不多,就是 在 cam_board_rk3399.xml 中要改下
参考网盘
cam_board_r.xml
直接对比下就知道
<SensorInterface mode="CCIR601"></SensorInterface>
<SensorPhy phyMode="CamSys_Phy_Cif" sensor_d0_to_cif_d ="0" cif_num="0" sensorFmt="CamSys_Fmt_Raw_10b"></SensorPhy>
其他也就一样的