点sensor程序说明
1. sensor图像显示功能介绍¶
该demo 主要展示了从Sensor到Panel 整条Pipeline该如何串接, 如上图所示,并在该Pipeline中使用IPU 去做目标的检测并把检测结果实时显示出来,具体支持如下功能:
-
功能场景:sensor采集到的视频显示到panel上(文中其他描述出现的sensorTopanel,sensor2panel均是指此功能)
-
视频流:sensor->vif->isp->scl->(vdisp)->disp->panel
-
支持配置双摄
-
支持vif-isp 绑定方式的动态切换
-
支持配置iqbin的路径配置
-
支持iq tool调试
-
支持配置MIPI屏
-
支持输出一路RGB & 一路IR 显示
-
支持单路物体检测画框
-
支持配置iqbin的路径
2. 编译环境说明¶
Note
一般默认板端已经打包好了相应程序,因此程序编译并非必须。你可以直接在板端 /customer/sample_code/disp_sensor2Panel_demo 文件夹中找到prog_disp_sensor2Panel_demo。如果你没有找到文件或有自己修改程序的需求,可参考如下步骤。
-
dts 配置
-
配置屏幕dts
以mipi屏为例,需修改
kernel/arch/arm/boot/dts/pcupid-comake-pi-d1-dual-sensor-padmux.dtsi
中对应的// MIPIDSI 4 LANE
部分为if 1
,将MIPIDSI 4lane的设备树打开编译 -
配置sensor dts
如使用gc2053,1-lane sensor + 1-lane sensor,修改
kernel/arch/arm/boot/dts/pcupid-comake-pi-d1-dual-sensor.dts
中csi: csi { ... /* Config max lane number, sr0 set to 2 include 1lan support*/ csi_sr0_lane_num = <2>; csi_sr2_lane_num = <1>; /* Config lane selection */ csi_sr0_lane_select = <0 1 2>; csi_sr2_lane_select = <0 1>; /* Config lane P/N swap */ csi_sr0_lane_pn_swap = <0 0 0>; csi_sr2_lane_pn_swap = <0 0>; }; sensorif: sensorif { compatible = "sstar,sensorif"; status = "okay"; clocks = <&CLK_sr00_mclk>, <&CLK_sr01_mclk>; /* Config sensor 0 pad mux */ snr_sr0_mipi_mode = <5>; snr_sr0_mipi_mclk_mode = <2>; snr_sr0_rst_gpio = <73>; snr_sr0_pdn_gpio = <77>; snr_sr0_par_mode = <2>; snr_sr0_par_rst_mode = <2>; snr_sr0_par_pdn_mode = <1>; snr_sr0_par_mclk_mode = <2>; ... /* Config sensor 2 pad mux */ snr_sr2_mipi_mode = <5>; snr_sr2_rst_gpio = <77>; snr_sr2_mipi_pdn_mode = <0>; snr_sr2_mipi_mclk_mode = <2>; ... };
进一步的sensor驱动配置请参考 SENSOR使用参考
-
-
在project路径下根据板子(nand/nor,ddr型号等)选择defconfig进行整包编译
例如Comake PI D1型号板子,使用emmc,ddr4的配置,使用以下defconfig,其他板子型号详细参考用户手册
dispcam_pcupid.emmc.glibc-12.4.0-arm-squashfs.comake.pi.d1.1024.dual_sensor.bga_ddr4_riscv_defconfig
在project目录执行以下命令进行编译;
make dispcam_pcupid.emmc.glibc-12.4.0-arm-squashfs.comake.pi.d1.1024.dual_sensor.bga_ddr4_riscv_defconfig
make clean && make image -j8
-
进到sdk/verify/sample_code目录执行
make clean && make source/pcupid/disp/sensor2Panel_demo
进行编译; -
到
sdk/verify/sample_code/out/arm/app/prog_disp_sensor2Panel_demo
获取可执行文件; -
将可执行文件prog_disp_sensor2Panel_demo放到板子,/customer/sample_code/disp_sensor2Panel_demo路径上,修改权限777。
3. 运行环境说明¶
-
板端环境
连接mipi屏和触摸板:在板端CON9与CON8 接口上插入触摸屏与MIPI屏FPC线。
连接Sensor:在J5 /J6 上连接(单/双)gc2053 sensor。
CON8 MIPI屏为FPC上接,注意不要接反,如下第一张图所示。
CON9 靠近屏幕侧为FPC下接,靠近主板侧为FPC上接,注意不要接反,如下第二张图所示。
J5 sensor 为FPC下接,注意不要接反,如下右两图所示。
-
sensor 驱动配置
Note
如果你下载使用的是我们提供的代码包且使用了例中的defconfig进行编译,那么以下配置不用自行修改,已默认配置完毕。
/customer/demo.sh路径修改insmod对应的sensor ko,例如gc2053跑单sensor时,可配置为
insmod /config/modules/6.1/gc2053_mipi.ko chmap=1
双sensor时,配置为
insmod /config/modules/6.1/gc2053_mipi.ko chmap=5
4. 运行说明¶
执行 cd /customer/sample_code/disp_sensor2Panel_demo
。到文件相应路径。
参数解释如下:
-b
选择vif-isp的绑定方式 0:vif isp realtime绑定 (单摄默认realtime,双摄只能framemode) 1:vif isp framemode绑定
-n
初始化sensor pad选择 0:初始化sensor pad0 (默认 0) 1:初始化sensor pad2 2:初始化sensor pad0 和sensor pad2
-p
选择使用的屏幕类型 0:TTL屏 (默认ttl屏) 1:mipi屏
-i
iqbin的存放目录,比如-i /customer,表示sensor0的iqbin在/customer/iqApiBin0.bin,sensor1的iqbin在/customer/iqApiBin1.bin
-c
选择sensor index,从0开始。默认值为0。gc2053不同的index对应不同lane的配置
-t
选择 display output timing,目前只有如下几个选项,如有不同屏,可自行添加 0:E_MI_DISP_OUTPUT_USER(TTL使用) 1:E_MI_DISP_OUTPUT_720P60 2:E_MI_DISP_OUTPUT_1080P60
-w
使能isp 输出IR图像,需要配合双摄 0:关闭 1:开启
-d
使能物体检测,仅支持单摄 0:关闭 1:开启
-m
加载物体检测模型路径,默认路径:/customer/yolov8n_800x480_P3P_fixed.sim_sgsimg.img
执行示例
1. 单独跑sensor pad0,MIPI 720p屏幕 ./prog_disp_sensor2Panel_demo -b 0 -n 0 -c 1 -p 1 -t 0 -r 90 -i "/customer" 2. 单独跑sensor pad2,MIPI 720p屏幕 ./prog_disp_sensor2Panel_demo -b 0 -n 1 -c 1 -p 1 -t 0 -r 90 -i "/customer" 3. 同时跑pad0 pad2,MIPI 720p上下分屏显示 ./prog_disp_sensor2Panel_demo -b 0 -n 2 -c 1 -p 1 -t 0 -r 90 -i "/customer" 4. 同时跑pad0 pad2,MIPI 720p旋转90分屏显示 ./prog_disp_sensor2Panel_demo -n 2 -c 1 -p 1 -t 0 -r 90 -w 1 -i "/customer" 5. 单sensor 物体检测,MIPI 720p旋转90显示 ./prog_disp_sensor2Panel_demo -p 1 -t 0 -n 0 -r 90 -c 1 -d 1 -m /customer/sample_code/disp_sensor2Panel_demo/model/yolov8n_800x480_P3P_fixed.sim_sgsimg.im -i "/customer"
运行过程中根据串口提示如下:
select 0: change vif->isp bind mode(这个选项只支持单sensor的场景,因为双sensor只能用realtime mode) select 110: quit app
输入对应数字可以选择不同的bind mode
5. 运行结果说明¶
-
效果查看
功能1:接入sensor进行测试pad0单独显示
执行命令
./prog_disp_sensor2Panel_demo -c 1 -n 0 -p 1 -t 0 -r 90
,显示如下图,屏幕正常显示sensor0拍摄画面。功能2:人形识别
执行命令
./prog_disp_sensor2Panel_demo -p 1 -n 0 -c 1 -r 90 -d 1 -m model/yolov8n_800×480_P3P_fixed.sim_sgsimg.img
,显示如下图,人手和人脸在镜头前移动。屏幕画面正常显示sensor出来的图像,可以画出识别框,并有person_0.xx打印
-
退出命令
输入
110
即可退出demo,退出sensor0拍摄画面,显示黑色。