时间:2023-08-18 17:26:02
序论:在您撰写嵌入式设计系统时,参考他人的优秀作品可以开阔视野,小编为您整理的7篇范文,希望这些建议能够激发您的创作热情,引导您走向新的创作高度。
[中图分类号]TP368.1[文献标识码]A[文章编号]1007-9416(2010)03-0009-01
嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统是将先进的计算机技术、半导体技术、电子技术和具体应用相结合的产物。
近年来,在计算机、互联网和通信技术高速发展的同时,嵌入式系统开发技术取得迅速发展,嵌入式系统应用范围也急剧扩大。从小到电子手表、电子体温计、翻译机等,大到如冷气机、电冰箱、电视机,甚至马路上红绿灯的控制器、战斗机中的飞控系统等。嵌入式系统几乎无处不在:
1 嵌入式系统的特点
与通用计算机系统相比,嵌入式系统有其自身的特点:
(1)嵌入式系统是将先进的计算机技术、半导体技术以及电子技术与各个行业的具体应用相结合的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
(2)嵌入式系统通常是面向用户、面向产品、面向特定应用的。
(3)嵌入式系统和具体应用相结合,其升级换代也是和具体产品同步进行的。因此嵌入式系统产品一旦进入市场,就具有较长的生命周期。
2 嵌入式系统的发展趋势
消费家电的智能化,为嵌入式系统的发展展现出美好的市场前景,也对嵌入式系统提出新的发展要求;微电子技术和系统设计方法的进步,使得嵌入式系统的发展呈现出以下趋势:
(1)随着嵌入式系统功能的增加,嵌入式系统处理的信息和数据量越来越大,系统对处理的响应时问也要求更严格,嵌入式处理器的主频会越来越高,甚至采用多核的方式来应付日益增长的性能要求。
(2)嵌入式系统在工业领域和某些特殊场合的广泛应用,要求嵌入式系统具有远程控制软件更新和故障诊断的能力。
(3)随着嵌入式系统在手持设备上的大量应用,手持设备的特点要求嵌入式系统功耗、体积更小,重量更轻。
(4)嵌入式系统将具有更加高速的通信接口,如USB2.0、千兆以太网等。
3 嵌入式系统设计流程
嵌入式系统开发分为软件开发部分和硬件开发部分。嵌入式系统开发过程一般都采用“宿主机/目标板”开发模式,即利用宿主机(PC机)上丰富的软硬件资源及良好的开发环境和调试工具来开发目标板上的软件,然后通过交叉编译环境生成目标代码和可执行文件,通过串口FUSB/以太网等方式下载到目标板上,利用交叉调试器在监控程序运行,实时分析,最后,将程序下载固化到目标机上,完成整个开发过程。当前,嵌入式开发已经逐步规范化,在遵循一般工程开发流程的基础上,嵌入式开发有其自身的一些特点,图1所示为嵌入式系统开发的一般流程。流程主要包括系统需求分析佞求有严格规范的技术要求)、体系结构设计、软硬件及机械系统设计、系统集成、系统测试、最终产品。具体情况如下:
(1)系统需求分析:确定设计任务和设计目标,并提炼出设计规格说明书,作为正式设计指导和验收的标准。系统的需求一般分功能性需求和非专题与综述功能性需求两方面。功能性需求是系统的基本功能,如输入输出信号、操作方式等;非功能需求包括系统性能、成本、功耗、体积、重量等因素。
(2)体系结构设计:描述系统如何实现所述的功能和非功能需求,包括对硬件、软件和执行装置的功能划分,以及系统的软件、硬件选型等。一个好的体系结构是设计成功与否的关键。
(3)硬件/软件协同设计:基于体系结构,对系统的软件、硬件进行详细设计。为了缩短产品开发周期,设计往往是并行的。嵌入式系统设计的工作大部分都集中在软件设计上,采用面向对象技术、软件组件技术、模块化设计是现代软件工程经常采用的方法。
(4)系统集成:
把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进单元设计过程中的错误。
(5)系统测试:对设计好的系统进行测试,看其是否满足规格说明书中给定的功能要求。
4 嵌入式系统设计面临的挑战
要求更高的应用需求推动嵌入式设计从8/16位转向功能更强大的32位MCU。这种升级给工程师带来了严峻的挑战,提出了一系列前所未有的全新问题。
(1)转变观念,需要熟悉新的开发模式。嵌入式系统应用不再是过去单一的单片机应用模式,而是越来越多样化,嵌入式系统实现的最高形式是片上系统SoC,而SoC的核心技术是重用和组合IP核构件。从单片机应用设计到片上系统设计及其中间的一系列的变化,从底层大包大揽的设计到利用FPGA和IP模块进行功能组合PSoC/SOPC设计。
(2)技术门槛提高,需要学习全新的RTOS技术。
(3)选择合适的开发工具,熟悉新的开发环境。目前从8位升级到32位的一个最大障碍就是开发工具的投入。32位开发工具要比8位开发工具复杂得多,使用的技术门槛要高得多,同时其投资也要高得多。
(4)熟悉硬件/软件协同设计和验证技术、设计管理技术。软/硬件并行设计是嵌入式系统设计的一项关键任务。在设计过程中的主要问题,是软硬件设计的同步与集成。这要求控制一致性与正确性,但随着技术细节不断增加,需要消耗大量的时间。目前,业界已经开发Polis、Cosyma及Chinook等多种方法和工具来支持集成式软硬件的协同设计。目标是提供一种统一的软硬件开发方法。它支持设计空间探索,并使系统功能可以跨越硬件和软件平台复用。团队开发的最大问题就是设计管理问题。
(5)SoC设计所面临的巨大的挑战。SoC已经开始成为新一代应用电子技术的核心,这已成为电子技术的革命标志。过去应用工程师面对的是各种ASIC电路,而现在越来越多所面对的是巨大的IP模块库,所有设计工作都是以IP模块为基础。SoC设计技术使嵌入式系统设计工程师变成了一个面向应用的电子器件设计工程师。随着SoC应用的日益普及,在测试程序生成、工程开发、硅片查错、量产等领域对SoC测试技术提出了越来越高的要求。
[参考文献]
[1] DSP技术及应用.黄仁欣.2002年出版.
[2] 单片机技术.彭永.2007年12月出版.
[3] 电子感测技术.周南山.2007年出版.
[4] 电子技术基础.韦鸿.2008年出版.
关键词:嵌入式系统;开发环境
中图分类号: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.
[2] 孙天泽,袁文菊,张海峰.嵌入式设计及liunx驱动开发指南―基于ARM9处理器[M].北京:电子工业出版社,2005.
关键词:UML;嵌入式系统;OOD建模;双向工程
中图分类号:TP311文献标识码:A文章编号:1009-3044(2009)34-9742-02
The Design on UML Embedded Systems
YU Hai-wen
(College of Information Engineering Nanchang University(Pre-Lake Campus), Nanchang 33000, China)
Abstract: UML is the the most popular standard modeling language, embedded systems are professional computer system on the centre of application and the base of computer technology, embedded systems are the integrity of software and hardware; The design's quality of embedded systems is the key of success about digital products. The paper discuss the important conception of UML,and how to use the technology of UML OOD in the design of embedded systems, then show us the steps based on the example of microwave light.
Key words: UML; embedded systems; OOD modeling; two-way engineering
近年来,数字家电、汽车电子、MP3、Smart Phone等跃居电脑产业的主流地位,数字整合的需求日益增长,嵌入式软件(Embedded Software)系统愈来愈复杂,涉及到的接口越来越多,这种软、硬件结合的协同设计(Hardware/Software Co-design)需要不同技术背景的人共同开发,如何使这些具有不同技术背景和专长的人联合开发、协同设计?UML可以解决这个问题。统一建模语言UML(Unified Modeling Language)采用一种简单而直观的图形化方式描述系统设计中的各个问题和细节。不同技术背景的设计师只需懂得UML 符号就可以与对方交流、共同设计。
本文将重点讨论如何在嵌入式系统设计中使用 UML 技术,并结合实例“微波炉小灯”演示采用 UML 的嵌入式系统设计过程。
1 UML OOD建模
1.1 UML基本概念介绍
1.1.1 UML事物
UML中事物是实体抽象化的最终结果,是模型中的基本成员,UML中包含结构事物、行为事物、分组事物和注释事物。
1.1.2 UML建模图
图是事物集合的分类,UML中包含多种图:1)类图(Class Diagram);2)对象图(Object Diagram);3)包图(Package Diagram);4)组件图(Compoment Diagram,也称构件图);5)部署图(Deployment Diagram);6)用例图(Usecase Diagram);7)时序图(Sequence Diagram);8)协作图(Collaboration Diagram);9)状态图(Statechart Diagram);10)活动图(Activity Diagram)。
由于篇幅原因,本文将结合一个需求非常简单的“微波炉小灯”的实例,给出几个重要的图。本文介绍的图采用业界使用最广泛的UML建模工具Rational Rose。Rational Rose为团队开发和规范的开发过程管理提供了良好的支持。
1.2 UML OOD建模
从应用的角度上来讲,面向对象的系统设计一般需要完成如下工作:
1)描述需求;2)根据需求建立系统的静态模型;3)建立系统的动态模型:即描述系统的行为。
1.2.1 描述需求
“微波炉小灯”的实例需求很简单,即微波炉里有个小灯,微波炉门打开时,它就亮起来,一旦关上门,就熄掉了。本文将根据此需求说明,采用UML设计一个控制程序来感应微波炉对象的状态变化,并且触发小灯对象的状态变化。
1.2.2 建立系统的静态模型
用例图(Use Case Diagram):UML的Use Case图1描述User对整体系统的功能需求,本例中,User会有两项动作――“开微波炉”与“关微波炉”,而且期待开微波炉时会亮小灯,关微波炉时小灯会自动熄掉。
类图(Class Diagram):如图2,类是OOD中一个重要概念。软件组件的模块通称为组件的类(Class),OOD设计理念是程序指令写在类里,其所检验测试的对象都是类,等到电脑执行时才由电脑在内存中定义实体组件(对象)。
1.2.3 建立系统的动态模型
建立系统的动态模型实质就是描述系统的行为。
时序图(Sequence Diagram):图3这个时序图反映了开微波炉过程中触发小灯亮的详细执行过程。
状态转换图4(Statechart Diagram):对对象行为做详细的描述。就小灯而言,消息的传达是个事件(Event),这事件令小灯改变状态(亮或熄)。
2 双向工程
2.1 正向工程
Rational Rose中可实现正向(为模型产生相应的代码,即程序框架)、逆向(从用户原来的软件系统导出该系统的模型)和双向工程(实现模型和代码之间的循环工程),从而保证模型与代码的高度一致,这个功能意味着降低了开发人员编写程序的复杂度和工作量。
Rational Rose支持C++、Visual C++、Java、Smalltalk、Ada、Visual Basic、PowerBuilder等语言和开发工具,并能为CORBA 应用生成接口定义语言(IDL),为数据库应用生成数据库描述语言(DDL)等。Rational Rose默认支持的语言是Java。
本例中,在完成了“微波炉小灯”类图制作后,选择菜单“Tools” “Java/J2EE”“generate code”即可生成Java代码,当原建模文件更新时,代码会同步更新。
2.2 逆向工程
前面所述正向工程虽然只是得到了代码框架,实现功能部分的代码仍需开发人员输入。随着软件功能的实现及新的用户需求的加入,原建模文件在需要更新时,可不需要重新画图,只需进行逆向工程操作即可。本例中,在完成了“微波炉小灯”代码后,选择菜单“Tools”“Java/J2EE”“reverse engineer”即可生成新的建模文件。
3 小结
在软、硬件设计领域中,采用UML进行软件组件设计及其架构(Architecture)规划技术逐渐成为业界关注的焦点。根据本文及“微波炉小灯”实例,显然从UML设计图到Java(C及C++)代码的过程很流畅。
参考文献:
[1] 徐宝文. UML与软件建模[M]. 北京:清华大学出版社,2006.
关键词:ARM 嵌入式系统
中图分类号:TP368.1 文献标识码:A 文章编号:1007-9416(2012)12-0104-01
1、序言
本系统是设计一款基于ARM的嵌入式开发平台,该嵌入式开发平台是基于AT91SAM9263(基于ARM926EJ-S芯核)的嵌入式系统,可以在此系统上运行嵌入式操作系统,并在上运行嵌入式数据库、人机窗口等应用程序,此系统包括硬件和软件两部分,本文主要介绍硬件部分。
2、系统硬件设计
本系统硬件由核心板和母板组成,核心板将系统扩展可能用到的总线都引出来,与母板之间通过针形接插件连接,为以后产品开发提供了稳定、经济而又方便的平台,此种设计的好处,其一把高速和低速分开,降低了硬件之间的干扰,提高了稳定性。其二是当系统需要扩展某些特殊接口时,则只需要对母板进行修改,缩短了开发周期。
其中核心板设计这部分是任何一个ARM系统要正常运行所必备的电路,因此称为核心板,这些基础电路,包括存贮程序用的Flash存贮器,运行程序和缓冲数据所必须的SDRAM、复位模块、时钟模块、JTAG接口等。这部分电路集中在较小空间里,因此相对比较密集,而且这部分的信号是超高速信号,且电路的设计要求比较高,所以核心板采用购买成熟的核心板。
系统母板设计了大部分的电路,因为模板上的信号都是低速信号,所以从成本角度考虑,母板采用二层电路板设计,其主要电路包括了电源部分、USB接口部分、串口及10/100M以太网接口、LCD接口、CAN总线以及底板与核心板之间通过针形接插件相连的接口等,其结构如图1所示。
下面将分模块介绍电路原理。
2.1 串行接口电路设计
系统设计了一个RS-232、RS-485接口,方便与其他设备通信。具体的电路采用MAX3232作为电平转换芯片,它本身提供两组驱动器和接收器,并接有数字隔离器ADuM1201,此芯片提供了两个信道的通道,具体电路如图2。
系统的RS-485串行接口,是由ADM2483来实现,ADM2483本身是带有隔离的高速RS-485转换器,不需要其它额外的电路。
2.2 以太网接口设计
系统选用DM9161作为以太网的接口芯片,因为系统工作在100BASE-TX模式下,所以选择RMII作为DM9161与AT91SAM9263的接口模式,具体电路如图3所示。
2.3 CAN接口电路设计
本系统的CAN总线接口的实现,是通过外接CAN收发器来实现的,系统选用的是MCP2551作为系统的收发器,其特点是有差分发射和接收能力,自动检测TXD输入端接地错误及较强的抗噪声特性。
3、结语
本系统设计了基于ARM系统的嵌入式硬件平台,在此之上可以提供各种实时操作系统,从而构成一个完整的平台,其硬件部分电路已经进行了信号完整性分析具有一定的可靠性。
参考文献
[1]田泽.嵌入式系统开发与应用[M].北京:北京航空航天大学出版社,2005.
为解决公交车的高效便捷清洗问题,基于青岛理工大学韩旭东教授的团队设计的一款“垂直滚筒式公交清洗小车”,利用AT89C51单片机配合其他元器件,设计了相关的嵌入式系统,包括超声波测距系统和手动/自动双模平台升降控制系统,完善了原产品的设计。采用KeilC51软件编写了相应的控制程序,使用Proteus软件绘制了电路原理图,并进行了仿真模拟。
关键词:
公交清洗小车;嵌入式系统;超声波测距;平台升降控制
0引言
为解决公交车的高效便捷清洗问题,青岛理工大学韩旭东教授的团队设计了一款“垂直滚筒式公交清洗小车”[1]。但在该设计中,仅对机械结构与工作原理做了介绍,缺少相关的控制电路与控制程序的设计,给清洗小车的使用带来了极大的不便。本文在原产品的基础上,针对小车与公交车之间距离的控制不准确的问题,设计了超声波测距系统;针对平台升降控制不方便的问题,设计了手动/自动双模平台升降控制系统。有效地提高了该产品的实用性,完善了该产品的设计。
1超声波测距系统
1.1设计目的
清洗小车由人力推动并控制方向,但由于路面不平,人力控制精度有限,会使小车与公交车车体间的距离发生改变,距离过近会使滚筒挤压车体表面,阻碍滚筒旋转;距离过远,则会使滚筒毛刷与车体表面间间隙过大,影响清洗效果。需要一套测距系统使小车与公交车车体间的距离始终保持在一个合理范围之内。
1.2测距方式的选择
超声波测距是利用机械波反射来测量距离,适用于短距离测距,原理简单,成本低,远距离测量精度较低。公交清洗小车的使用环境比较复杂,对测距系统的精度要求不高,测量的距离在1~2m,且要求结构简单、成本低廉、性能稳定。根据需要和集中测距方式的特点,本文选择超声波测距方式。
1.3超声波测距原理
超声波在均匀介质中的传输速度为一恒定值,由发生器发射超声波,在遇到测量目标后反射回来,由接收器接收并记录由发射到接收经历的时间,便可以计算出发生器与测量目标之间的距离[2]。公式如下:L=12C•Δt。式中:L为测量距离;C为超声波在当前介质中的传输速度(空气中常温下速度为340m/s);Δt为从发射到接收经历的时间。
1.4设计内容
本文利用AT89C51单片机、HC-SR04超声波测距模块、LED灯组成了一个超声波测距警报系统。当距离过近时,指示距离过近的红灯点亮;距离适中时,指示距离适中的绿灯点亮;当距离过远时,指示距离过远的红灯点亮。工作人员可以根据灯光指示调整小车位置,使之与车体表面间的距离保持在一个合理范围。1.4.1HC-SR04超声波测距模块工作原理本文所采用的HC-SR04超声波测距模块,具有成本低、体积小、精度高、使用简单方便等优点,其基本工作原理为:1)采用I/O口TRIG触发测距,提供至少10μs的高电平信号;2)模块自动发送8个40kHz的方波,自动检测是否有信号返回;3)有信号返回,通过I/O口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间[3]。1.4.2程序控制过程利用AT89C51单片机自带的定时计数器资源,通过I/O口给超声波模块一个发射信号并开始计时,当收到超声波模块的反馈信号时,结束计时并计算距离。
2手动/自动双模平台升降控制系统
2.1设计目的
现行大多数公交车的高度在3m左右,为能够确保清洗整个车体表面,原产品采用双丝杠旋转驱动平台升降的设计,并利用直流电动机产生动力。为方便用户使用,能够快捷高效操作平台升降,提高清洗效率,本文设计了一套手动/自动双模平台升降控制系统。
2.2设计内容
根据计算,清洗平台需调整2次高度才可将车体表面清洗完毕,为了方便工作人员操作,本文设计了手动/自动双模控制系统。该系统采用AT89C51单片机,配合L289直流电动机驱动模块,通过控制电动机的正反转实现平台的升降,设计原理图见图4[5]。操作过程为:启动系统后,在自动模式下,按UP键,平台会上升一个固定高度;按DOWN键,平台会下降一个固定高度。该高度值是为实现最高清洗效率,以3m高的车身为标准,经优化计算得出的最适高度。因为公交车的型号差异,车身高度也各不相同,所以为满足实际使用要求,我们又设计了手动控制模式。在手动模式下,按住UP键,平台会上升,松开立即停止;按住DOWN键,平台会下降,松开立即停止。为防止工作人员误操作,本文增加了按键防抖动延迟,防止工作人员误触按键;如果UP和DOWN键同时按下,则电动机停转,直至其中一个按键松开。
3结语
关键词:黑盒测试;嵌入式系统;程序流程图;插桩处理
引言
黑盒测试是从用户观点出发的测试,依据需求功能说明书中的预期用途、定时和性能的要求,推断测试结果。黑盒测试根据测试阶段可分为单元测试、集成测试、确认测试、系统测试四个阶段[1]。嵌入式计算机系统具有与传统软件测试不同的新特性,因此需要采取针对性的测试方法。通用的测试方法可分为静态时间分析和动态时间分析。
1嵌入式软件测试的环境分析
在线仿真配备了CPU芯片接口,提供和应用程序交流信息桥,不足之处在于对硬件的依赖性较强,测试范围较窄;目标机仿真测试结果真实,但由于实际运行中连接外部设备,很难辨识软件和硬件错误。在实际测试中,根据测试效率、成本、可靠性、自动化程度等因素选择测试环境[2]。
2嵌入式测试系统的技术实现
CodeTest一方面吸取软件插桩技术,另一方面从硬件测试那里吸取从总线获取数据的技术,并进行升级改造。在硬件测试时,CodeTest选择插入点的方式为主动获取关键数据。和CodeTest相比,纯软件测试对目标测试的影响大大降低。因此选用Cereal仿真器。嵌入式软件测试系统由功能测试模块、代码测试模块、数据分析和文档报告模块、通信接口转换模块组成。对于黑盒测试来说,功能测试模块居主导地位,它主要通过接收目标系统输出信号和需要的信号进行比对来判定目标系统在功能上是否达到最优[3]。
3词法语法分析的设计与实现
3.1Lex⁃Yacc
Lex是检测字符匹配性的词法生成程序,Yacc是测定语法的生成程序。一个Lex程序由三段组成:首先是C和Lex定义;第二段是C代码;第三段是C函数。一个Yacc程序也是由三段组成,分别是声明、语法规则和C代码。Lex同Yacc的工作原理如图1所示。
3.2Lex⁃Yacc之间的联系
Lex程序用来计算数字字符串,能对各种符号进行识别,当插码时可以以注释的形式插入插桩代码,等程序完成,可以自行取消代码插桩,不影响整体进程。Yylval用来传递Lex与Yacc之间数字字符串转化后的数值,利用lineno传递正在处理的代码行号和标号。本次设计全程在Linux下,通过Lex编译后生成词法分析程序的C代码,通过Yacc编译后生成语法分析程序的C程序代码。两者通过gcc命令进行编译形成综合分析。最后运行该综合分析器就可以对51系列的汇编语言进行分析[4⁃5]。
3.3被测源程序静态结构分析
Lex⁃Yacc工具对单文件逐行扫描,得出当前语句各类参数类型,不同参数类型分别进入不同的单链表中。其中除了顺序单链表外,其他四种处理方式基本相同。待词法、语法分析完毕,五个单链表中存储了对应的汇编程序。因为单链表本身只是一个转换器,无法显示汇编程序之间的逻辑关系,所以需要对程序进行二次分析,确定所有逻辑关系。其中五个单链表形成的流程图如图2所示。针对程序流程图的建立,首先搜索匹配节点,根据节点不同进入相应分支处理。当前语句在顺序节点,则进入顺序处理模块。从关键字“结束行号+1”开始遍历单链表,存在两种结果:一是算法出错;另外一种就是在主程序中时则表明当前分支分析完成。接着要判断条件跟踪链表中的顺序分支(规定为右分支)是否都已分析完毕。
4覆盖率分析及评测
4.1被测源程序覆盖率分析
虚拟插桩技术就是在汇编语言基本结构的特点上,在源程序的插桩点处设置断点,在源程序执行到断点处,响应断点处指令,给出具体的PC地址,自动记录并打印出来,接连下去形成PC值的数据链。通过查询五类单链表与之建立对应关系,就可以获得到源程序的真实运行轨迹,进而计算出各类覆盖指标。
4.2基于代码的覆盖评测
在仿真测试平台原型系统上,基于代码的覆盖测试首先需要选定适合用作黑盒测试的子过程模块。提取的子过程模块必须具备独立运行的能力,根据覆盖测试的标准和要求对代码逻辑结构进行认真分析,设计出多个测试用例,然后通过手工运行该子程序的方式,在某一特定测试用例驱动下运行,测定出运行路径,通过计算得出两种覆盖率理论评测指标,与仿真测试平台上实现的两种覆盖率相对比,得出覆盖率分析法与虚拟插桩的正确性验证结果。
5嵌入式系统平台设计
设计一个可以代替人工进行黑盒测试的平台系统,见图3,其基本原理是通过脚本语言记录状态信息,之后通过PC回放测试信息以判断结果是否与记录脚本一致,以此决定本次测试是否通过。为此,在编辑源代码时就需要满足录制脚本和脚本回放两个阶段的需求。
5.1插装代码分析
在PC上运行插装系统最重要的原则就是要保证软件原有功能的稳定性和完整性。因此在设计嵌入式系统的插装代码时不能改变程序的原有逻辑和原有执行流程,应尽量降低在嵌入式系统所占的资源,尽可能将部分功能和操作交付于PC进行。嵌入式系统中的模拟用户输入模块的主要功能是将计算机发送的命令进行分析,并将结果回复到处理模块中,其操作模拟流程见图4。
5.2系统状态的定义和获取
(1)声音信息的获取嵌入式系统中对声音信息的获取主要是通过识别每个声音惟一的ID编号和固定的音频编码进行的。工作时,由系统中的服务函数获得ID声音的音频编码并发送到PC中。(2)获取LED信息LED的运行方法和声音相似,都有一套惟一的LED编码,并由LED控制器控制。常用的设计方法是将LED中的编码放到嵌入式系统中的缓冲区内,通过定时刷新函数提取LED信息[6]。(3)获取LCD信息由于LCD需要显示的信息较多,且各消息属性复杂,因此较难提取。目前常用的提取方法是点阵截取法和消息截取法。由于点阵截取法操作简单、测试结果准确率高,因此本文使用点阵截取法获取LCD信息。(4)系统状态的获取主动请求和被动获取是嵌入式系统获取信息的主要方式。主动请求是指嵌入式系统在处理完PC发出的操作命令时,主动将搜集好的信息发送到PC上。被动获取是指嵌入式系统并不主动发送检测信息,而是当状态出现时才决定是否继续后续操作。
5.3自动化比较和测试
软件是否准确输出结果,需要经过多次测试实际输出和预期输出的差别。本文在设计嵌入式系统时综合考虑了一些智能比较思想来优化设计流程。由于实际的嵌入式系统会产生上百个复杂的状态信息[7],为便于比较,本文采用了相对比较的办法对录制脚本时的状态变迁进行比较。最后设计完成的嵌入式系统需对脚本进行测试,这是交互式应用的重要组成部分。脚本测试的准确度主要依赖于所选用的测试工作和脚本技术。当前主要的脚本技术有共享脚本、数据驱动脚本、结构化脚本等。这些脚本都包括了三个命令,即人工操作命令、状态检查命令、逻辑控制命令。测试脚本主要就是对这三个命令进行检查,其中在自动化检测中采用何种脚本记录测试结果可依据模块要求进行选定。
6结语
黑盒测试技术的汇编语言测试系统用例研究在我国已经很多,本文最大的亮点是引入虚拟插桩技术,实现真正插桩,即在被测源程序的插桩点处设置中断指令,当源程序运行到该点处时自动运行断点指令,给出具体的PC地址,进而给出一系列地址数据,根据事先设定的用例判定运行效果,得出黑盒测试的正确验证结果。此方法最大的优点在于高效、精确、成本较低,在实际运用中具有较高的实用价值。
参考文献
[1]孙昌爱,靳若明,刘超,等.实时嵌入式软件的测试技术[J].小型微型计算机系统,2000,21(9):920⁃924.
[2]杜晓东.面向嵌入式系统的测试工具研究[D].成都:电子科技大学,2003.
[3]苏铭,宋宗宇,王华.多计算机的自动插桩与监测系统[J].计算机工程与应用,2002(4):79⁃82.
[4]杨作梅,张旭东.1ex与yacc[M].北京:电子工业出版社,2003.
[5]邓支益,何亦征,田翼.嵌入式软件测试研究[J].航空电子技术,2003,34(1):37⁃42.
[6]曹文静,宫云战.软件测试性计算方法研究[J].计算机工程与设计,2003,24(10):67⁃70.
关键词:嵌入式芯片;FPGA;人机交互界面
嵌入式芯片是当前一些主流数码设备的核心部件,也是嵌入式系统的硬件基础。嵌入式系统是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。简单地说,嵌入式系统集系统的应用软件与硬件于一体,类似于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.
[3]张大波,吴迪,郝军.嵌入式系统原理设计与应用[M].北京:机械工业出版社,2005.