㈠ 嵌入式软件开发的作品目录
第1章嵌入式系统概述1.1嵌入式系统的定义1.2嵌入式系统的分类1.3嵌入式系统的特点1.4嵌入式系统的组成1.5嵌入式系统的应用领域1.6嵌入式系统的发展1.6.1嵌入式系统的发展史1.6.2嵌入式应用软件面临的挑战1.7本章小结习题第2章嵌入式硬件系统基础2.1嵌入式处理器的基本特征2.2嵌入式处理器的分类2.2.1嵌入式微处理器2.2.2嵌入式微控制器2.2.3嵌入式DSP处理器2.2.4嵌入式片上系统2.3典型嵌入式处理器2.3.18051系列单片机2.3.268K/ColdFire系列2.3.3PowerPC系列2.3.4ARM系列2.3.5X86系列2.3.6MIPS2.4嵌入式处理器的选择2.5嵌入式处理器的发展趋势2.6本章小结习题第3章嵌入式操作系统3.1嵌入式操作系统的发展3.1.1嵌入式操作系统的历史3.1.2嵌入式操作系统的发展趋势3.2嵌入式操作系统的分类3.3嵌入式实时系统3.3.1嵌入式实时系统介绍3.3.2实时系统的分类3.4嵌入式实时操作系统3.4.1VxWorks3.4.2pSOS3.4.3QNX3.4.4DeltaOS3.5嵌入式软实时操作系统3.5.1嵌入式linux3.5.2WindowsCE3.5.3PalmOS3.6嵌入式操作系统的选择3.7本章小结习题第4章基于Linux的嵌入式软件开发4.1嵌入式Linux概述4.2Linux基础4.2.1VMware虚拟机中的Linux安装4.2.2进入与退出Linux系统4.2.3Linux常用命令4.3嵌入式LinuxC语言开发工具4.3.1C语言与嵌入式系统设计4.3.2嵌入式LinuxC语言编程环境4.3.3vi编辑器4.3.4GCC编译器4.3.5GNUmake4.3.6GDB调试器4.4μCLinux操作系统4.4.1μCLinux简介4.4.2μCLinux的基本架构4.4.3μCLinux的相关知识4.5建立μCLinux开发环境4.5.1交叉编译环境4.5.2基于Linux的宿主机建立交叉编译环境4.5.3基于Cygwin建立交叉编译环境4.5.4μCLinux内核编译4.5.5内核的加载运行4.6基于μCLinux的应用程序开发4.6.1基本开发步骤4.6.2应用程序开发实例4.6.3添加用户应用程序到μCLinux4.7本章小结习题第5章基于VxWorks的嵌入式软件开发5.1Tornado简介5.1.1Tornado的特点5.1.2TornadoIDE5.1.3VxWorks目标机环境5.1.4宿主机与目标机的接口5.2Tornado的安装和启动5.2.1Tornado的安装5.2.2Tornado的目录结构5.2.3Tornado主窗口界面介绍5.2.4入门实例--HelloWorld5.2.5使用调试和分析工具5.3Tornado环境下的工程开发5.3.1创建可下载的应用5.3.2创建用户定制的VxWorks映像5.3.3创建可引导的应用5.3.4宿主机与目标机的通信5.3.5配置、构造引导程序及引导盘的制作5.3.6主机Tornado调试环境配置5.3.7多任务调试方法5.4VxWorks操作系统5.4.1VxWorks简介5.4.2Vxworks操作系统的基本结构5.4.3VxWorks任务5.4.4共享代码和重入5.4.5任务间通信5.4.6中断服务程序5.4.7时钟管理5.5实例分析5.5.1VxWorks任务间通信5.5.2理发师问题5.5.3哲学家进餐问题5.6本章小结习题第6章嵌入式软件设计的几个问题6.1实时多任务软件设计6.1.1实时多任务软件的设计步骤6.1.2任务划分6.1.3实时多任务设计实例6.2板级支持包BSP6.2.1BSP简述6.2.2BSP的职责6.2.3BSP的组成6.2.4VxWorks映像类型及其启动顺序6.2.5BSP的开发6.3外部设备的驱动6.3.1外部设备6.3.2外部设备的分类6.3.3I/O设备的数据传送方式6.3.4硬件驱动程序6.3.5硬件驱动程序的主要功能6.3.6硬件驱动程序的组成部分6.4本章小结习题第7章嵌入式系统设计开发7.1嵌入式系统设计开发概述7.1.1嵌入式系统开发的特点7.1.2嵌入式系统设计的目标7.1.3嵌入式系统的设计开发方法7.2嵌入式硬件系统选型及设计7.2.1处理器的选择7.2.2嵌入式系统硬件电路设计7.2.3印刷电路板设计7.3嵌入式软件系统选择7.3.1软件平台的选择7.3.2编程语言的选择7.3.3集成开发环境的选择7.4软、硬件协同开发7.5嵌入式系统的调试7.6嵌入式系统测试7.7系统集成7.8本章小结习题第8章实训实训1Linux安装实训2Linux常用命令实训3嵌入式Linux下开发工具使用实训4μCLinux交叉开发环境实训5添加μCLinux应用程序实训6Tornado集成开发环境实训7使用Tornado中的调试和分析工具实训8基于VMware建立VxWorks交叉开发环境实训9VxWorks组件的裁减和配置实训10信号量实训11消息队列实训12Wind内核功能实训13多任务程序调试方法实训14理发师问题参考文献
㈡ 无线远程监控系统的实现方式
采用单片机是大多数嵌入式系统设计时的首选方案。由于在片上集成有丰富的外设,具有良好的控制能力,单片机天生就是为嵌放式系统度身定做的,在嵌入式市场上占据了最大的份额。
基于单片机的设计方案一般适用于对数据处理要求不高,运算量不大的远程监控系统。根据需要,单片机可以选用较为低端的4位机或8位机,如8051等,也可选用功能较强的专用芯片,如MSP430FE42X系列。单片机主要用于监测站端的系统控制。片外存储器一般为RAM、EEPROM和Flash等存储器;I/O设备一般为键盘、LCD等供设计调试用的人机交互接口;传感器一般为话筒、摄像头、扬声器和伺服马达一类的设备。无线通信接口实现相对较为复杂。编解码器是可取舍的,对于低速率数据一般没有必要。根据系统的处理任务和信息的类别,编解码器可选用不同的芯生, 如CMX639(用于音频)或LD9320等,也可用编程逻辑器件实现。监测站软件可直接通过C或汇编语言实现,也可在实时操作系统上开发应用软件。对于低档的4位或8位单片机,控制能力较低,系统简单,一般采用直接编写控制程序的方法。对于功能较强大,各设备间交互复杂的系统而言,大多数是利用操作系统来进行任务管理、设备交互,应用软件只是完成上层的数据处理等工作。 众所周知,DSP的数字处理方面能力较强,技术已经很成熟,能处理各种运算的通用、专用芯片也很多。以DSP为核心设计开发的监测站,可以完成高速率数据处理,保证系统实时性方面的要求。
这类设计方案一般适用于数据处理运算量比较大,实时性要求高而对控制能力要求相对较低的监控系统。与以单片机为基础的监控系统不同的是,DSP除了作控制器以外,还可兼作数据计算、编/解码之用。对于较复杂的编/解码以及压缩解压运算(比如对图像视频数据的处理等)是否仍由DSP完成,须综合考虑。若DSP在系统控制和实现传输协议方面负担太重,则这部分运算需要由专门的处理芯片完成;若系统控制和传输协议较简单,或根本没有到上层协议栈,则这部分复杂的运算可由DSP完成。 显然,这种设计方式吸取了单片机和DSP各自的优点:单片机的特点决定其擅长于控制,DSP的内部结构保证较强的数据处理能力。两者的组合可实现一些相当复杂的系统功能,但由于系统中采用了两个处理器,其间的信息交互是设计这类监测站时须着重考虑的问题。只有单片机和DSP之间较好地协同工作,才能充分发挥各自的优点;否则,由于两者间的协调而耗费了大量资源,整体性能未必高于采用单一处理器的系统。实现单片机和DSP间通信协调的常用方法是采用双口RAM。
有些DSP或单片机厂家为了扩大芯片的适用范围,在原有基础上进行扩展,相互间容入了对方的特点,使同一芯片在数据处理和控制方面同时具有较好的性能。比如Microchip公司推出的dsPIC,使客户能方便地将单片机的功能转移到DSP上,推出的产品有dsPIC30FXXX系列。由于DSP和MCU两个功能模块在同一芯片内实现,提高了系统的可靠性、降低了监测站的设计难度并节省印制板空间。这类芯片得到广大用户的青睐。基于MPU的设计实现方式
设计嵌入式产品的另一可选方案是采用基于微处理器的设计方式。与工业控制计算机相比,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高等优点;同时,在该领域技术成熟、产品类型多、选择空间大,满足各种性能需求的处理器比较容易获得。随着采用RISC体系的高性能MPU(比如采用ARM构架的处理器芯片等)的出现,MPU在嵌入式领域中的地位经久不衰;但是,由于在设计监测站时,电路板上必须包括ROM、RAM、Flash、总线接口和各种外设等器件,系统的可靠性将有所下降,技术保密性差,实现难度也较大。
实时操作系统选择和嵌入式实时软件开发
已有的实时操作系统(RTOS)种类繁多,软件结构各异,可适用于复杂程度不同的各种环境,包括循环查询系统、前后台系统、实时多任务系统和多处理机系统等。具体实例有VxWorks、pSOS、QNX、Palm OS、Windows CE、lynx OS和嵌入式Linux等。选择适合监测站乃至整个无线远程监控系统的RTOS的重要性是不言而喻的,它可能关系到整个系统研制的成败。选择过程杂而又需要耐心:要了解各RTOS的特点和适用范围,比较其间的区别,才能找到最为合适的一种。选择比较时,需要考虑的因素主要有:
①RTOS能否支持在项目中使用的语言和微处理器;
②RTOS能否与ICE、编译器、汇编器、连接器及源代码调制器共同工作;
③RTOS是否支持设计中要用到的服务,如消息队列、定时和信号量等;
④RTOS能否达到应用产品的性能需求,比如实时性需求;
⑤能否获得产品开发时必要的组件,比如协议栈、能信服务、实时数据库、Web服务等;
⑥RTOS是否能为公开出售的硬件提供设备驱动程序;
⑦使用RTOS是否免费;
⑧能否获得目标代码;
⑨获得的技术支持有多少;
⑩对于需要授权的RTOS,授权方式是怎样的。
嵌入式实时软件的开发与传统软件的开发有许多相似之处,继承了许多传统软件的开发习惯;但由于嵌入式实时软件的功能和运行环境特殊,决定其与传统软件的开发有所区别。嵌入式实时软件的开发使用交叉开发方式。所谓交叉开发是指,程序代码的实现、编译和连接的环境与对其进行调试和运行的环境不同。前者基于普通微机平台,后者则基于嵌入式系统的硬件平台。调试过程多是在有通信连接的宿主机与目标机的配合下进行的,开发完成后需要进行固化和固化测试。另外,开发过程还需要相应的开发工具,包括交叉编译器、交叉调试器和一些仿真软件。嵌入式应用系统以任务为基本执行单元,用多个并发的任务代替通用软件的多个模块,并定义了应用软件任务间的接口。由于整个无线远程监控系统的实时性能受RTOS和应用软件的影响,所以,在软件的需求分析阶段就充分考虑其实时性要求。再加之嵌入式应用软件对稳定性、可靠性、抗干扰等性能的要求都比较严格,所以嵌入式实时软件的开发难度较大。
无线通信的设计实现 无线通信的设计相对于监测站而言较简单,有许多现有的产品和通信系统可以利用,重点只是在于从多种实现方式中作出最优的选择。
常用的实现方式有:利用现有的通信网络(GSM/GPRS、CDMA移动网等)和相应的无线通信产品;通过无线收发设备,如无线Modem,无线网桥等专门的无线局域网;利用收发集成芯片在监测站端实现电路板级与监控中心的无线通信。
利用现有网络实现监测站与监控中心的无线通信 现有的通信网络较多,按业务建网是3G以前通信网络的特点,无线网络也不例外。设计无线远程监控系统可以借用的无线网络主要有:全球数字移动电话系统(GSM)、通用分组无线业务(GPRS)、采用码分多址(CDMA)技术的移动网、蜂窝式数字分组数据(CDPD)系统。
GSM(Globem System for Mobile)是全球最主要的2G标准,能够在低服务成本、低终端成本条件下提供较高的通信质量。就其业务而言,GSM是一个能够提供多种业务的移动ISDN(Integrated Services Digital Network,综合业务数字网络)。
GPRS(General Packet Packet Radio Service)在现有的GSM网络基础上增加一些硬件设备和软件升级,形成一个新的网络逻辑实体。它以分组交换技术为基础,采用IP数据网络协议,提高了现有的GSM网的数据业务传输速率,最高可达170kb/s。GPRS把分组交换技术引入现有GSM系统,使得移动通信和数据网络合二为一,具有“极速传送”、“永远在线”、“价格实惠”等特点。
CDMA(Code Division Multiple Access)网络采用扩展频谱技术,使用多种分集接收方式,使其具有容量大、通信质量好、保密性高和抗干扰能力强等特点。
CDPD(Cellular Digital Data)无线移动数据通信基于数字分组数据通信技术,以蜂窝移动通信为组网形式,是数据朎与移动通信的结合物。这种通信方式基于TCP/IP,系统结构为开放式,提供同层网络无缝连接和多协议网络服务。CDPD网络具有速度快、数据安全性高等特点,可与公用有线数据网络互联互通,非常适合传输实时、突发性和在线数据。
对使监控中心与监测站间的无线通信能利用现有的网络,对于特定的无线网需用相应的接入设备。这类设备市面上有现成的产品可供选择。接入GSM网络的通信模块有西门子的SIEMENS TC35i,接入GPRS可用西门子的MC35GPRS模块,接入CDMA网络的有华立H110 CDMA模块和AnyDATA公司的CDMA Modem(DTS-800/1800),遵循CDPD方式的无线调制解调器(Modem)有OmniSky和NovatelMinstrel。
利用现有的网络组建无线远程监控系统,网络连接如图1所示。其中无线接入模块产品一般都提供有RS232作为外通信接口,有些天线是内置的。利用现有的网络覆盖面广和可漫游等特点,使监测站和控制中心的位置不受距离的限制;但由于利用公网,安全性会有所降低。
通过专用无线收发设备建立无线局域网 这种设计实现方式结构简单,且无须向网络运营商付费;利用专网,安全性高。无线传输以微波作传输媒体,根据调制方式的不同,可分为扩展频谱方式和窄带调制方式两种。扩展频谱方式系统的抗干扰能力和安全性高,对其它电子设备的干扰小。窄带调制方式占用频带少,频带利用率高;通常选择专用频段,需要申请;相邻频道间影响大,通信质量、通信可靠性无法保障。
采用专用无线收发设备建立无线局域网的拓扑结构如图2所示。无线收发设备包括无线Modem和无线网桥等。无线Modem与监测站和控制中心之间采用RS232通信。若采用网桥为网络组建设备,网络拓扑结构将更为灵活,如图3所示。其中在无线网两端的有线网络是可取舍的,可以是以太网、令牌环网或点对点网络等本地局域网。也可以城域网,甚至是因特网,但使用公网时须考虑安全性和费用问题。
利用收发集成芯片在监测站端实现的无线通信 前两种组网方式的一个特点是采用现有的网络系统和产品,无线通信部分不须专门开发,实现较为容易。但由于所购买的产品均是独立器件,使整个系统特别是监测站一端结构复杂、体积庞大,往往在系统推广时会带来不利,且外购产品会增加系统的成本。若能将外购产品的功能与监测站集成在一起,在电路板级实现,将可以避免上述不利因素;但这会增加系统开发的难度,延长研制周期。须权衡利弊,根据项目组的开发实力和系统生命周期作最有利的选择。
采用此方法设计监测站需要实现的部分只是图1、2和3中的无线通信接口(可参看本文的网络版全文)。这部分的硬件实时框图以及处理器、存储器的关系大致如图4所示。各个子模块都有多种芯片可供选择,比如射频前端可用ML2751和RTF6900,实现调制/解调的有ML2722,扩频、解扩可用LD9002DX2和Stel-2000A等。
控制中心的设计实现
控制中心的设计相对于监测站的设计开发来讲较为简单,硬件设计少,除了普通微机(或工作站、工控机)外,还需要网络接入设备(若无线通信采用自行设计的模块实现,则须开发专用的无线网卡插入微机主板的预留总线插槽中)。控制中心的设计开发主要集中在应用软件的设计开发上,一般是基于Windows和Unix等常用操作系统的。当前用于此类软件开始、调试的工具较多,且功能强大,给控制中心软件的设计带来便利。
就软件的实现形式而言,一般除了界面模块外,其余各个功能模块均可设计成动态连接库文件(.dll)。人机接口界面模块可以为该无线远程监控系统的实际应用进行定制,以满足用户在界面美观、操作方便等方面的特殊要求。
采用C/C 语言在VC 开发环境下设计这样的系统软件涉及到的技术较多,包括内存管理、网络通信、多线程管理和数据库编程,甚至ActiveX等。
㈢ 嵌入式系统、软件开发环境、嵌入式处理器
呵呵,我做了嵌入式十年了,应该不算菜鸟吧。我来回答你的问题。
1:嵌入式系统有那些?
常用企业常用的有linux、wince、vxworks,还有一些手机的系统也算是嵌入式的系统android(google基于linux)、symbian、windows mobile,还有一些uC/OS、RTLinux、eCos、uclinux、QNX、LynxOS、EEOS。基本上常见我都列出来了。
2:嵌入式开发环境是什么?
linux uclinux ecos uc/os android RTlinux这些都可以用GCC来编译程序,具体是什么GCC和你的处理器有关系,比如arm,就用arm-linux-gcc,mips的处理可能就是用mips-linux-gcc,名字不固定,但是一般都是基于gcc来开发和移植的。还有wince主要是用platform builder来开发的。
在企业的应用中,当然开发环境其实不是固定的,关键是看芯片厂商根据不同的嵌入式系统提供的不同的开发环境。
3:嵌入式处理器有那些?
主流的处理器,如arm,目前ARM处理器主要有6大系列:ARM7、ARM9、ARM9E、ARM10、ARM11,SecurCore。还有与Intel合作实现的StrongARM和XScale处理器。
还有其他的处理器。比如MIPS处理器、PowerPC处理器,这些是市场上主流的。
当然,国产也有一些芯片,比如龙芯,但是这些其实不算什么分类,都是类MIPS的。
4:其实这些都是一些基本的介绍,如果你想深入了解这些东西,那需要一定的时间的。关于这些方面的知识,该怎么学习呢?我刚才看到一篇很不错的文章,是一个专科生介绍自己如何自学嵌入式,并找到嵌入式的工作,里面介绍了他的学习方法和学习过程,希望对你有帮助。
专科生学嵌入式到找到工作的前前后后--学习的榜样
先做个自我介绍,我07年考上一所很烂专科民办的学校,学的是生物专业,具体的学校名称我就不说出来献丑了。09年我就辍学了,我在那样的学校,一年学费要1万多,但是根本没有人学习,我实在看不到希望,我就退学了。
退学后我也迷茫,大专都没有毕业,我真的不知道我能干什么,我在纠结着我能做什么。所以辍学后我一段时间,我想去找工作,因为我比较沉默寡言,不是很会说话,我不适合去应聘做业务。我想应聘做技术的,可是处处碰壁。
一次偶然的机会,我才听到嵌入式这个行业。那天我去新华书店,在计算机分类那边想找本书学习。后来有个女孩子走过来,问我是不是读计算机的,有没有兴趣学习嵌入式,然后给我介绍了一下嵌入式现在的火热情况,告诉我学嵌入式多么的有前景,给我了一份传单,嵌入式培训的广告。听了她的介绍,我心里痒痒的,确实我很想去学会一门自己的技术,靠自己的双手吃饭。
回家后,我就上网查了下嵌入式,确实是当今比较热门的行业,也是比较好找工作的,工资也是相对比较高。我就下决心想学嵌入式了。于是我去找嵌入式培训的相关信息,说真的,我也很迷茫,我不知道培训是否真的能像他们宣传的那样好,所以我就想了解一段时间再做打算。
后来,我在网络知道看到一篇让我很鼓舞的文章《如何学习嵌入式》,是一个嵌入式高手介绍没有基础的朋友怎么自学入门学嵌入式,文章写的很好,包含了如何学习,该怎么学习。他提到一个方法就是看视频,因为看书实在太枯燥和费解的,很多我们也看不懂。这点我真的很认同,我自己看书往往看不了几页。
我在想,为什么别人都能自学成才,我也可以的!我要相信自己,所以我就想自学,如果实在学不会我再去培训。
主意一定,我就去搜索嵌入式的视频,虽然零星找到一些嵌入式的视频,但是都不系统,我是想找一个能够告诉我该怎么学的视频,一套从入门到精通的视频,一个比较完整的资料,最好能有老师教,不懂可以请教的。
后来我又找到一份很好的视频,是在嵌入式学习网推出的一份视频《从零基础开始学嵌入式》,网址:http://www.002r.com/embedvideo.htm
里面的教程还不错,很完整,可以让我从基础的开始学起。视频不便宜啊,但是我也忍了,毕竟买几本书都要几百了,何况他们还有半年的技术咨询和服务,算值了。
下面介绍下我的学习流程,希望对和我一样完全没有基础的朋友有所帮助。
收到他们寄过来的光盘后,我就开始学习了,由于我没有什么基础,我就从最简单的C语言视频教程学起,话说简单,其实我还是很多不懂的,我只好请教他们,他们还是很热心的,都帮我解决了。C语言我差不多学了一个礼拜,接下来我就学了linux的基本命令,我在他们提供linux虚拟机上都有做练习,敲linux的基本命令,写简单的C语言代码,差不多也就三个礼拜。我每天都在不停的写一些简单的代码,这样一月后我基本掌握了C和linux的基本操作。
接下来我就去学习了人家的视频的培训教程,是整套的,和去参加培训没有多大的区别,这一看就是两个月,学习了ARM的基本原理,学习嵌入式系统的概念,也掌握了嵌入式的环境的一些搭建,对linux也有更深层次的理解了,明白了嵌入式应用到底是怎么做的,但是驱动我只是有一点点的了解,这个相对难一点,我想以后再慢慢啃。
这两个月,除了吃饭睡觉,我几乎都在学习。因为我知道几乎没有基础,比别人差劲,我只能坚持努力着,我不能放弃,我必要要靠自己来养活自己,必须学好这门技术,同时我不懂的就问,这里真的很感谢他们的技术客服对我的任何问题都是耐心的解答,每天都我几乎都有好几个问题问他们,然后我就把不懂的问题总结记下来,这样慢慢积累了一段时间,我发现自己真的有点入门了。
最后的一个月,我就去看关于实践部分的内容,了解嵌入式项目具体的开发流程,需要什么样的知识,我就开始准备这方面的知识,也就是学习这方面的视频,同时他们建议我去找了找一些嵌入式面试的题目,为自己以后找工作做准备。我就到网上找了很多嵌入式的题目,把他们理解的记下来,这样差不多准备了20天左右
我觉得自己差不多入门了,会做一些简单的东西了。我就想去找工作看看,于是我就到51job疯狂的投简历,因为我学历的问题,专科没有毕业,说真的,大公司没有人会要我,所以我投的都是民营的小公司,我希望自己的努力有所回报。没有想过几天过后,就有面试了,但是第一次面试我失败了,虽然我自认为笔试很好,因为我之前做了准备,但是他们的要求比较严格,需要有一年的项目经验,所以我没有被选中。
后来陆续面试了几家公司,终于功夫不负有心人。我终于面试上的,是在闵行的一家民营的企业,公司规模比较小,我的职务是嵌入式linux应用开发,做安防产品的应用的。我想我也比较幸运,经理很看重我的努力,就决定录用我,开的工资是3500一个月,虽然我知道在上海3500只能过温饱的生活,但是我想我足够了。我至少不用每天都要靠父母养,我自己也能养活自己的。我想只要我继续努力,我工资一定会翻倍的。
把本文写出来,希望能让和我一样的没有基础的朋友有信心,其实我们没有必要自卑,我们不比别人笨,只要我们肯努力,我们一样会成功。
最后祝愿所有想学嵌入式的朋友更早的入门!
5:希望我的回答能帮到你,更希望你早日学好嵌入式。
㈣ 嵌入式发展方向有什么
嵌入式系统的定义
嵌入式系统是指用于执行独立功能的专用计算机系统。它由包括微处理器、定时器、 微控制器、存储器、传感器等一系列微电子芯片与器件,和嵌入在存储器中的微型操作系 统、控制应用软件组成,共同实现诸如实时控制、监视、管理、移动计算、数据处理等各 种自动化处理任务。嵌入式系统以应用为中心,以微电子技术、控制技术、计算机技术和 通讯技术为基础,强调硬件软件的协同性与整合性,软件与硬件可剪裁,以满足系统对功 能、成本、体积和功耗等要求。 最简单的嵌入式系统仅有执行单一功能的控制能力,在唯一的ROM 中仅有实现单一功 能的控制程序,无微型操作系统。复杂的嵌入式系统,例如个人数字助理(PDA)、手持电 脑(HPC)等,具有与PC 几乎一样的功能。实质上与PC 的区别仅仅是将微型操作系统与应 用软件嵌入在ROM、RAM 和/或FLASH 存储器中,而不是存贮于磁盘等载体中。很多复杂的 嵌入式系统又是由若干个小型嵌入式系统组成的。
嵌入式系统的背景
近些年来,随着以计算机技术,通讯技术为主的信息技术的快速发展和Internet 的广泛 应用,传统的控制学科正在发生变革,出现了许多新的生长点。伴随而来的一个现象是控制 专业的相当多的学生在毕业后进入了计算机,通讯行业,以致有人说学控制没有用,自动 化专业可以取消了。这些情况的出现使我们控制教育工作者反复思考,传统的控制应如何 拓宽它的领域?控制专业应该教什么才使学生感到有用?
嵌入式系统的发展历史
1.早期的嵌入式系统设计方法,通常是采用“硬件优先”原则。即在只粗略估计软件任 务需求的情况下,首先进行硬件设计与实现。然后,在此硬件平台之上,再进行软件设计。 因而很难达到充分利用硬件软件资源,取得最佳性能的效果。同时,一旦在测试时发现问 题,需要对设计进行修改时,整个设计流程将重新进行,对成本和设计周期的影响很大。 这种传统的设计方法只能改善硬件/软件各自的性能,在有限的设计空间不可能对系统做出 较好的性能综合优化,在很大程度上依赖于设计者的经验和反复实验。 2.90 年代以来随着电子系统功能的日益强大和微型化,系统设计所涉及的问题越来越 多,难度也越来越大。同时硬件和软件也不再是截然分开的两个概念,而是紧密结合、相 互影响的。因而出现了软硬件协同(codesign)设计方法,即使用统一的方法和工具对软 ,协同设计软硬件体系结构,以最大限度地挖掘系统软硬件能力,避免由 于独立设计软硬件体系结构而带来的种种弊病,得到高性能低代价的优化设计方案。
嵌入式操作系统分类
目前流行的嵌入式操作系统可以分为两类: 一类是从运行在个人电脑上的操作系统向 下移植到嵌入式系统中,形成的嵌入式操作系统,如微软公司的Windows CE 及其新版本, SUN 公司的Java 操作系统,朗讯科技公司的Inferno,嵌入式Linux 等。这类系统经过个 人电脑或高性能计算机等产品的长期运行考验,技术日趋成熟,其相关的标准和软件开发 方式已被用户普遍接受,同时积累了丰富的开发工具和应用软件资源。 另一类是实时操作系统,如WindRiver 公司的VxWorks,ISI 的pSOS,QNX 系统软件 公司的QNX,ATI 的Nucleus,中国科学院凯思集团的Hopen 嵌入式操作系统等,这类产 品在操作系统的结构和实现上都针对所面向的应用领域,对实时性高可靠性等进行了精巧 的设计,而且提供了独立而完备的系统开发和测试工具,较多地应用在军用产品和工业控 制等领域中。 Linux 是90 年代以来逐渐成熟的一个开放源代码的操作系统。 PC 机上的Linux 版本 在全球数以百万计爱好者的合力开发下,得到了非常迅速的发展。90 年代末uClinux, RTLinux 等相继推出,在嵌入式领域得到了广泛的关注,它拥有大批的程序员和现成的应 用程序,是我们研究开发工作的宝贵资源。
嵌入式系统的新曙光
近些年我们在嵌入式系统及其应用的科研工作中采用了信息产业中的最新技术,打破 了学科之间的界限,感到控制的出路原来很多,尽管处处是挑战。过去我们熟悉的“控制” 有很大的局限性.:一是不考虑硬件的限制, 二是不考虑控制器的复杂性及计算能力, 三是 不注重实用性和效益。在微处理器,微传感器和微型执行元件不断推出新产品的形势下, 控制的思路与手段正经历着巨大的变化。在经过一番艰苦的实践摸索之后,我们对控制学 科的研究和教学有了一些新的认识。本教材就是在我们这些年科研工作的基础上总结出来 的,它还比较粗糙,还需要今后花大力气把它完善与提高。
嵌入式系统的硬件/软件特征
嵌入式系统的硬件必须根据具体的应用任务,以功耗,成本,体积, 可靠性,处理能力等 为指标来选择。嵌入式系统的核心是系统软件和应用软件,由于存储空间有限,因而要求 软件代码紧凑,可靠,大多对实时性有严格要求。
学习嵌入式系统的意义
从控制意义上说,嵌入式系统涉及系统最底层的,芯片级的信息处理与控制。在某种 意义上,对这些“微观”世界的了解与驾驭正是控制的真正目的。嵌入式系统与通常意义 上的控制系统在设计思路和总体架构方面有许多不同之处,而这些不同之处恰恰是传统控 制学科教学中较少教给学生的。在当今信息化社会中,嵌入式系统在人们的日常工作和生 活中所占的份额,可能已超过传统意义的控制系统,这就是为什么我们的学生感到学的没 有用,而有用的又没有学的原因。在嵌入式系统及开发环境方面,目前仍有许多问题尚在 研究发展之中,如,嵌入式系统的硬件软件协同设计方法;面向多目标,多任务的微内核 嵌入式操作系统;分布嵌入式系统的实时性问题,分布式计算,分布式信息交互与综合处 理;以及嵌入式系统的多目标交叉编译和交叉调试工具的研究等。通过实验开发平台,学习嵌入式系统的一些基本理论和硬件软件综合设计的方法与技能,亲自动手,实现一个嵌入式系统的解决方案,为今后的深入研究打下一个初步基础。 结语:“嵌入式系统”作为自动化学科一门理论与实际密切结合的,知识与技术含量较高的综 合性专业课程,必将随着信息产业的发展而逐渐趋于成熟。