海思Hi3518E+AR0130之移动侦测篇(一)

本篇着重记录项目中有关移动侦测的开发记录,初次接触海思Hi3518和摄像头AR0130,作为一个小白,开始慢慢摸索。

海思对Hi3518等系列芯片都有海思自家的MPP(Media Process Platform)的支持,这也对解决图像处理提供了处理机制,支持应用软件快速开发,搭载Linux3.4操作系统,应用处理能力强大。

一、平台架构和工具

1. MPP平台架构

海思Hi3518E+AR0130之移动侦测篇(一)_第1张图片

       视频输入子系统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才成功启动,当然这可能是电脑系统的问题。

海思Hi3518E+AR0130之移动侦测篇(一)_第2张图片

二、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为逐行扫描

             海思Hi3518E+AR0130之移动侦测篇(一)_第3张图片

           

       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

       海思Hi3518E+AR0130之移动侦测篇(一)_第4张图片

       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;

       海思Hi3518E+AR0130之移动侦测篇(一)_第5张图片

           对于处理数据pstBlob区域信息的理解或参考帖子Hi3519+IMX226 IVE实现移动侦测

           得出的pstBlob数据仍不太正常,好,原因猜测可能是帧数据不正常,好,有什么办法可以将帧数据转化成图片查看,查              找后发现在vpss dump中有相关记录sample_yuv_dump,经过一番咔嚓,好,得到YUV420的帧图片文件,下载个                        YUVplayer软件查看图片,发现第一帧获取的数据不正常,最后往MD_Process中进行 处理,得到的pstBlob再进行解析。

           正常。

           至此,完成了Hi3518e的移动侦测,侦测到移动后,再进行报警、抓拍等操作。

           Hi3518此次使用Linux3.4,从系统启动到加载驱动摄像头程序初始化运行,时间为10S左右,比较久,而据悉目前华为方              面已经开发出物联网系统LiteOS,系统快速启动,运行不错。

你可能感兴趣的:(海思Hi3518E+AR0130之移动侦测篇(一))