首页 文学文摘 时政新闻 科技科普 经济法律 健康生活 管理财经 教育教学 文化艺术 社科历史

基于DM355的便携式车载视频采集存储系统

作者:戴华平 陈里东 来源:电子技术与软件工程


  摘要车载视频采集与存储系统是汽车主动安全的重要辅助系统,其技术也是未来汽车电子领域主动安全方面的关键技术之一。本文所提出的视频采集存储系统能实时记录车辆运行过程中由超员、超速、异常偏离车道等因素造成的不安全行为的视频,通过事后视频再现功能为交通事故的责任认定提供了形象直观、准确可靠的证据。本系统硬件采用TMS320DM355型达芬奇数字媒体片上系统、PAL制式摄像头以及显示器作为视频采集存储系统的硬件平台,将复杂的数据处理和编解码压缩工作借助达芬奇平台完成视频采集以及存储功能。软件采用嵌入式Linux操作系统,实现SD驱动程序修改和视频采集、编解码以及存储应用程序开发。实验表明系统能较好的完成预定功能。
  【关键词】DM355 嵌入式 linux SD驱动MPEG-4
  车载视频监控是汽车安全领域的重要技术之一,监控视频的存储对驾车安全与事故认定有着重要的作用。早在上世纪90年代,美国部分特殊车辆就利用卡带进行车载模拟视频信号存储。进入21世纪以来,大容量数字存储介质迅速发展,与此同时,国际电联的H.26x系列与国际标准化组织的MPEG系列在数据压缩比、压缩质量上也在不断成长,以微硬盘为代表的硬盘存储介质(DVR)开始进入车载领域。国内车载视频监控发展的比较晚,其早期产品多数是在ATM监控等嵌入式应用的基础上通过更改电源设计以及加装硬盘减震部件来完成的。随着不断的发展,现在很多公司的产品已经比较成熟,能实现宽电压适应、多路信号输入,回放检索等实用的功能。视频存储介质的发展也经历了打孔纸卡、计数电子管、盘式磁带、盒式录音磁带、磁鼓、软盘、硬盘、光盘的发展。
  目前市场上的视频存储方案主要是:以磁带为存储介质的模拟视频、以硬盘以及以SD卡,U盘等为存储介质的视频存储。对于视频存储管理功能而言,目前的主流存储介质是硬盘,然而随着Flash芯片技术的不断成熟,存储容量的不断上升以及价格的不断下跌,SD卡已经在便携式视频存储方面显示出独特的优势。故而对于以便携式移动视频存储,智能监控为主的场合,以SD卡作为存储介质比硬盘更加适合。近些年,关于车载视频采集和存储的研究也越来越多,嵌入式技术逐渐成为新型视频压缩与存储系统的主流,技术也越发成熟。本文正是在总结当前先进技术的基础上提出基于Embedded Linux+DSP平台和大容量SD卡存储设备的车载视频采集、压缩与存储系统设计方案的,目的是解决视频的实时采集、视频高压缩率、高的传输效率、高清晰、低功耗等问题。
  1 硬件架构
  本文从车载视频监控产品的需求出发,着重对实用型车载视频压缩存储系统进行研究与开发,设计一个车载视频压缩与存储平台实现嵌入式系统下实时视频图像的采集、编码、压缩以及存储功能。
  该系统设计结构包括硬件系统和运行在硬件系统上的软件系统。系统硬件部分,其主要由3个部分组成:图像信息的获取、图像信息的处理和存储、图像信息的显示。采集装置采用PAL制式摄像头,板载硬件对视频信息进行压缩等编码操作和SD卡存储,以及显示装置,TMS320DM355型达芬奇数字媒体片上系统作为功能核心,主要完成视频信号的采集、A/D转换、数据压缩编码以及存储等功能。系统电源均由24V车载蓄电池经电源逆变器提供,避免了繁杂的电源转换模块的设计,也保证了各个模块稳定可靠的工作能力。系统实物结构图如图1所示。
  TMS320DM355是TI便携式高清(HD)视频达芬奇(DaVinci)处理器,具备ARM主机控制与全套开发工具。DM355处理器由集成的视频处理子系统、MPEG-4-JPEG协处理器(MJCP)、ARM926EJ-S内核以及多种外设组成。集成视频/影像协处理器能够以720p格式与每秒30帧的速度提供高MPEG-4编解码功能,以及每秒5千万像素的速度提供JPEG编解码功能。MJCP与视频处理子系统结合起来就能提供相当于640MHz的DSP处理性能,高达270MHz的ARM处理能力实现强大的视频采集控制和处理能力。采用DM355构建的系统将拥有超长电池使用寿命,相当于现有便携式高清系统寿命的两倍。DM355在MPEG-4编码过程中的功耗约为400mW,而待机功耗仅为1mW。TECHVDM355&DVSDK开发套件充分利用了达芬奇技术系列包含的所有工具与支持,应用程序编程接口(API)在所有的达芬奇产品中都可通用,开发人员能够重复利用强大稳建的达芬奇技术系列IP,或利用ARM处理器丰富的开放源代码资源加速开发超低成本便携式视频监控设备,大大降低了开发成本。如图2所示DM355功能框图。
  2 系统软件设计
  系统软件设计包括软件平台搭建和应用程序开发。系统软件包括加载引导操作系统的BootLoader、DaVinci技术软件包和MontaVista Linux操作系统。应用软件是在DaVinci技术、操作系统、基础上开发的视频编解码、压缩以及存储的应用程序。
  DM355的软件构成包括三个层次:应用层、I/O层和信号层。应用层和信号层通过VISA API连接在一起,VISA是TI视频、影像、语音和音频构成的软件库。应用层和I/O层通过EPSI API连接,即简单外设的软件接口。接口中应用层包括用户接口和处理线层,I/O接口包括VPSS视频前端(VPFE)与视频后端(VPBE),IIC,ASP,UART接口以及以太网接口(EMAC)。如图3所示DM355软件层次。
  2.1 平台搭建
  系统软件平台的搭建主要包括Linux交叉开发环境、Linux内核编译、BootLoader移植等。建立Linux交叉开发环境最终目的是建立网络文件系统NFS。NFS允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序可以象访问本地文件一样访问远端系统上的文件。登陆RedHat linux 4.0,修改系统环境变量,以便在终端可以识别ARM的编译器,接下来主要工作就是内核模块MMC/SD卡驱动的创建和修改,以及视频编解码并存储的应用程序开发。
  2.2 软件设计
  系统软件设计主要包括图像采集模块、视频压缩与存储模块、系统控制模块等,并且实现了多线程通讯和视频回滚存储技术,处理好系统中多线程之间交互畅通的通信,以及有效的视频回滚存储。为了实现大容量SD卡的存储,还需修改SD卡驱动程序。
  2.2.1 SD卡驱动修改
  驱动程序作为系统内核的一部分工作在核心态,而应用程序工作在用户态。用户程序需要通过驱动程序访问内核函数和资源。SD卡属于块设备,SD卡可以像文件一样被访问,应用程序对于块设备的操作,要经过系统的缓冲区管理,间接传递给驱动程序处理。
  SD卡驱动设计主要包括mmc_blk_init、mmc_blk_probe、mmc_init_queue等子文件。其中函数mmc_blk_init注册一个MMC块设备驱动程序,它先将MMC块设备名注册到名称数组major_names中,然后,还把驱动程序注册到sysfs文件系统中的总线和设备目录中。一方面,sysfs文件系统中可显示MMC块设备相关信息,另一方面,sysfs文件系统以树形结构管理着MMC块设备驱动程序。函数mmc_blk_probe是MMC控制器探测函数,它探测MMC控制器是否存在,并初始化控制器的结构,同时,还探测MMC卡的状态并初始化。函数mmc_init_queue初始化一个MMC卡请求队列结构,其中参数mq是mmc请求队列,参数card是加在这个队列里的mmc卡,参数lock是队列锁。
  
  在linux系统中,驱动程序都做成模块的形式。一个模块提供一个功能,这些模块是可以按照需要随时装入内核空间和从内核空间卸载的。当用户输入命令insmod加载内核模块时,系统会检测此模块能否被加载,如果能被加载,内核调用模块的初始化函数。当用户输入命令rmmod卸载内核模块时,系统会检测此模块是否能被卸载,内核将调用模块清除函数。SD卡驱动修改完成后测试SD卡,加载驱动模块,实现正常读写,然后卸载该模块表明驱动修改成功。
  2.2.2应用程序开发
  应用程序开发涉及到操作系统、视频编解码算法及ARM和MJCP之间的分工协作。监控系统实现一路视频播放和录制,在录制视频前要先对视频进行MPEG-4压缩,最后将录制的视频存入大容量SD卡。整个应用程序主要负责视频数据的采集、压缩和存储分别对应capture线程、编码线程以及control线程。Capture线程控制采集设备进行图像及声音的采集及预处理;编码线程从capture线程读取数据,进行MPEG-4压缩;Control线程从编码线程读取压缩完的数据存入SD卡中。
  由于DM355内部集成了MPEG/JPEG协处理器,对于音视频的编解码主要是通过它来完成的。主控程序调用TI CodecEngine API函数,利用MPEG/JPEG协处理器对原始视频数据进行压缩存储,简化了设计难度,增强了设计可靠性。整个视频处理流程主要包括一下部分:创建视频编码类,打开编码引擎时返回的句柄。对视频编码类进行控制,设置视频编码动态参数;处理数据,进行MEPG-4编码;创建的VISA类句柄,为输入输出配置参数;最后销毁创建的视频编码类。如图4所示DM355视频采集流程。
  3 实验结果
  按照步骤连接好TechvDM355实验平台和计算机,打开虚拟机Vmare,并登录到虚拟机的Linux,给TechvDM355上电,登录到MontaVista Linux。SD卡格式化为Fat32格式,插入SD卡,即可看到串口终端有信息输出,Linux检测到SD卡设备插入。在串口终端下,敲入挂载命令把SD卡文件挂到/mnt目录下。此时只能通过串口对MMC/SD卡操作,在虚拟机的Linux系统的/mnt 目录里看不到SD卡文件,串口终端下敲入命令创建一个文件夹。连接摄像头输入到P1,连接视频信号输出J7到显示器AV输入,串口终端切换到/opt/dvsdk目录。运行编码程序encode。在/mnt/SDcardtestdir目录下刷新可以看到录制的文件test.mpeg4。接下来运行解码程序decode解码test.mpeg4,稍等即可看到显示器有解码的图像输出。测试操作完成后卸载SD卡文件系统。如图所示主程序测试流程。如图5所示,主程序完成系统的加载,包括BootLoader的启动和加载,硬件驱动程序、操作系统的加载和启动,操作系统启动成功后通过Shell程序加载启动监控系统软件,进入监控系统。
  4 总结
  本文设计一个车载视频压缩与存储平台,利用该平台强大的视频处理能力,实现嵌入式系统下实时视频图像的采集、编码、压缩以及存储功能。系统软件设计中采用嵌入式操作系统Monta Vista Linux,并对其内核进行裁剪编译,最后移植到DM355硬件平台。在嵌入式Linux操作系统的基础上,设计并实现了基于嵌入式Linux的视频压缩与存储系统。本系统工作时采集线程、A/D转换线程、压缩编码线程、存储与显示线程等同时工作,需保证其有效通信、工作流畅。系统实现了视频压缩编解码技术,消除那些无用的冗余数据,保留有效的信息。视频的采集、转换是系统数字化的第一步,实时、高压缩比的压缩技术是存储和传输的基础。本系统选择MPEG-4这一视频压缩标准,其具有高压缩比、动态特性好、存储容量优势明显等特点。车载视频监控系统涉及多个摄像头,位于客车的不同位置,由于安全监控的需要,要求能够随时切换存储摄像头,并将拍摄视频存入存储卡中。视频监控中采用回滚存储方式,对于车载视频存储系统只将触发信号触发前后的几十秒时间内的视频存储下来,很大程度地节约存储资源。
  
  参考文献
  [1] 杨忻恺,张为公,于兵.基于DSP的车载视频监控存储系统的设计[J].电子器件,2009.8.32(4):806-808.
  [2] 何立民.嵌入式系统的定义与发展历史.单片机及嵌入式应用[M].2007,10:79-81.
  [3] 杨德瑞.基于ARM的无线视频传输系统大容量存储技术研究[D].哈尔滨:哈尔滨工业大学信息通信学院,2006.6.
  [4] 陈义钦,覃团.基于ARM9的视频采集传输系统[J].电子工程师,2007.33(5):21-23.
  [5] 杨凯.视频监控系统的设计与实现[D]. 武汉:华中科技大学,2006.6
  [6] 梁培钧,赵军.基于嵌入式Linux的视频采集系统设计[J].电脑知识与技术,2009.5(11):2896—2897.
  [7] TechvDM355使用说明[M].北京达盛科技有限公司.2008.
  [8] Yao Wang,Join Ostermarm,Ya-Qin Zhang.Video Processing and Communication[M].Pearson Education,2002.
  [9] Nicholas McGuire.Embedded GNU/Linux drawing the big-picture[J].IEEE,2003:1237-1242.
  [10]Wolf.Computers as Components [J].Principles of Embedded Computing System Design.2002:1-5.
  
  作者简介
  戴华平(1986-),男,硕士研究生学历,初级工程师。研究方向为汽车电子。
  陈里东(1987-),男,硕士研究生学历,初级工程师。研究方向为控制工程。
  
  作者单位
  1.长江龙城科技有限公司江苏省常州市213164
  2.中国电力科学研究院北京市海淀区100192