微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 嵌入式机器视觉系统优化研究

嵌入式机器视觉系统优化研究

时间:10-10 来源:互联网 点击:

摘要:介绍了基于ARM+DSP架构的嵌入式机器视觉系统的特性,分析了制约嵌入式机器视觉系统性能的因素。从操作系统和应用程序方面,讨论了嵌入式机器视觉系统的优化方案。通过对嵌入式Linux内核和文件系统进行裁剪,对应用程序代码进行大量的优化,并充分利用Cotex —A处理器独有的NEON加速技术,使系统开机启动时问缩短25 s,应用程序运行速度提高2.5倍。
关键词:嵌入式;机器视觉;优化;ARM;NEON

嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式机器视觉系统是指用嵌入式计算机处理由光学传感器接收到的图像信息,以实现对物体的检测和识别的装置,如数码相机、手持二维码识别设备,体感交互游戏机等。由于机器视觉系统需要进行大量复杂的数据运算,因此目前大多数的机器视觉系统还是基于PC系统构建,但随着近年来嵌入式系统的高速发展,嵌入式机器视觉系统越来越多地应用于工业检测与控制、智能交通、安防、医疗器械、机器人导航及消费电子等领域。
嵌入式机器视觉系统的性能主要取决于硬件和软件两方面。目前应用于嵌入式机器视觉系统的硬件平台主要有Intel基于x86架构的Atom平台、TI基于ARM—DSP的OMAP系列平台、NVIDIA基于ARM—GeForce的Tegra系列平台、IBM等基于PowerPC的处理平台等,其中ARM—DSP是一种高性价比的、应用广泛的体系结构。除了硬件平台之外,嵌入式操作系统的选择对机器视觉系统的性能也很重要,如开机时间,系统稳定性等。嵌入式操作系统的种类比较多,其中较为流行的主要有μC/OS、Windows CE、VxWorks、Android、iOS、Meego、QNX和Linux等。在诸多嵌入式操作系统中,Linux以其内核稳定、支持多种硬件平台、完全免费、源代码完全开放、可裁剪定制、易于移植的特性,成为大多数厂家的绝佳选择。此外,由于嵌入式机器视觉系统具有处理数据量大,算法复杂的特点,对嵌入式机器视觉应用程序的优化也至关重要。
文中以采用ARM—DSP结构的Beagleboard—xM开发板为例,构建了用于目标检测跟踪的嵌入式机器视觉系统,从操作系统和机器视觉应用程序方面对系统进行优化,并充分利用Cotex—A处理器的NEON加速技术,显著提高了嵌入式机器视觉系统的性能。

1 系统软硬件组成
文中所采用的嵌入式机器视觉系统的硬件组成如图1所示。其中DM3730处理器是由TI生产的单片系统(SoC)处理器,采用了POP(Package on Package)封装技术,内含1G主频的ARM Cortex—A8,主频800 M的TMS320C64+内核和512 M的LPDDR内存。该处理器有较强的多媒体图像、视频处理能力,特别适合于构建嵌入式机器视觉系统。Beagleboard—xM没有Flash,系统是从MicroSD卡启动的。PMIC为电源与音频管理模块,它通过McBSP总线与处理器连接。摄像头和以太网数据通过USB接口传给处理器,处理器运行目标检测与跟踪程序,并将处理结果送到LCD显示。Minicom用于和上位机进行通讯,便于调试。

图2为系统的软件结构图。在嵌入式Linux内核中包含了对CPU、USB摄像头、电源管理设备及USB以太网等的驱动支持。其中V4L是Linux内核中关于视频设备的API接口,UVC(USB Video Class)是为USB摄像头提供即插即用功能的驱动模块,在此基础上将开源的跨平台机器视觉库OpenCV2.2移植到了嵌入式平台上,并在应用程序中实现对视频信号的采集和处理。


2 嵌入式LinuX操作系统优化
嵌入式系统硬件资源较为有限,作为以应用为中心的专用计算机系统,需要对其在启动速度、实时性、系统尺寸、电源管理等方面进行优化。近年来,Linux凭借其优良特性广泛地应用于嵌入式系统。但是,作为一种原本为PC机设计的操作系统,设计者开始并没有考虑嵌入式应用对启动速度的要求,导致其典型的启动时间一般在几十秒或以上,这对用户来说是不能容忍的。此外,随着Linux内核的不断膨胀,启动时间越来越长。因此,加快启动速度已经成为嵌入式Linux系统亟待解决的关键问题之一。
由于成本的考虑,Beagleboard—xM平台没有Flash,它是从MicroSD卡启动的。嵌入式Linux系统启动时序如表1所示。系统上电后,内部ROM程序会从SD卡加载x—loader到SRAM。x—loader负责初始化系统(如时钟、RAM等),并将u—boot从SD卡中加载到RAM。u—boot负责将内核镜像从SD卡加载到RAM中。内核解压并运行,挂载文件系统,执行init进程,登录系统,最终完成系统的启动。编写perl脚本记录串口输出的时间,开机启动过程各部分耗时如图3所示。在系统启动过程中,内核解压与运行时间、系统自启动项加载时间占了整个系统启动的大部分时间。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top