Hi平台(SS928V100)
sony_imx678(索尼):8M、mipi-4lane接口、12bit、30fps、27MKHZ、3840x2160
soi_f355p(晶相):2M、mipi-2lane接口、10bit、30fps、24MKHZ、1920x1080
硬件接口原理图
sensor0接imx678
sensor1接f355p
sensor驱动
驱动代码位置:smp/a55_linux/mpp/cbb/isp/user/sensor/ss928v100
模块编译驱动生成驱动动静态库位置:smp/a55_linux/mpp/cbb/isp/user/lib和smp/a55_linux/mpp/out/lib
驱动程序如下:
可以基于一款规格相近 Sensor(master/slave, i2c/spi, wdr/linear)驱动根据datasheet修改,尝试编译出 Sensor 库。
驱动的适配流程:
1)确定I2C的设备地址。
2)完成寄存器初始化配置(参考 sensor 手册或者 sensor 厂家提供)。
3)AE增益、曝光时间、awb参数、isp图像参数配置。
其中 1、2 在imx678_sensor_ctl.c中实现,3在imx678_coms.c实现(第3点不影响sensor出流)
sensor输出
sample
sample代码位置:smp/a55_linux/mpp/sample
sys_config.c代码位置:smp/a55_linux/interdrv/sysconfig
sample相关驱动:smp/a55_linux/mpp/out/ko
venc方式(vi->vpss->venc)
1.添加sensor0
Makefile.param
2.isp配置
修改位置:common/sample_comm_isp.c
1)添加obj
2)添加isp属性attr
3)sample_comm_isp_get_pub_attr_by_sns();函数添加
4)sample_comm_isp_get_sns_obj();函数添加
5)sample_comm_isp_sensor_founction_cfg();函数添加
3.vi配置
修改位置:common/sample_comm_vi.c
1)添加mipi的ext_data数据类型
2)添加combo_dev的attr,dev0为imx678,dev2为f355p
4)sample_comm_vi_get_mipi_attr();函数中添加
5)sample_comm_vi_get_mipi_ext_data_attr();函数中添加
6)sample_comm_vi_get_mipi_attr_by_dev_id();函数中添加
7)sample_comm_vi_get_size_by_sns_type();函数中添加
8)sample_comm_vi_get_obheight_by_sns_type();函数中添加
9)sample_comm_vi_get_pipe_num_by_sns_type()函数中添加
10)sample_comm_vi_get_default_sns_info();函数中确认I2C的总线
4.编译venc
sample/venc目录下
执行make,生成可执行文件sample_venc
执行samle-sensor0
./sample_venc 0
//然后依次输入0,a
调试
1.proc/umap信息
cat /proc/umap/mipi_rx //mipi信息
cat /proc/umap/vi
cat /proc/umap/venc
cat /proc/umap/vpss
cat /proc/umap/sys
2.查看H265、H264编码的视频流
通过PotPlayer 64 bit工具查看sample_env获取的env编码后视频