在视频领域,一般都是用海思方案的,如今海思断供,很多公司面临换方案的问题,以下以sigmastar为例:
1,拿到原厂的SDK,开发手册。
2,编译配置SDK,一般编译kernel和project即可。
如下是USB相机:
编译project:
./setup_config.sh configs/usbcam/i6e/nor.glibc-squashfs.013a.512x512.bga
make clean
make image
./make_usb_upgrade_sigmastar.sh
kernel:
declare -x ARCH=“arm”
declare -x CROSS_COMPILE=“arm-linux-gnueabihf-9.1.0-”
make infinity6e_ssc013a_s01a_usbcam_defconfig
make clean;
make
3,搭建开发环境,虚拟机16版以上,安装原厂提供的交叉编译器。
4,编译project,得到镜像images,烧录,烧录串口用原厂推荐的。烧录的方法是用SDK里提供的烧录工具,先用串口烧录boot,剩下的可以用网口TFTP服务器,或者usb烧录。
5,跑sdk里面的demo prog_vpe,点亮sensor,一般sdk会默认带常用sensor 的驱动。一般出图流程是sensor->VI->VPE(做图像裁剪,旋转等)->VENC(编码MJPEG,H264/5)->VO
6,把能出图的demo参照手册整合到自己的代码框架中。
7,调试的一些方法。
a,一般看当前编码的格式,码率,分辨率,帧率都是要看系统的打印。
b,保存编码后的图片到/mnt下:
(MJPEG:mi_venc1, h264/5:mi_venc0)
echo dump_out 0 100 /mnt >/proc/mi_modules/mi_venc/mi_venc1
c,USB相机你要看驱动支持哪些格式,分辨率,isp参数,控制单元,一般是通过USB tools来看设备的描述符。