新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式机器视觉系统优化研究

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

作者: 时间:2016-10-10 来源:网络 收藏

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所示。在系统启动过程中,内核解压与运行时间、系统自启动项加载时间占了整个系统启动的大部分时间。

本文引用地址:https://www.eepw.com.cn/article/201610/306025.htm

c.jpg


本文对嵌入式Linux操作系统采取的优化策略如下。
1)修改并重新编译u—boot源码,取消开机3 s等待时间
系统会检测在开机等待时间内用户按钮是否被按下,如果被按下,则可以进行设置系统环境变量,修改启动选项等操作。这里可以跳过这一步,减少开机时间。
2)裁剪内核中不必要的功能部分
嵌入式Ldnux操作系统内核中除了进程管理、内存管理、任务调度等核心部分外,还提供了多种文件系统、网络、硬件驱动、内核调试等功能模块,但它们并非必不可少,例如手持移动终端通常不需要NTFS等文件系统,也不需要RAID和SCSI设备支持。所以,根据嵌入式系统应用的具体需求配置Linux内核才能减小Linux内核的静态映像体积,同时也能够相应减少这些功能模块运行时间的开销。
3)采用“-Os - mthumb”编译选项进行优化以减小内核镜像大小
-Os是gcc优化选项中最深层次的优化,相当于是对代码进行了-O2的优化,但不增加代码尺寸。-mthumb表示使用16位短指令集,它具有更高的代码密度,即占用存储空间小,仅为32位ARM代码规格的65%,但其性能却下降的很少。
4)去掉内核打印输出
Linux系统启动时,一般使用串口控制台或VGA控制台打印内核启动信息,打印速度取决于串口的速度和处理器的速度,这在大多数嵌入式系统中要用数百毫秒的时间。
5)用buildroot构建轻量级的根文件系统
常用于构建根文件系统的工具有OE(OpenEmbedded)和buildroot等。OE是重量型的交叉编译系统工具,可以用来构建复杂的根文件系统,但配置和定制过程难度很大,而且要耗费约20 G的硬盘空间和十几个小时的编译时间。buildroot则是一个相当小巧灵活的交叉编译工具,用它定制和调整软件包十分方便,而且buildroot提供了类似Linux kernel配置采用的配置菜单,易于使用。
6)桌面环境使用X11而非Gnome或KDE
X11即X Window系统,它是一种可以用于Unix和类Unix操作系统的位图显示视窗系统。Gnome和KDE是两种相对复杂的桌面环境。对于嵌入式机器,如果用户界面不追求华丽,可以使用更为简洁的X11,以及简单的桌面管理器twm。
7)禁用或暂缓启动某些启动项
为了加速启动,可以禁用不必要的启动项,甚至一些必要的启动项可以在系统完成登录后再启动。具体可以通过修改/etc/init.d/下自启动项快捷方式名称的方法实现。
$cd/etc/init.d/
$mv S20network K20network
当系统完成开机启动后再启动该项目,可以用如下命令:
$K20network start
如表2所示,经过优化后,内核镜像大小由3.046 MB减小到2.797 MB,系统的启动时间(从复位到开启应用程序)由35.171 s缩短到10.056 s,基本满足实际应用的需要。嵌入式Linux操作系统优化取得了明显的效果。

d.jpg


应用在移动载体上的嵌入式机器通常对能耗也有较高的要求。Beagleboard—xM是一款功耗较低的产品,不需要风扇冷却。电源管理主要是由PMIC模块实现的。另外,通过更改系统的显示设置,如屏保时间、待机时间等,来降低能耗。

3 应用程序优化
机器往往涉及大量复杂的计算,大多采用C/C++等高效率的语言进行开发。嵌入式系统对应用软件的质量要求很高,在嵌入式开发中须注意对代码进行优化,尽可能地提高代码效率。本文从算法、代码效率以及处理器的特性等方面出发,为开发高效率嵌入式机器视觉应用程序提供了些经验。



关键词: 嵌入式 视觉系统

评论


相关推荐

技术专区

关闭