时间:2023-06-21 09:19:01
导言:作为写作爱好者,不可错过为您精心挑选的10篇嵌入式设计系统,它们将为您的写作提供全新的视角,我们衷心期待您的阅读,并希望这些内容能为您提供灵感和参考。
中图分类号:TP311 文献标识码:A文章编号:1009-3044(2011)07-1649-02
A Reseach on Design of Embedded System
FANG Jian-gang
(Computer College, Wuhan University of Technology, Wuhan 473000, China)
Abstract: Embedded technique as a new and great development force's science technique has been concerned by more and more people.The article discusses the feature of embedded system,embedded software and hardware developing process and design methods.
Key words: embedded system; development environment
嵌入式系统已经广泛的应用到通信、家电、汽车、工业控制等领域,极大的便利了人们的生活。嵌入式系统是指以应用为核心,以计算机技术为基础,软硬件可裁剪,对功能、可靠性、成本、体积和功耗严格要求的专用计算机系统,,也是为实现对象体系智能化控制的计算机系统。嵌入式系统如图1。
嵌入式系统由硬件和软件两大部分组成,其分类可以从硬件和软件进行划分。从硬件方面来讲,各式各样的嵌入式处理器是嵌入式系统硬件中的最核心的部分,而目前世界上具有嵌入式功能特点的处理器已经超过1000种,流行体系结构包括MCU,MPU等30多个系列。很多半导体制造商都大规模生产嵌入式处理器,并且公司自主设计处理器也已经成为了未来嵌入式领域的一大趋势,从软件方面划分,主要可以依据操作系统的类型。目前嵌入式系统的软件主要有两大类:实时系统和分时系统。其中实时系统又分为两类:硬实时系统和软实时系统。
嵌入式系统应该具备4个特性:1) 执行特定的功能;2) 以微处理器和设备构成核心;3) 需要严格的时序与稳定性;4)全自动操作。
1 嵌入式处理器
嵌入式处理器可以分成下面几类:嵌入式微处理器(Micro Processor Unit,MPU)、嵌入式微控制器(Microcontroller Unit, MCU)、嵌入式DSP处理器(Embedded Digital Signal Processor, EDSP)、嵌入式片上系统(System On Chip),其中采用RISC架构的ARM微处理器以它优越的性能被广泛的应用与嵌入式开发各个领域。
2 嵌入式操作系统
嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、调度、控制、协调;它必须体现其所在系统的特征,能够通过加载卸载某些模块来达到系统所要求的功能。实时操作系统是嵌入式系统目前最主要的组成部分。
Linux是目前最为流行的一款开放源代码的操作系统,在当今开发嵌入式系统中,70%以上的项目选择的Linux作为嵌入式系统。另一种常见的嵌入式Linux是UcLinux,它去掉了内存管理单元,该系统直接访问内存,所有的程序中访问的地址都是物理地址。嵌入式Linux有以下特点:精简的内核,性能高、稳定,支持多任务、多种体系结构等。
3 嵌入式系统的设计方法
3.1 嵌入式系统的总体结构
一个嵌入式系统一般都由嵌入式微处理器系统和被控制对象组成,其中微处理器系统是整个系统的核心,由硬件层、中间层、软件层和功能层组成。硬件层是嵌入式微处理器、电路和外设,软件层主要是操作系统,功能层是基于操作系统开发的应用程序组成,用来完成对被控对象的控制功能。中间层是将系统软件与底层硬件部分隔离,使系统的底层设备驱动程序与硬件无关。
3.2 嵌入式系统的开发特点和流程
开发特点:1) 采用宿主机|目标机的方式。2) 生成的代码需要固态化存储。3) 软件代码具有高质量、高可靠性。
开发流程一般由5个阶段构成:需求分析、体系结构设计、硬件|软件设计、系统集成和代码固化。各个阶段之间往往要求不断地反复和修改,直至完成最终设计目标。
3.3 嵌入式系统调试
在嵌入式系统中系统调试是非常困难的,不同于传统软件的调试,因为开发程序平台和目标平台是分开的。一般来说,大部分的工作是在RAM中进行的,只有当程序完成并能运行后才切换到ROM上。调试方法有多种,可分为模拟器方式、在线仿真器方式、在线调试器方式、监控器方式。
4 嵌入式Linux应用程序开发
4.1 开发环境的建立
进行项目开发前,首先要搭建一套基于Linux操作系统的应用开发环境,一般由目标机和宿主机所构成。目标板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主机来完成。双方之间通过关键接口如串口、以太网口或USB口建立连接关系。个人进行嵌入式开发可以在自己的PC上安装一套Linux,使用系统中的工具来编译、调试。多人开发的最好建立个Linux服务器,使用服务器的Linux系统的gcc编译生成目标代码,通过ftp传到每个开发人员的PC,然后通过串口或网络下载开发板上。开发人员也可以在Windows下安装模拟Linux环境的软件(如Cygwin、虚拟机等)来开发。
交叉编译环境是一个由编译器、连接器和解释器组成的综合开发环境。交叉编译工具主要包括针对目标系统的编译器gcc、目标系统的二进制工具binutils、目标系统的标准c库glibc、gdb代码调试器和目标系统的Linux内核头文件。
4.2 引导程序
一个嵌入式软件系统通常可以分为引导程序BootLoader、操作系统内核、文件系统和用户程序4个层次。
BootLoader和PC机中的BIOS很相似,整个系统的加载启动任务完全由它来完成。BootLoader是在操作系统内核或用户应用程序运行之前运行的一段小程序,可以初始化硬件设备,建立内存的映射图,从而将系统的软硬件环境带来一个合适的状态,为最终调用内核和应用程序准备好正确的环境。大多数BootLoader都包含两种不同的操作模式:启动加载模式和下载模式。
BootLoader的启动过程大多数分两个阶段,第一阶段主要包含依赖于CPU的体系结构硬件的初始化代码,通常是用汇编语言实现的,这一阶段任务是硬件设备初始化,为加载BootLoader的阶段2准备RAM空间,拷贝BootLoader阶段2的代码到RAM中,设置好堆栈,跳转到阶段2的C程序入口。阶段2通常是用C语言来实现,这阶段任务是初始化本阶段要使用的硬件设备,检测系统的内存映射,将内核映像和跟文件系统映射从FLASH上读到RAM空间中,为内核设置参数,调用内核。
4.3 Linux操作系统的移植
Linux系统实际上由两个比较独立的部分组成,即内核部分和系统部分。Linux系统的移植分为内核移植和系统移植,内核可以视为由5个功能部分组成:进程管理、内存管理、设备管理、虚拟文件系统、网络。由于Linux内核良好的分层结构将硬件相关的代码独立出来,在做系统移植时,只需要改动进程管理、内存管理和设备管理中被独立出来的那部分与硬件相关的代码,开发者要将自己开发的代码加到Linux内核中,需要确定代码放入到内核的位置,了解Linux的内核配置系统,把开发功能增加到Linux的配置选项中,使用户能够选择此功能。
4.4 应用程序的移植和调试
在开发环境和操作系统建立后,就可以开始应用程序的开发了,应用程序的开发一般先在宿主机上调试完成,然后下载到目标板,宿主机和目标板必须建立可靠的连接,连接主要方式是串口连接、网络连接和JTAG口连接。
Linux中可以使用应用程序资源非常丰富,可将现成的程序移植到嵌入式系统中,可以极大加快开发流程,提高开发效率。
调试应用程序:Linux包含一个gun调试程序gdb,它是一个用来调试C和C++程序的调试器。通过gdb还可以在程序运行时观察内部结构和内存的使用情况。
5 嵌入式Linux驱动程序开发
由于嵌入式设备硬件种类丰富,对于Linux系统的开发,很大工作量是为各种设备编写驱动程序。操作系统一般提供设备驱动程序来完成对特定硬件的控制,以建立应用程序和设备之间的抽象接口。设备驱动程序实际是处理和操作硬件控制器的软件,从本质上讲是内核中具有最高特权硬件的、驻留内存的、可共享的底层硬件处理例程。驱动程序是内核的一部分,屏蔽了硬件的细节,Linux操作系统将所有的设备全部看成文件,都纳入文件系统的范畴,并通过文件的操作界面进行操作。
5.1 驱动程序的开发过程
实现一个嵌入式Linux设备驱动的流程:
1) 查看原理图,理解设备工作原理。2) 定义设备号。3) 实现初始化函数,在驱动程序中实现驱动的注册和卸载。4) 设计所要实现的文件操作。5) 实现所要的文件操作调用。6) 实现中断服务,并用request-irq向内核注册。7) 编译该驱动程序到内核中,或者用insmod命令加载模块。8) 测试该设备,编写应用程序,对驱动程序进行调试。
5.2 模块化驱动程序
当谈到软件时,我们通常称执行态为内核空间和用户空间,模块是在内核空间中运行的,而应用程序则是在用户空间中运行。
Linux通过系统调用和硬件中断完成从用户空间到系统空间的控制转换。模块的作用就是扩展内核的功能,是运行在内核空间的模块化的代码,模块的某些函数作为系统调用执行,而某些函数负责中断。内核模块的一部分保存在Kernel中,另一部分在Modules包中,模块就像一个插件,内核提供一个插槽,在需要时,插入内核中使用,不需要时从内核拔出,这一切都由一个称作Kernel的守护进程自动处理。内核模块的这种动态加载具有以下优点:将内核映像的尺寸保持在最小,并具有最大的灵活性。这便于检验新的内核代码,而不需要重新编译内核并重新引导。
6 总结
本文对嵌入式系统设计的进行了深入浅出的探讨,分析了嵌入式系统的组成和特点,描述了嵌入式系统开发流程以及嵌入式Linux下驱动程序开发特点。
参考文献:
[1] 马忠梅,李善平,叶楠.ARM&Linux嵌入式教程[M].北京:北京航天航空出版社,2004.
嵌入式芯片是当前一些主流数码设备的核心部件,也是嵌入式系统的硬件基础。嵌入式系统是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。简单地说,嵌入式系统集系统的应用软件与硬件于一体,类似于PC中BIOS的工作方式,具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。
嵌入式芯片主要包括FPGA芯片(Field Programmable Gate Array 现场可编程门阵列),MCS-51系列芯片等等。本文主要介绍面向嵌入式芯片的指令测试系统。
一、系统架构
测试系统的主体是面向嵌入式芯片的人机交互界面。它为用户提供了检测芯片指令集的各种便捷操作。
为了更好的实现测试体系的各项功能,笔者在编写程序时,将测试系统人为的分成了几个模块。这些模块之间有着非常紧密的联系,每一步的实现都是下一步成功运行的基础。
测试体系的主体架构主要分为五个部分:
(一)源代码的输入与保存
用户可以通过编辑框输入代码,实现程序的编写。此外系统还为用户提供了编辑框的清空操作,并可以自动将编写的代码保存为.asm文件。
(二)源文件的读取与显示
用户可以将已经编写好的源文件读入系统,并对其进行编辑。
(三)交叉编译
系统对读入的源文件进行编译,期间用户可以自动配编译工具,编译完成后系统将自动报错。
(四)串口的输入输出
系统可以将用户指定的二进制文件送到串行口中,并发送至连接到PC端的8051芯片中。发送成功后,系统将显示已经发送的信息。
系统可以自动接收来自串口的消息,并显示在相应的列表框中。
(五)程序运行日志
系统在用户运行了测试体系之后,即程序的出口处,自动生成程序的运行日志,它为用户显示了程序运行的各项参数,例如程序运行时间,串口状态等。
此外系统为了使用户可以更加方便自如的使用本测试框架,在每一部分的实现过程中,都充分考虑了软件的灵活性,尽可能的让用户自主配置测试体系的各项参数。
二、系统设计
(一)整体性
作为嵌入式测试系统的人机交互界面,在其设计的过程中必然要形成一套完备的软件体系,即保证程序运行的整体性。这关系到整个测试系统的完整性和稳定性。
源代码输入和源文件读取部分主要是将指令集测试代码导入到系统中。交叉编译部分的工作是对导入系统的测试代码进行编译处理,以便用户对测试代码进行调试。串口检测部分是将编译通过的测试程序所生成的二进制文件以8位字符串的形式送入串口,经过开发板的运行以后,将结果通过串口输出到指定的LCD显示屏或PC上,从而验证测试程序的可执行性。程序运行日志是对整个程序运行的效率和稳定性向用户提供的反馈信息。
(二)灵活性
在保证程序运行的整体性的同时,为了使测试体系的使用更加的方便,提高测试体系进一步完善的空间,就必须保证各功能模块的灵活性。在源代码输入和源文件读取的部分,系统默认的输入程序是汇编程序,但用户也可以输入C程序,JAVA程序,XML程序等多种程序语言。同时,在交叉编译部分也可以通过调用不同的编译器和链接器对这些程序编译调试,这无形中将单一的面向嵌入式芯片的汇编编译器扩展为集C语言编译器,JAVA语言编译器和XML语言编译器等多种编译器于一体的集成编译环境,从而实现强大的编译功能。串口检测部分为用户提供串口参数的配置框,并支持串口信息的发送与接收,从而使测试体系具有了类似超级终端的串口通信功能,这也为用户对串口操作提供了极大的方便。
三、结束语
作为当前主流的数码产品的关键部件,嵌入式芯片必然会在未来的IT市场上占有越来越重要的地位。本文所探讨的嵌入式芯片测试系统正是基于这样的考量,不但从源代码的输入与保存,源文件的读取与显示,交叉编译,串口的输入输出和程序运行日志这五个模块来构建测试系统,而且还从程序设计的整体性和灵活性两个方面,对该系统进行了评测。未来的嵌入式系统和普通的计算机系统在微型化和小型化方面将会趋于一致,而测试系统也可以进一步扩展为对整个计算机系统进行相应的检测。希望测试系统能为嵌入式芯片的发展做出一定的贡献。
参考文献:
[1]胡振华.VHDL与FPGA设计[M].北京:中国铁道出版社,2003.
[2]陈荣,陈华.VHDL芯片设计[M].北京:机械工业出版社,2006.
中图分类号:TP274;TP3680
引 言
经过近几年的快速发展,嵌入式系统(Embedded System)已经成为电子信息产业中最具增长力的一个分支。随着手机、PDA,GPS、机顶盒等新兴产品的大量应用,嵌入式系统的市场正在以每年30%的速度递增(IDC预测),嵌入式系统的设计也成为软硬件工程师越来越关心的话题。
在嵌入式系统设计中,低功耗设计(Low Power Design)是许多设计人员必须面对的问题。其原因在于嵌入式系统被广泛应用于便携式和移动性较强的产品中,而这些产品不是一直都有充足的电源供应,往往是靠电池来供电的;而且大多数嵌入式设备都有体积和质量的约束。另外,系统部件产生的热量和功耗成比例,为解决散热问题而采取的冷却措施进一步增加了系统的功耗。为了得到最好的结果,降低系统的功耗具有下面的优点:
(1) 电池驱动的需要。在强调绿色环保时期,许多电子产品都采用电池供电。对于电池供电系统,延长电池寿命,降低用户更换电池的周期,提高系统性能与降低系统开销,甚至能起到保护环境的作用。
(2) 安全的需要。在现场总线领域,本安问题是┮桓霆重要话题。例如FF的本安设备,理论上每个网段可以容纳32个设备,而实际应用中考虑到目前的功耗水平,每个网段安装10个比较合适。因此降低系统功耗是实现本安要求的一个重要途径。
[JP2](3) 解决电磁干扰。系统功耗越低,电磁辐射能量越小,对其他设备造成的干扰也越小。如果所有的电子产品都能设计成低功耗,那么电磁兼容性设计会变得容易。[JP]
(4) 节能的需要。特别是对电池供电系统,功耗与电压的平方成正比即:P=V2fC+P┆static,б虼私谀芨为重要。
1 功耗产生的原因
[BT3]1.1 集成电路的功耗
目前的集成电路工艺主要有TTL和CMOS两大类,无论哪种工艺,只要电路中有电流通过,就会产生功耗。通常,集成电路的功耗主要有4个:
(1) 开关功耗。对电路中的电容充放电而形成,其表达式为:
(2) 静态功耗和动态功耗。当电路的状态没有进行翻转(保持高电平或低电平)时,电路的功耗属于静态功耗,其大小等于电路电压与流过电流的乘积;动态功耗是电路翻转时产生的功耗,由于电路翻转时存在跳变沿,在电路翻转瞬间,电流比较大,存在较大的动态功耗。目前大多数电路都采用CMOS工艺,静态功耗很小,可以忽略。起主要作用的是动态功耗,因此从降低动态功耗入手来降低功耗。
(3) 短路功耗。因开关时由电源到地形成的通路造成的,其表达式为:
(4) 漏电功耗。由亚阈值电流和反向偏压电流造成。目前大多数电路都采用CMOS工艺,故漏电功耗很小,可以忽略。
1.2 电阻的功耗和有源器件的功耗
通常为负载器件和寄生元件产生的功耗。有源开关器件在状态转换时,电流和电压比较大,将引起功率消耗。另外, CMOS电路中最大的功耗来自于内部和外部的电容充放电产生的功耗。
2 硬件低功耗设计
[BT3]2.1 选择低功耗的器件
选择低功耗的电子器件可以从根本上降低整个硬件系统的功耗。目前的半导体工艺主要有TTL工艺和CMOS工艺,CMOS工艺具有很低的功耗,在电路设计上尽量选用,使用CMOS系列电路时,其不用的输入端不要悬空,因为悬空的输入端可能存在感应信号,它将造成高低电平的转换。转换器件的功耗很大,尽量采用输出为高的原则。
嵌入式处理器是嵌入式系统的硬件核心,消耗大量的功率,因此设计时选用低功耗的处理器;另外,选择低功耗的通信收发器(对于通信应用系统)、低功耗的访存部件、低功耗的电路,目前许多通信收发器都设计成节省功耗方式,这样的器件优先采用。
2.2 选用低功耗的电路形式
完成同样的功能,电路的实现形式有多种。例如,可以利用分立元件、小规模集成电路,大规模集成电路甚至单片实现。通常,使用的元器件数量越少,系统的功耗越低。因此,尽量使用集成度高的器件,以减少电路中使用元件的个数,减少整机的功耗。
2.3 单电源、低电压供电
一些模拟电路如运算放大器等,供电方式有正负电源和单电源两种。双电源供电可以提供对地输出的信号。高电源电压的优点是可以提供大的动态范围,缺点是功耗大。例如,低功耗集成运算放大器LM324,单电源电压工作范围为5~30 V。当电源电压为15 V时,功耗约为220 mW;当电源电压为10 V时,功耗约为90 mW;当电源电压为5 V时,功耗约为15 mW。可见,低电压供电对降低器件功耗的作用十分明显。因此,处理小信号的电路可以降低供电电压。
2.4 分区/分时供电技术
一个嵌入式系统的所有组成部分并非时刻在工作,基于此,可采用分时/分区的供电技术。原理是利用“开关”控制电源供电单元,在某一部分电路处于休眠状态时,关闭其供电电源,仅保留工作部分的电源。
2.5 I/O引脚供电
嵌入式处理器的输出引脚在输出高电平时,可以提供约20 mA的电流,该引脚可以直接作为某些电路的供电电源使用,如图2所示。处理器的引脚输出高电平时,外部器件工作;输出低电平时,外部器件停止工作。需要注意,该电路需满足下列要求:外部器件的功耗较低,低于处理器I/O引脚的高电平输出电流;外部器件的供电电压范围较宽。
2.6 电源管理单元设计
处理器全速工作时,功耗最大;待机状态时,功耗比较小。常见的待机方式有两种:空闲方式(Idle)和掉电方式(Shut Down)。其中,Idle方式可以通过中断的发生退出,中断可以由外部事件供给。掉电方式指的是处理器停止,连中断也不响应,因此需要进入复位才能退出掉电方式。
为了降低系统的功耗,一旦CPU处于“空转”,可以使之进入Idle状态,降低功耗;期间如果发生了外部事件,可以通过事件产生中断信号,使CPU进入运行状态。对于Shut Down状态,只能用复位信号唤醒CPU。
2.7 智能电源设计
既要保证系统具有良好的性能,又能兼顾功耗问题,一个最好的办法是采用智能电源。在系统中增加适当的智能预测、检测,根据需要对系统采取不同的供电方式,以求系统的功耗最低。许多膝上型电脑的电源管理采用智能电源,以笔记本电脑为例,在电源管理方面,Intel公司采取Speed Step技术;AMD公司采取Power Now技术;Transmeta公司采取Long Run技术。虽然这三种技术涉及到的具体内容不同,但基本原理是一致的。以采用Speed Step技术的笔记本电脑为例,系统可以根据不同的使用环境对CPU的运行速度进行合理调整。如果系统使用外接电源,CPU将按照正常的主频率及电压运行;当检测到系统为电池供电时,软件将自动切换CPU的主频率及电压至较低状态运行。
2.8 降低处理器的时钟频率
处理器的功耗与时钟频率密切相关。以SAMSUNG S3C2410X (32 b ARM 920T内核)为例[8],它提供了四种工作模式:正常模式、空闲模式、休眠模式、关机模式,各种模式的功耗如表1所示。[HJ1][HJ]
由表1可见,CPU在全速运行的时候比在空闲或者休眠的时候消耗的功率大得多。省电的原则就是让正常运行模式远比空闲、休眠模式少占用时间。在类似PDA的设备中,系统在全速运行的时候远比空闲的时候少,所以可以通过设置,使CPU尽可能工作在空闲状态,然后通过相应的中断唤醒 CPU,恢复到正常工作模式,处理响应的事件,然后再进入空闲模式。因此设计系统时,如果处理能力许可,可尽量降低处理器的时钟频率。
另外,可以动态改变处理器的时钟,以降低系统的总功耗。CPU空闲时,降低时钟频率;处于工作状态时,提高时钟频率以全速运行处理事务,实现这一技术的方法。通过将I/O引脚设定为输出高电平,加入电阻R1,将增加时钟频率;将I/O引脚输出低电平,去掉电阻R1,可降低时钟频率,以降低功耗。
2.9 降低持续工作电流
在一些系统中,尽量使系统在状态转换时消耗电流,在维持工作时期不消耗电流。例如,IC卡水表、煤气表、静态电能表等,在打开和关闭开关时给相应的机构上电,开关开和关状态通过机械机构或磁场机制保持开关的状态,而不通过电流保持,可以进一步降低电能的消耗。[JP]
3 软件低功耗设计
3.1 编译低功耗优化技术
编译技术降低系统功耗是基于这样的事实:对于实现同样的功能,不同的软件算法,消耗的时间不同,使用的指令不同,因而消耗的功率也不同。对于使用高级语言,由于是面向问题设计的,很难控制低功耗。但是,如果利用汇编语言开发系统(如对于小型的嵌入式系统开发),可以有意识地选择消耗时间短的指令和设计消耗功率小的算法来降低系统的功耗。
3.2 硬件软件化与软件硬件化
通常的硬件电路一定消耗功率,基于此,可以减少系统的硬件电路,把数据处理功能用软件实现,如许多仪表中用到的对数放大电路、抗干扰电路,测量系统中用软件滤波代替硬件滤波器等。
需要考虑,软件处理需要时间,处理器也需要消耗功率,特别是在处理大量数据的时候,需要高性能的处理器,这可能会消耗大量的功率。因此,系统中某一功能用软件实现,还是用硬件实现,需要综合计算后进行设计。3.3 采用快速算法
数字信号处理中的运算,采用如FFT和快速卷积等,可以大量节省运算时间,从而减少功耗;在精度允许的情况下,使用简单函数代替复杂函数作近似,也是减少功耗的一种方法。
3.4 软件设计采用中断驱动技术
一、概述
如今,数量众多的车辆都嵌入了GPS。作为车载模块,GPS可以相对有效地储存一些静态兴趣点(staticPointsOfInterest)的位置信息(如家庭,公司和商场信息等等)。然而,GPS还不能获得更多的信息用来判定一些动态兴趣点(dynamicalPointsOfInterest)的位置信息(如动态的车辆信息,路人信息或动态的车位空闲状态信息)[1]。随着嵌入式技术的发展,越来越多的感知模块也被嵌入到车辆当中,用以辅助提升整车的智能化。我们可以将车辆的GPS模块和摄像模块进行整合再开发,用以侦测动态的兴趣点。更进一步的,借助诸如车载自组网等类似技术,将分散用户采集的数据快速有效收集至云端处理,进而分析得出实时的空闲车位,事故状况等详细信息可以被共享给更多用户。
二、理论设计
首先,装备了车载摄像系统的车辆负责采集原始图像,并搜寻最佳的数据链路将图像数据传送至路边基站(RSU:RoadSideUnit)。图像信息再由RSU转送至云服务器(CCS:CloudComputingSystem)。根据客户不同的需求,实时的图像可以被分类解析出不同的结果,以满足不同的需求。系统可用于寻找可用的空闲车位。车辆巡弋道路的同时,通过摄像模块捕捉街景用以搜寻可用的空闲停车位(图中扇形探索区域),通过GPS模块采集地理位置等相关信息。这些图像信息经由RSU被上传至CCS,云端程序将对图像进行分析,并据此更新数据库中可用空闲车位的时间和位置。在客户端,那些激活车位搜寻功能的车辆可以接收到实时的信息,并由系统引导至可用的停车位。
三、系统实现
为协助客户搜寻目标车辆和目标人物,描述了数据传输和数据分析的过程:车载端完成对图像的实时采集、地理坐标的标注和图像的加密压缩;路边基站RSU接收车载端的数据,并将这些数据合理上传至CCS;在CCS中,数据首先需要被解密解压,而后车牌的识别,人脸的识别等相关算法可以对数据进行处理分析,再由各自动化脚本对处理所得的结果,进行数据比对和数据库更新的工作。整个车载端模型以RaspberryPi微处理器为中心,扩展以摄像模块进行图像采集,GPS模块地理位置采集,以及电源、网卡等其他模块。RSU将由两台PC进行模拟,多个自动化脚本进行网络配置、文件管理和流量控制。图像信息将经由此上传至CCS。CCS采用AmazonElasticComputeCloud实现,服务器将配置数据库、网页服务器和文件管理等诸多系统,同时核心的图像解析程序,也将由服务器自动调用,并根据处理结果,更新数据库信息。图像处理部分,使用C#语言和Emgu库解析图像,提取人脸信息,读取车牌信息。车载端将拍摄的街景经由RSU上传至云端,云系统将对采集的图像数据进行分析。之后,系统将解析出的人脸和车牌,与客户所要搜寻的目标进行比对,反馈一组可能的人或车辆,以及相应的地理位置和时间信息。如果某一目标得到客户的确认,则根据其GPS信息和时间标签等数据,系统会将目标出现的轨迹绘制在以GoogleMap为基础的网页上。
四、结束语
文中设计了一款新颖的道路监控系统构架,据此完成了实验室模型,并为模型开发了车牌识别和人脸读取的应用。通过这些实践,表明了该理论设计可以支持对动态兴趣点的检测和定位。
参考文献:
[1]曹冲.国内外车载GPS系统的应用现状和发展趋势[J].全球定位系统,2000(01):4-8.
[2]ObstM,HobertL,ReisdorfP.Multi-sensordatafusionforcheckingplausibilityofV2Vcommunicationsbyvision-basedmultiple-objecttracking[C]//VehicularNetworkingConference(VNC),2014IEEE.IEEE,2014:143-150.
[3]PauG,WengJT,GerlaM.Pics-on-wheels:Photosurveillanceinthevehicularcloud[C]//2013InternationalCon-ferenceonComputing,NetworkingandCommunications(ICNC).IEEEComputerSociety,2013:1123-1127.
[4]SharefBT,AlsaqourRA,IsmailM.Vehicularcommu-nicationadhocroutingprotocols:Asurvey[J].JournalofNetwork&ComputerApplications,2014,40(2):363-396.
中图分类号:TP311.52 文献标识码:A 文章编号:1007-9416(2012)05-0151-01
1、嵌入式系统的特点以及实现方法
嵌入式系统的主要特点如下:嵌入式系统的硬件和软件的紧密结合,具有很强的依赖性之间的软件和硬件,嵌入式系统的功能和性能通过软件和硬件来实现。因此,在硬件平台上的嵌入式软件系统的测试。在硬件,嵌入式软件系统测试。这是一个不同的主机平台上的软件,只能在电脑平台的主机平台软件系统测试,不需要专门的硬件平台测试。嵌入式系统的要求非常苛刻的时间。嵌入式系统,实时控制系统,为要求苛刻的实时场合。嵌入式系统的硬件资源有限,存储容量和速度的嵌入式CPU和应用环境的制约。
软件测试的方法可以分为黑盒测试和白盒测试两大类:黑盒测试是一种基于需求的测试,以验证测试软件是否满足软件的需求。白盒是基于结构的测试,软件控制流测试包括语句覆盖,分支覆盖,等等和数据流测试。覆盖测试原理是:测试软件,测试工具的使用静态分析,以确定代码中的分支点,并统一编号,分配给每个分支点。计划执行的历史信息和路径,你可以从这份文件中,为了计算的代码覆盖率。嵌入式软件与主机平台上的软件有不同的特点,所以从主机平台软件测试,测试也明显不同。
2、嵌入式系统的应用
嵌入式系统为中心,基于计算机技术,利用可定制的功能性,可靠性,成本,体积,功耗严格要求,设备专用计算机系统111硬件和软件。它一般由嵌入式微处理器,硬件设备,嵌入式操作系统和用户应用程序,控制其他设备,监事或管理由四部分。最典型的嵌入式系统的特点是与人民生活密切相关的,任何一个普通的人可能有各种使用嵌入式微处理器技术的电子产品,MP3,PDA等数字设备,数字家电,智能家电,地理信息系统的车辆。事实上,新的嵌入式设备的数量远远超过通用计算机。其硬件系统表现如右:
嵌入式操作系统和通用操作系统有许多功能,如可靠性,可削减,可扩展性,实时等。前三嵌入式应用环境的要求。“实时”,以满足系统内容的实时性要求。通常在一些嵌入式操作系统,通常被称为“实时操作系统,但它是操作系统的性能有一个更好的实时能力。在一个特定的嵌入式应用系统中,没有实时的结论。不同的嵌入式操作系统,可以有不同的实时能力。嵌入式操作系统应符合设计实时任务调度,运行速度快,实时性能的内容嵌入式操作系统的能力,可以更容易地实现实时的应用程序。
3、应用航天业的条件和发展
今天的软件和硬件技术的发展,嵌入式系统被广泛用于航空航天,国防,军工,电子通讯等行业,其中软件变得越来越复杂。应用嵌入式系统的特点,这些地区往往是高安全性,关键任务系统,软件,小缺陷可能会严重威胁生命和国家安全的,巨大的天文财产损失。这使得它保证嵌入式软件的质量和可靠性变得至关重要。
4、航天业的应用条件
嵌入式系统的任务有一定量的时间限制。据截止时间,实时系统,实时被分为“硬实时时间”和“软实时”。可以完全满足硬实时应用的需求,否则,导致发生重大安全事故,甚至造成了生命和生态破坏。
可预见性是一个系统,能够实时执行任务的时间来判断,以确定它是否能满足任务的期限。在航空航天工业实时系统需要严格的时间限制,称为实时系统的可预测性是一个重要的性能要求也至关重要。除了硬件延迟的可预见性,也需要软件系统的可预测性,包括应用程序的可预测性的响应时间可预测的,也就是说,在有限的时间内完成必要的工作;和操作系统,即实际运行时的开销时间原语,调度功能应范围内,以确保应用程序的执行时间为界。
5、与外部环境的相互作用
航天业需要的外部环境是独一无二的,这样的外部环境是一个实时系统不可或缺的组成部分。空间计算机子系统控制系统,它必须在规定时间内作出回应外部请求。外部物理环境经常指责子系统,两个互动,以形成一个完整的实时系统。为此,该系统需要一个静态的分析,并保留资源和冗余配置,系统可以工作在最坏的情况下,或避免损失。可靠性已成为航空航天工业的实时系统性能不可缺少的一个重要指标来衡量。
6、结语
随着嵌入式系统的广泛使用,其实时性已经吸引了越来越多的关注。实时嵌入式系统是一个综合性的问题,应考虑在嵌入式系统设计,硬件不仅是软件的选择也应注意。在这些领域的嵌入式系统应用的特点,往往是高安全性,关键任务系统,软件,小缺陷可能会严重威胁生命和国家安全的一个巨大的天文数字的财产损失。这使得它变得至关重要,以确保嵌入式软件的质量和可靠性。
参考文献
[1]谢东,李昌禧.基于LabVIEW的嵌入式软件黑盒测试系统的研究[J].工业控制计算机,2005年12期.
[2]杨顺昆,刘斌,陆民燕.WindowsNT下几种定时器的实现原理及性能比较[J].测控技术,2002年12期.
[3]崔小乐,刘斌,钟德明,阮镰,高小鹏.实时嵌入式软件仿真测试平台的体系结构设计[J].测控技术,2003年07期.
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)32-7230-02
随着电子信息技术的发展,计算机在不同领域中得到了广泛的应用,人们根据不同领域的实际需求,针对性的开发了具有相应功能的软件,从而提高实际的工作效率,但是在计算机出现的早期,受到其体积和性能上的限制,其应用的范围很小,随着晶体管和集成电路的出现,计算机的体积和性能得到了极大的提升,从计算机的发展可以看出,每次技术的更新,都是为了减小其体积,同时提高其性能。计算机的出现是革命性的,由于其能够自行的处理任务,如果应用在实际的工业生产中,就能够实现生产的自动化,这也是近些年计算机应用发展的方向,但是通过实际的调查发现,计算机在应用的过程中,虽然经过了多年的发展,出现了笔记本电脑,在体积上得到了极大的控制,但是在工业控制领域中,这样的体积依然很庞大,在这种背景下,人们发明了单片机这种微型计算机,并在工业控制中得到了广泛的应用。
1 嵌入式架构简述
1.1 嵌入式架构的概念
嵌入式架构是随着计算机的发展,逐渐形成的一门学科,现在很多高校中,都开设了这门课程,为社会培养大量的相关人才,学生在毕业后,能够掌握到充足的嵌入式架构知识,从而能进行计算机系统的设计,我国受到特殊的历史因素影响,经济和科技发展的起步较晚,与西方发达国家相比,存在较大的差距,尤其是在电子信息领域。虽然近年来随着国家的重视,出台了很多优惠的政策法规,鼓励和扶持我国相关产业的发展,经过了多年的发展,现在我国嵌入式架构的研究,已经得到了很大的提高,但是通过实际的调查发现,嵌入式架构使用的单片机等设备,目前还都是国外的公司生产的,我国技术人员在完成系统的开发后,都需要采用国外的设备,由于我国一直受到西方国家的技术封锁,很多先进的设备都无法进口,在很大程度上影响了我国嵌入式架构的发展。对于嵌入式架构的概念,国际电气和电子工程师协会给出了具体的解释,是控制、监视等辅助设备工作的系统,目前对于嵌入式架构的理解,主要基于计算机技术,一般情况下,可以把带有控制程序的处理器,看成是一个嵌入式架构,在不同的时期,人们对于嵌入式架构概念的理解,也存在一定的差异,但是从根本上来说,都是为了更好的使用嵌入式系统。
1.2 嵌入式架构的特点
与传统的计算机技术相比,嵌入式架构具有鲜明的特点,首先就是体积更小,在嵌入式架构出现的早期,主要是在计算机的基础上,进行系统的开发,但是随着相关技术的发展,嵌入式架构自身有了很大的进步,尤其是单片机等微型计算机的出现,使得其应用的范围更加广泛,从某种意义上来说,单片机的出现,就是由于嵌入式架构应用的需要。其次嵌入式架构具有控制的特点,随着电子信息化的发展,很多机械设备都采用了智能芯片,通过这些芯片的使用,可以写入特定的控制程序,从而达到相应的控制目的,近几年软件技术有了很大的发展,尤其是在人工专家模块出现后,计算机软件可以实现一定的智能化,在遇到一些问题时,可以通过检索以前的经验,对问题自行进行处理,如果将这个技术应用到嵌入式架构中,就可以实现工业生产的自动化控制。从根本上来说,工业的自动化控制技术,就是在单片机等微型计算机的基础上发展起来的,而单片机的使用,大多都是在嵌入式架构,通过硬件和软件的针对性设计,可以最大程度的提高单片机应用的效率。
2 单片机系统设计的现状
2.1 单片机系统设计的发展
单片机的出现,主要是由于实际应用的需要,传统的计算机受到体积上的限制,虽然在很多领域中得到了应用,但是在实际的工业生产中,要想对生产过程中的每个环节进行控制,必须将所有的环节通过特定的方式连接起来,然后设置一个中央服务器,通过硬件和软件等方式,对生产进行实时的控制,只有这样才能够最大程度提高生产的效率。由此可以看出,单片机系统的发展,可以分成硬件和软件两个部分,而这两个部分都受到计算机技术的影响,尤其是软件方面,在初期使用机器语言进行编程时,还没有单片机的出现,而汇编等低级语言使用,单片机程序的编写,也采用这些低级语言,随着计算机软件技术的发展,逐渐的出现了C语言等高级语言,相应的单片机系统设计,也开始使用这些高级语言,极大的提高了软件编写的效率。单片机系统硬件的发展,由于其出现和发展都在西方发达国家,而且由于社会和经济的体制不同,这些国家对我国一直存在技术上的封锁,因此我国很难接触到先进的单片机系统知识,在很大程度上影响了我国单片机技术的发展,目前使用的单片机设备,都是国外公司生产的,而且一些最新的单片机,对我国还存在进口的限制。
2.2 单片机系统设计中存在的问题
单片机从出现开始,到现在已经使用了多年,在应用的过程中,其自身的理论在不断的完善,通过单片机系统的使用,可以轻松的实现工业生产的自动化,进而提高生产的效率,正是由于单片机系统的这个特点,使得每个企业都希望能够通过这样的方式,来提高自身的生产效率,但是在实际应用的过程中,不同公司加工的产品不同,生产设备也存在一定的差异,如果使用同样的单片机系统,显然无法最大程度的提高生产效率。因此现在单片机系统的使用,都会根据实际的需求,对单片机系统的功能,进行针对性的设计,但是通过实际的调查发现,目前单片机系统设计中,还存在着一些问题,使得设计的系统不是很完善,在实际使用的过程中,经常会出现一些漏洞,影响产品的加工效率,由于单片机系统设计可以分成软件和硬件两个部分,因此对系统设计存在的问题,也可以从这两个方面进行分析。首先就是硬件性能不合格,在设计完实际的电路后,对各个元器件的性能,都有具体的要求,如果这些器件的性能达不到相应的指标,那么电路显然就无法正常的运行,其次就是软件设计的不完善,由于软件自身的特殊性,无法编写出完美的程序,程序自身越复杂,存在的漏洞也就越多,如果在程序编写完成之后,没有经过科学的测试,那么在应用时,就可能会出现问题。
3 基于嵌入式架构的单片机系统设计分析
3.1 基于嵌入式架构的单片机系统硬件设计
在单片机出现的早期,由于还没有形成嵌入式架构的概念,因此在实际的系统设计中,而且单片机系统的使用,都是对现有的生产线进行改进,通过在生产设备上增加一些线路,然后用单片机对其进行控制,在这种模式下,硬件设备的选择,主要是根据环境来进行,对硬件设备的体积要求比较严格。随着硬件设备的发展,现在生产单片机的公司有很多,可以实现同样功能的元器件有很多,而自动化技术的出现,使得生产线在设计的过程中,会根据控制的需求,进行相应的变化,这种单片机系统使用方式上的转变,极大的促进了其应用的发展,为了达到更高的控制效率,人们将单片机放到生产线的每个环节中,然后将这些单片机连接到一个服务器上,就能够实现对生产的全面控制。现在单片机系统设计中,首先进行的就是硬件上的设计,通常情况下,会根据生产的实际情况,对控制的功能进行需求分析,单片机系统硬件的设计,会和生产线的硬件设计同步进行,如果控制系统的硬件出现问题,可以根据需要,对生产线进行一定的修改。
3.2 基于嵌入式架构的单片机系统软件设计
嵌入式系统与传统的应用方式相比,最明显的特点就是多了辅助设备,如以往应用计算机的过程中,都是计算机的单独使用,人们直接利用计算机来处理一些问题,或者利用计算机来控制某些设备的工作,没有任何的辅助设备,而嵌入式架构下,需要借助单片机等设备,如一条生产线通常包括多个加工工艺,如果采用计算机的统一控制,就无法实现对每个环节的单独控制,而利用单片机系统,在每个加工环节中,都嵌入一个单片机,然后将这些单片机连接到一个计算机服务器中,就可以实现局部的控制。而要想完成这个过程,就要通过相应的软件功能,对于同样的单片机系统,如果根据实际应用的需要,设计不同的程序,能够实现不同的控制功能,由此可以看出,软件设计是单片机系统工作的核心。
4 结束语
作为以计算机为基础的技术,嵌入式架构的发展,很大程度上受到计算机技术的影响,如在计算机刚出现时,由于其性能比较,甚至还不如现在的电子计算器,因此实际的应用很少,只是在实验室中进行科研使用,但是人们从计算机的特点能够看出,随着技术的进步,将来计算机一定会得到普及应用。在这种背景下,很多专家和学者对计算机进行了研究,通过大量的实践,极大的推动了计算机的发展,于是计算机越来越多的用来处理实际问题,为了提高控制的效率,人们对程序进行了完善,经过全文的分析可以知道,嵌入式架构和单片机的出现,都是由于实际应用的需要,而单片机在实际应用的过程中,还存在很多问题,如果能够采用嵌入式架构,那么就能够极大的提高单片机系统的使用效果。
参考文献:
[1] 金玉涛,马军勇.基于80C52的三相可控整流电路触发脉冲的实现[J].河南教育学院学报:自然科学版,2007(3):37-39.
[2] 何兵.基于MCS-51单片机的步进电机正反转控制实现[J].泸州职业技术学院学报,2008(1):56-59.
热插拔的概念来源于我们的桌面PC,其一般定义为将设备板卡或模块等带电接入或移出正在工作的电脑[1]。嵌入式系统中的热插拔是指对正在运行的嵌入式电路板,在不关闭电源情况下对某些部件进行插入(连接)或拔出(断开)操作。下面要谈的正是在一个嵌入式单片机系统中对其扩展部件或板卡的硬件热插拔技术,将根据接口上的信号类型等探讨热插拔的危害产生原因及防止危害发生的一般性措施。本文以下部分将把要插拔的两块电路板分别称为主电路板(正在运行的嵌入式主电路板)和扩展板。
一、热插拔设计的重要性
对正在工作的电路板进行热插拔通常都是不被许可的,但在有些时候却是难于避免的,比如使用者疏忽或特殊功能要求等。对未采取任何保护措施的嵌入式电路板进行热插拔操作,其将带来的损害通常是很严重的,包括电源电路损坏,单片机IO口烧坏,单片机复位或死机,或者与接口相连的IC出现部分或全部管脚烧坏等。这些故障将导致嵌入式电路板产生永久性损害,或在重新上电之前系统无法再正常工作。因此,在嵌入式系统的扩展接口设计中加入一定的热插拔保护措施是十分必要的。热插拔操作对嵌入式电路板的危害通常表现在三方面:过电流冲击、瞬态过电压、静电释放[1]。进行热插拔设计的目标应是在不增加太多硬件成本的前提下,使设计出的电路板不因热插拔操作造成系统复位、死机或对元器件产生永久性损害。
二、电源与地接口的防过电流冲击热插拔设计
当把扩展板插入正在工作的嵌入式主电路板中时,扩展板上的各类电容和IC需要瞬间从主电路板的电源处上吸走大量电荷,给电源造成一个短暂的低阻抗路径,造成一次浪涌电流[1]。此浪涌电流可以把系统电压拉低到系统重置阈值以下,造成单片机复位,甚至烧毁电源电路。在硬件设计时通常采取如下措施进行应对:
1.在扩展接口的电源网络上使用大容量电容(可以用并联方式获得)减轻扩展板上电过程中对主电路板电源电压的影响。主电路板电源电路中的电容量最好要比扩展板的蓄能电容量之和稍大。
2.在扩展接口的电源网络上串入电源专用的磁珠以减少上电瞬间的电流尖峰,并阻断高频噪声信号的干扰。
3.如果浪涌电流特别大并且系统允许复位,为保护主电路板上的电源电路可以考虑在电源入口处加自恢复保险丝让电源在过流瞬间自动切断。如果系统对热插拔时的稳定性要求更高可以使用目前市面上的专用热插拔控制器LM5069等,这些器件具有功率和电流限制的能力[2]。
在热插拔操作时为提高设备的热插拔寿命,热插拔动作应避免来回抖动,并且两次热插拔之间的时间间隔不要太短;如果扩展板的负荷可以先行卸除,最好不要带负荷进行热插拔。
三、电源与地接口的防过电压冲击热插拔设计
进行热插拔操作前不同设备的接口之间可能存在一定的电位差,尤其是使用了隔离电源或共模电感的“浮地”系统。虽然这类电位差是瞬间的且没有多大的电流能力,但此电位差通常会超出各类IC的最高工作耐压而损坏IC。如果在热插拔同时还伴随着静电释放,在接口接触瞬间产生的过电压和过电流冲击会更加厉害,可以瞬间烧毁电路板中脆弱环节上的IC。应对此类危害的唯一办法是快速钳位电压,即在接口附近的电源与地之间以及比较脆弱的信号与地之间使用具有浪涌能量吸收能力和内部散热能力的压敏电阻或TVS管之类的浪涌电压抑制器等保护措施。
四、电源与地接口在结构上的热插拔设计
现在CMOS器件已经在各种电路上广泛使用,CMOS器件的一个缺点是容易产生闩锁效应而烧毁。在热插拔过程中VCC和GND的突然变化或者芯片I/O口电压超出VDD-GND的范围时很容易发生闩锁效应。如果接口结构设计不合理造成在热插拔过程中I/O口信号已经连接上而GND或VCC还没有连接上,这时极易发生闩锁效应而烧毁芯片。因此,在接口结构设计时必须保证接口在带电插入过程中要先让GND和VCC连接上再连接I/O口;反之在带电拔出过程中则需要先拔出I/O口再断开VCC和GND。在实际应用时可以采取如下措施:把GND和VCC放在接口两端、并在接口上多放几个GND信号,或者把GND和VCC的插针做得比其它信号插针稍微长些等。图一是按一般热插拔要求设计的一款主电路板电源与地的接口实例。
五、常见信号接口的热插拔设计
对嵌入式电路板上单片机的片上外设(on-chip peripheral)类信号口(比如SPI输出口),通常其耐电压和电流冲击能力并不是很强,如果需要把这些信号接口在电路板上扩展出去最好先把这些信号经过外部逻辑门电路处理后(比如两次反相)再接到扩展接口上。
对耐电压和电流冲击能力较强的单片机GPIO信号接口可使用阻容电路进行简单保护。其中的电阻能起到限流作用,电阻值可根据信号辨识的需求选在几欧到几百欧之间;而对地的小滤波电容则能起到滤除瞬间电压尖峰的作用,电容值可根据信号线上传递的信号频率特性选在几百pF到几nF之间。
对比较脆弱而又关键的重要信号接口(比如SPI输入口、并行总线接口等)可以在信号端口与电源和地之间使用双向二极管对信号电压进行精准钳位。这样可确保此类接口上的电压不会超出芯片的工作电压范围,能起到非常好的保护作用。图二是一款常见信号接口的热插拔设计实例(电源和地部分参见图一)。
嵌入式系统电路的接口热插拔设计通常是一个反复和复杂的过程。在设计时通常需要通过热插拔实验把接口电路中的脆弱环节找出来,然后采取针对性的措施进行应对,要做到既不增加太多硬件成本又能满足一般的热插拔需要。热插拔问题是各类电子设备中都会面临到的一个问题,本文探讨的热插拔设计技术在电路设计中具有一定的现实意义。
参考文献
[1]凌有慧,张胡.热插拔的硬道理[J].微型计算机,2003(23):107-111.
[2]National Semiconductor Corporation.LM5069 Positive High Voltage Hot Swap/Inrush Current Controller with Power Limiting data sheet,2008.
一、硬件的低功耗设计
1、硬件电路器件
程序编写后实现功能需要硬件电路的参与,因此硬件部分是电路设计的重点,也关系到嵌入式模块功能是否能够实现。电路中的电子元器件如果设计不合理或者焊接误差,会导致使用阶段断连情况发生,目前多用集成技术来解决这些耗能隐患。CMOS技术应用后使硬件电路的连接形式更合理,控制模块运转阶段的能源损耗量被控制在了标准范围内,流经电流如果出现异常变化,会调整稳定后再流入到电路中。由于现在绝大部分电路均采用集成电路CMOS工艺技术,这与以前的TTL工艺相比,本身就已经起到了降低电子元器件和整体系统功耗的作用,因此,应该继续多采用CMOS集成电路工艺技术。另外,由于采用CMOS集成工艺技术,其电路静态功耗很小(可忽略不计),而动态功耗较大,因为动态功耗是指电路高低电平翻转时产生的功耗,在电路高低电平翻转跳变沿期间,电流很大,存在较大功耗,所以,降低硬件电路功耗主要是降低电路动态功耗。
2、低功耗器件的选用
实现低功耗还要对电子器件进行挑选,对比不同类型元器件的节能指标,低功率环境下对器件的损害程度更小,在安全使用年限内也不会发生功率损耗过大的现象。嵌入式技术中硬件部分设计与软件程序编写都同等重要,器件选择时如果无法确定标准,可以采用试验的方法来帮助计算功率损耗情况,对比阶段也更容易进行,在这样的环境下,嵌入式技术应用才能达到预期的目标。完成同样的功能,电路的实现形式有多种。例如,尽可能地将嵌入式系统的内部存储器RAM转换为外部的闪存FLASH,因为在同样条件下,读内部RAM比读外部FLASH会带来更大的功耗。也可以利用分立元件、小规模集成电路,大规模集成电路甚至单片实现。通常使用的元器件数量越少,系统的功耗越低。因此,应尽量使用集成度高的器件,以减少电路中使用元件的个数,减少整机的功耗。
3、微处理器的选择
微处理器能够起到对治理程序控制的发现不合理现象也要及时采取调控方法,处理器运行阶段损耗的功率比较大,也是节能设计期间重点优化的部分。选择时首先要判断功能是否能够达到标准,在此前提下进行后续损耗的对比分析。要有明确的额定功率,这样在损耗控制时技术应用才更顺利,技术应用形成并不是固定的,可以根据实际使用需求对技术方法进行组合应用,将损耗降至最低。仅消耗少部分电能便能够实现系统的高效运行,功能实现的流程也更合理,是嵌入式设计时首要遵从的标准。并且高效率的处理器都提供有多种时钟频率和工作电压的选择,以便于最大限度地节约功耗。此外,在进行系统设计时,在工作电压相差不大和系统处理能力许可的情况下,还应尽可能降低微处理器的时钟频率,现以起到节能的作用。以SAMSUNGS3C2410(32位ARM920T内核)为例,它就提供了四种工作模式:正常模式、空闲模式、休眠模式、关机模式。
二、软件的低功耗设计
1、优化编译器
控制程序在运行使用过程中,要定期检验,观察控制功能是否高效实现,并对使用中常常出现误差的部分进行调节控制,编译器模块是实现调控功能的部分,在此过程中,会涉及到频繁的计划变动,经过多次试验后最终确定的编译模式应用后才不会出现误差。但是,在某些情况下,这样会影响程序的执行性能。编译器的有效性以及它所生成的代码效率,可以与汇编语言代码相比较得出。事实上,在一个程序中,每一条指令都将激活微处理器中的某些硬件部件,因此,正确选择指令可以降低处理器的功耗。通过优化编译器可以进行有效的软件低功率化,从而生成效率更高的代码,以降低嵌入式设备的功耗。
2、采用软件代替硬件电路
软件与硬件相比较功能更加丰富,也能在工作任务开展阶段形成更稳定的控制体系。因此采用软件来对复杂的电路进行更换,才是更高效合理的,使用功能不受到影响的前提下达到降低功耗的目标,这样的处理形式符合嵌入式设计标准。一般的硬件电路都存在功耗,所以,可以把具有数据运算处理功能的硬件电路用软件来实现,例如滤波电路,指数、对数运算电路、抗干扰电路等。但是,任何事情都不是绝对的,部分硬件电路到底能否通过软件来实现,此外,还要考虑处理大量的软件数据,需要提高处理器的性能和功耗等,同时要考虑这是否合算。
3、中断驱动技术设计
把整个嵌入式系统软件设计成多个事件来处理,而在系统上电初始化时,主程序只进行系统的初始化(包括寄存器、外部设备等),初始化完成后,进入低功耗状态,然后把CPU控制的设备都接到中断输入端上。当外设发生了一个事件,即产生中断信号,使CPU退出节电状态而进入事件处理,事件处理完成后,继续进入节电状态。在嵌入式程序设计时,一个程序到底使用中断方式还是查询方式,对于一些简单的应用并不那么重要,但在其低功耗特性上却相去甚远。使用中断方式,微控制器可以什么都不做,甚至可以进入等待模式或停止模式;而在查询方式下,微控制器必须不停地访问寄存器,这会带来很多额外的功耗,所以,用软件进行设计时,除非系统本身已要求采用查询方式,否则应尽可能采用中断方式进行编程。
4、定时器延时程序的采用
当软件设计中需要用到延时程序时,设计人员应多使用定时器延时方法来进行设计。这是因为,通常嵌入式处理器进入待机模式后,CPU会停止工作,而定时器可以正常工作,由于定时器的功耗很低,故当处理器调用延时程序后,嵌入式系统便可进入待机模式,此时定时器可以继续工作,定时时间一旦结束,即可唤醒CPU重新进入工作,这样不但降低了CPU功耗,还提高了CPU的工作效率。而如果采用查询方式,则CPU会不断地对系统进行查询,由于CPU时刻工作,这样不但效率低下,同时处理器功耗也很大。
5、算法优化
优化算法多出现在嵌入式DSP中,采用大量现成的公式和计算方法,可以节省系统内部运算的时间,减少功耗;另外,在嵌入式系统允许的误差情况下,也可以近似用比较简单的函数来取代复杂函数进行运算,从而减少功率消耗。
结语:嵌入式系统的设计涉及到硬件设计和软件设计两个方面,在实际系统应用时,低功耗的设计并非是单方面的因素,需要综合考虑各种可能的原因、条件和状态,应把硬件设计和软件设计综合起来进行考虑,并对细节进行认真的分析,同时对多种可能的方案和方法进行计算和总结,这样才可能取得较为满意的效果,最终达到降低系统功耗的目的。
1.背景
如今嵌入式系统在日常生活中扮演着越来越重要的角色。从消费电子产品到航天工业,从热门的电子应用(如智能手机和平板电脑等)到相对不起眼的应用(如人造卫星等),嵌入式系统直接或间接地影响人们生活的方方面面。嵌入式系统的巨大潜力使得教育工作者对它的讨论从来没有停止过。世界无数的教育工作者提出了大量新颖和具有创造性的方法和理论,以促进嵌入式系统教育水平的提高,他们大都赞同嵌入式系统具有与实际应用紧密联系的显著特点。
嵌入式系统应用在一个广阔的领域,如简单的微控制应用、控制系统、分布式嵌入式控制、片上系统、网络、嵌入式PC、关键系统、机器人、计算机设备、无线数据系统和信号处理。同时,一些交叉领域知识对于嵌入式系统设计者也同样重要,如安全、可靠性、节能、软件/系统工程、实时计算和人机交互等。
对于想成为合格嵌入式系统设计者的学生来说,他们希望能够亲手接触这些嵌入式应用,因此设计一个高效的实验系统非常重要。实验平台应该能联系抽象的理论知识和实际应用,以帮助学生领会嵌入式系统的知识奥秘。
2.嵌入式系统实验教学的特点
嵌入式系统实验教学与其他课程实验教学有两个方面的不同:软硬件高度结合、知识和技术更新速度快。嵌入式系统实验教学的特点如图1所示。
嵌入式系统实验教学的第一个特点是软硬件高度结合。一个完整的嵌入式系统需要在软硬件基础之上工作。在嵌入式实验教学中,任何一个环节的缺失或弱化都是错误的。我们过去就犯过这方面的错误。嵌入式系统是清华大学计算机科学与技术系大四本科生的一门专业必修课。学生希望在课程结束后对嵌入式系统有一个完整的认识,但是发现在学习完这个仅有2个学分的课程后,依然无法设计出一个软硬件兼备的完整嵌入式系统。因此,我们让学生使用开源软件工具设计诸如鼠标或键盘等设备的驱动程序,但是效果并不理想,冈为学生仅仅熟悉了他们所实验的部分内容,而这些内容只是他们应该掌握内容的一小部分,这不仅是由于实验任务的限制,还因为学牛无法接触硬件层面的操作,无法全面领会嵌入式系统。
嵌入式系统实验教学的另一个特点是嵌入式系统知识和技术更新速度快。在第1节我们曾提到过,紧跟实际应用是嵌入式实验教学的一个关键元素。由于嵌入式系统技术日新月异,嵌入式实验课程讲述的知识和技能以及嵌入式实验设备和组件都必须不断发展。我们在对清华大学计算机科学与技术系学生的调查问卷中发现,对传统嵌入式实验平台的主要批评是实验设备和组件过于陈旧,实验平台与当前技术联系不够紧密,实验内容缺乏吸引力。
综上所述,设计一个高效的嵌入式实验平台必须考虑软硬件结合和嵌入式技术飞速发展这两个因素。
3.当代学生的特点
除了嵌入式实验课程本身,学生是不可忽略的另一个关键因素。学生是实验的参与者,他们对实验的感受影响着实验课程教学的成败,但是我们发现传统的实验方法令当代学生逐渐失去学习兴趣,这主要是因为学生一代一代地不断发展与进步,而传统的实验方法却多年不变。
文献[2]指出当代学生与过去的学生有所不同:缺乏钻研精神、缺乏耐心和依赖于软件。当代学生的特点如图2所示。
当代学生的第1个特点是缺乏钻研精神绝大多数学生成长于用户至上主义日益流行的社会环境。相对于基础原理,他们更关注功能;相对于架构,他们更关注表象。简而言之,当代学生中很少有人理解嵌入式系统的基本原理,另一方面,传统的实验平台专门为演示和验证书本中讲述的原理而设计,因此学生渐渐地无法将实际应用与特别设计的实验相联系,产生的问题是如果学生无法预见所学知识的未来应用前景,就会将关注点转移到其他方面。由此可见,将实验平台与时兴技术相结合非常重要。
当代学生的第2个特点是缺乏耐心。生活节奏的日益加快和互联网络的日益普及,使得当代学生渐渐缺乏耐心。他们习惯在实验开始后急于见到结果,就好像点击鼠标后立刻能在屏幕上看见反应,但是在传统的教学方法中,教学总是从对课程的全面描述分析开始。实践证明这种描述很必要,它可以帮助学生全面了解课程的知识结构,但是这些内容有时会让学生退却,因为学生感觉课程非常抽象与枯燥。鉴于这些问题,新实验平台应该在嵌入式系统的第一堂课就引起学生的兴趣,同时提供一个吸引人的“结果”。
当代学生的第3个特点是依赖于软件。嵌入式系统的发展通常被认为是民众赋予的。在某种程度上,这种发展是电子工程向更智能化发展的结果。然而,电子工程这种不可见的层面,通常被复杂的用户界面和其他图标所伪装,使得大家将其归功于计算机科学,而不是电子工程。许多大学并没有意识到这个问题,而将大部分注意力放在嵌入式软件设计,忽略硬件层次的介绍。这种在嵌入式系统教学中的错误关注导致出现“软件比硬件更加重要”的错误认识。为了纠正这个偏见,我们应该重视硬件并将其引入嵌入式系统课程。
总之,为了设计一个高效的实验平台,当代学生的特点不容忽视。
4.设计嵌入式实验平台的原则
基于上述讨论,我们提出嵌入式系统教学实验平台的几项设计原则。
完整性:实验平台应该相对完整。学生不但能接触软件,而且能操作硬件。这个原则主要解决两个问题:首先纠正学生偏重于软件的错误;其次在第一节课就能吸引学生,告诉他们课程最后能够建立一个基本的却相对完整的系统。
开发性:实验平台应该能帮助学生自由地实现创新思想。实验平台在软件和硬件上都应为学生预留足够数量和种类的接口,使学生能够以此为基础构建自己的嵌入式系统。在实践过程中,越来越多的基于实际应用的嵌入式系统由学生实现,同时学生的创造热情也被激发出来。
从教学的角度看,实验平台应包含以下特点。
可升级性:平台的软硬件应该能分别扩展和升级,而无需对整个平台进行修改。如第2节所述,嵌入式系统技术升级速度快,尤其是硬件设备。为了满足经常升级的需要,可升级性原则应该被放在关键位置。
灵活性:实验内容应该能根据课程的要求而裁剪,以便于实验平台的广泛推广。大多数定制的实验平台在灵活性上有所欠缺,其实验内容无法增加或减少,而为了适应课程学时的变化不得不重新设计实验。
为了达到上述目标,我们提出一个完整的概念模型。目标系统的概念模型如图3所示。
这个概念模型由3个中间层和2个层组成。中间层包括主系统层、中间通道层和从系统层。层包括应用层和组件层。我们将解释这个模型如何能实现前面提出的目标。
完整性:把中间3层看作一个整体,这个基本模型由一个典型嵌入式系统中的主要元素组成,从最顶层的应用层到最底层的功能组件层。学生可以接触完整系统的每一个组件。
开放性:模型的最顶层和最底层向学生开放。实验平台的设计者将足够多的软硬件接口提供给学生,这些接口必须是完整的和用户友好的。使用硬件接口,学生能够通过连接所需的硬件模块构建一个创新的嵌入式设备;使用软件接口,学生可以方便地加载硬件模块所需的软件资源。
可升级性:实验平台设计应该模块化和层次化,每一层为上一层提供上层接口,为下一层提供下层接口。每一层可独立地进行扩展和升级,与相邻层次的接口保持兼容。模型的中间层被设计为3层结构,这个灵感来自于Phidgets的设计,它能为实际设备的实现提供更多可能性。
灵活性:每个层次都能根据课程的重点而被加强或削弱,因此实验内容可根据课程要求而变化。实验课可被安排在两层或更多层之上。基础实验要求学生建立一个基本的嵌入式系统,而在高级实验中,学生能深入研究模型中的各个层,以实现创意设计。
2 ARM选型
目前,能够适用于嵌入式系统设计的ARM微处理器存在许多系列,ARM7系列、ARM9系列、ARM9E系列、ARM10E系列、SecurCore系列、Intel的Xscale以及StrongARM。前四个系列是通用型处理器,每一个系列的处理器具备独特的功能和性能,能够应用于各个领域,满足对应的需求。SecurCore系列的处理器的安全性很高,可用于保密程度高的情况。ARM微处理器的内核结构各式各样,能够在不同领域和条件下发挥作用,用户需要根据自己的实际需求,来选择最合适的芯片。例如,如果用户想要在系统中使用标准Linux等操作系统来更方便快捷的进行软件设计,那么最佳的选择是ARM720T以上,并且具备MMU功能的ARM芯片。此外,诸如uCLinux一类的不需要MMU功能支持的操作系统已经研发出来,并在不具备MMU功能的微处理器上获得了成功应用,而且其系统稳定性和功能,都具有较高水平。
3 Bootloader开发
Bootloader是嵌入式系统的芯片引导程序,由开发人员应用汇编语言设计出来。Bootloader固化在目标板的ROM中,其功能是启动ROM或RAM中的嵌入式软件程序。在CPU支持的情况下,bootloader在开发时可以在RAM中运行。在基于ARM的嵌入式系统设计过程中,需要结合硬件目标板的相关特性来设计相应的bootloader程序,从而达到初始化处理器和相关硬件的目的。初始化处理器是通过bootloader对处理器中的配置寄存器进行初始化,这很容易实现,例如,在使用ARM处理器的MMU时,只需通过bootloader调用控制命令打开MMU。对于嵌入式系统必备硬件的初始化,一般是对系统内存、Flash ROM以及终端控制器的初始化,此外,从主机下载系统映像需要在硬件板和主机之间通过接口设备连接,系统的接口设备初始化也是由bootloader完成的。例如,一些嵌入式系统硬件板是通过以太网从主机下载系统映像文件的,在这里,bootloader就会使用以太网卡驱动程序来对相关硬件进行初始化,然后再与bootloader客户端程序进行连接,下载映像文件。
4 系统初始化
基于ARM的嵌入式系统芯片大多属于复杂的片上系统,这种系统的硬件部分很多都是可以自由配置的,其工作状态和参数属性也是由一定的软件进行设置的。用户在使用应用程序前,需要首先使用对应的启动代码对系统硬件进行初始化,这种初始化任务可由bootloader完成。在系统的初始化中,主要包括三个部分。其一,初始化中断向量表。ARM处理器对中中断向量表的位置有特殊要求,一般来说必须在从0地址开始的32字节的空间内。在ARM处理器的工作过程中,每当发生一个中断,ARM处理器都会将PC指针置为向量表中对应的中断类型的地址值。由于每个中断都只占据向量表一个字节的存储器空间,所以只能存放一条ARM指令,在一般情况下,向量表中并不直接存放ARM指令,而是跳转指令,程序可以由向量表在指令作用下跳转到寄存器的其他地址,然后再进行中断处理。其二,初始化堆栈。ARM具有7种不同的执行状态,每一种状态对应的堆栈指针寄存器都是相互独立的。所以,在程序中调整ARM执行状态需要给每个寄存器定义堆栈地址。寄存器堆栈地址的定义很简单,只要将处理器执行状态轮流切换,每个状态分别赋值。其三,改变处理器模式。ARM处理器有7种模式,在初始化时,需要先在6权模式下进行相关的修改,最后再切换到用户模式。
5 下载系统映像
系统映像是通过bootloader从主机载入到目标板上的。系统映像文件的下载位置是通过bootloader的指令代码或者交互shell界面来确定的,通过目标端的bootloader程序得到接收映像文件的程序,而主机端的程序则负责发送映像文件数据。这里一般可以通过串口和以太网卡等多种方式进行映像文件的传输。在成功接收系统映像后,如果具有相应的硬件模块,bootloader还能将映像写入到flash中。然后根据相应的启动地址,bootloader就能够将下载完毕的系统映像文件启动,并将程序流程转入主应用程序中。
6 存储器管理
嵌入式系统的软件平台是由系统引导程序、嵌入式操作系统内核以及文件系统三个部分构成的。软件平台固化在Flash中,对于Flash地址空间的分区,一般分为三个,分别用于存放bootloader、Linux内核以及文件系统。Bootloader的代码量相对较小,但也是非常重要的。嵌入式操作系统内核则是嵌入式系统的管理中心,负责各类任务和进程的切换和运行。文件系统则是嵌入式系统软件平台占用存储空间最大的,负责存储系统配置文件、系统程序、用户程序以及相关的驱动等。此外,如果嵌入式系统的结构较为复杂,就可能出现各种存储类型的接口,这些接口不能直接发挥作用,还需要一定的配置。就算是同类型的存储器,也需要根据访问速度来设置不同的时序配置。例如Flash和SRAM属于静态存储器类型,其端口可以共用,而DRAM则具有动态刷新和地址线复用的特性,需要配备专用存储器端口。
嵌入式系统作为计算机技术应用的一种,在社会的很多领域都能够得到有效的应用。对于嵌入式系统的设计也一直受到相关人士的关注。文章探讨了基于ARM的嵌入式系统的设计方法,以此为参考,再设置一定的硬件和程序即可发挥效用。
参考文献:
[1]黄克彬 叶梧 冯穗力.基于ARM-ucLinux嵌入式系统启动引导的实现[J].电子技术应用,2014,(3):23-24.
[2]费浙平.基于ARM的嵌入式系统程序开发要点(二)――系统的初始化过程{J].单片机与嵌入式系统应用,2013,(9):16-17.
[3]乐燕芬.ARM嵌入式系统启动过程分析及实现[J].仪器仪表学报,2015,27(z3):56-57.