本篇着重记录项目中有关移动侦测的开发记录,初次接触海思Hi3518和摄像头AR0130,作为一个小白,开始慢慢摸索。
海思对Hi3518等系列芯片都有海思自家的MPP(Media Process Platform)的支持,这也对解决图像处理提供了处理机制,支持应用软件快速开发,搭载Linux3.4操作系统,应用处理能力强大。
一、平台架构和工具
1. MPP平台架构
视频输入子系统VI
视频处理子系统VPSS
视频编码子系统VENC
视频输出子系统VO
2. HiTools中的HiBurn
海思官方提供了HiBurn以为fastboot下载工具,HiBurn中有串口和网口两种烧写方式,可按分区烧写、按地址烧写等,还可以合并镜像,分区大小要注意与Bootloader中的环境变量一致。串口烧写方式比较慢,但网口烧写方式有时并不稳定,当然通过HiBurn下载Bootloader再进入Bootloader使用tftp下载内核镜像和文件系统。
需要注意的是,使用HiTools软件需要电脑安装Java JDK,本人电脑64位的Win7系统,安装了64位的JDK,JDK使用正常,但并不能打开软件,后面安装了32位的JDK才成功启动,当然这可能是电脑系统的问题。
二、Himpp开发过程
1. MPP System init
2. Start Vi dev & chn to capture
启动MIPI并配置
初始化ISP和Sensor(有关Sensor库文件代码可在/mpp/component/isp/sensor中,其中可添加对sensor寄存器的置,作 sensor低功耗省电模式等操作)
运行ISP相关线程
开启VIDEV
开启并配置VI通道
//设置VI通道属性采集区域stCapRect中图像的宽和高和目标图像stDestSize的宽和高在sensor为逐行扫描时需一致,而 AR0130为逐行扫描
3. Start vpss and vi bind
创建VPSSGroup并与Vi进行绑定
vpss可对图像进行去噪、图像增强、锐化等处理,并实现同源输出多路不同分辨率的图像数据用于编码、预览或抓拍。配 置VPSSChn属性时,可依靠stVpssChnMode.u32Width和stVpssChnMode.u32Height两个属性可对图像分辨率进行配置
4. Start stream venc
开启编码通道并与VPSS进行绑定
5. Get stream and venc process
三、MD移动侦测开发过程
海思VDA子系统只支持Hi3516A,不支持Hi3518e
MD的移动侦测可以参考海思提供的HiIVS API参考.pdf
海思的HimppV1.03版本中提供了Sample_IVE_MD()处理例子,
参考易百纳论坛【已解决】关于移动侦测sample理解
一开始我们按照IVE_MD信息进行设置,其中HI_MPI_VI_SetFrameDepth(ViChn,u32ViDepth);设置Vi帧队列深度;
当MD_Process中对HI_MPI_VI_GetFrame()出现错误,查阅资料HI_MPI_VI_SetFrameDepth需在离线模式下,好,先测试 离线模式下的处理过程,insmod hi3518e_sys.ko vi_vpss_online=$b_arg_onlinesensor=$SNS_TYPE设置b_arg_online = 0
再次MD_Process中HI_MPI_VI_GetFrame()出现0xa010800e错误,错误信息为视频输入缓存为空,进行相关错误调试 后,错误短时间未解决,好,推翻重来,目标最终是在线模式下使用移动侦测,按照MD处理流程重构移动侦测的相关初始 化和处理。
至此,在线模式下通过VPSS获取Frame数据流使用HI_MPI_VPSS_GetChnFrame();使用这个需设置 HI_MPI_VPSS_SetDepth,获取后记得HI_MPI_VPSS_ReleaseChnFrame,获取帧数据正确后,将相应的Frame数据进行 SAMPLE_COMM_DmaImage();
对于MD处理函数HI_IVS_MD_Process();查找相关HiIVS API;
对于处理数据pstBlob区域信息的理解或参考帖子Hi3519+IMX226 IVE实现移动侦测
得出的pstBlob数据仍不太正常,好,原因猜测可能是帧数据不正常,好,有什么办法可以将帧数据转化成图片查看,查 找后发现在vpss dump中有相关记录sample_yuv_dump,经过一番咔嚓,好,得到YUV420的帧图片文件,下载个 YUVplayer软件查看图片,发现第一帧获取的数据不正常,最后往MD_Process中进行 处理,得到的pstBlob再进行解析。
正常。
至此,完成了Hi3518e的移动侦测,侦测到移动后,再进行报警、抓拍等操作。
Hi3518此次使用Linux3.4,从系统启动到加载驱动摄像头程序初始化运行,时间为10S左右,比较久,而据悉目前华为方 面已经开发出物联网系统LiteOS,系统快速启动,运行不错。