1、摘 要 随着电子技术飞速发展和我国传统产业结构升级的加速人们对设备越来越高用需求已无法满足当前和未来高性能的应用与发展需求。同时激烈的市场竞争和技术竞争要求产品的开发周期越来越短显然嵌入式系统的软、硬件技术和开发手段正日益受到重视成为各领域技术创新的重要基础。嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式是以应用为中心以计算机技术为基础软硬件可裁剪适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。由于嵌入式系统通常具有低功耗、体积小、集成度高等特点
2、因此随着消费家电的智能化和廉价微处理器的出现嵌入式系统将在日常生活里形成更大的应用领域。嵌入式就业广泛嵌入式人才社会需求量大。论文内容条理清楚本着嵌入式控制系统的概况开发应用的撰写思路分三章逐步展开。第一章概况详细地介绍了嵌式控制系统的定义、框架、特点、发展历程、现状、前景第二章嵌入式控制系统的开发主要论述了开发的步骤与方法第三章嵌入式控制系统的应用结合实例论述了嵌入式控制系统的实际应用服务大众生活。作为这些研究成果的应用本文在最后总结系统的各方面能力和分析存在的问题为进一步的研究提供了方向和宝贵的经验。关键词电子技术 嵌入式 系统 控制 计算机 集成系统目 录第一章 绪 论4一、嵌入式系统4
3、二、选题目的及意义4三、嵌入式系统高级编程语言4四、解决的关键问题5第2章ARM处理器结构和ARM指令集5一、寄存器和处理器模式5二、寄存器和处理器模式9ARM处理器结构9第三章 嵌入式Linux编程环境10一、Linux编译器vi的使用10二、gcc 编译器12三、Make 工程管理器12总 结13参考文献14第一章 绪 论一、嵌入式系统 计算机系统可以处理并管理各种数据,这里所说的数据包括文字、数字、图片以及各种指令。人们希望制造各种智能机器,这些机器需要一套“大脑”系统,对其中一些很小的机器,需要给他们设计一套小小的可以嵌在里面的“大脑”系统,这个“大脑”有多聪明,就要看它的软件了。这一
4、类隐藏在一些更大的系统中管理和控制这些系统并带有微处理器的专用软件硬件系统称为嵌入式计算机系统,通常为嵌入式系统。由于嵌入式体统本身是一个外延极广的名词,凡是与产品结合在一起的具有嵌入式特点的控制系统都可以叫做嵌入式系统,所以很难给它下一个准确的定义。 总体上,嵌入式系统可分划成硬件和软件两部分,硬件一般由高性能的微处理器和外围的接口电路组成,软件一般由硬件抽象层,操作系统,板级支持包,应用平台和应用程序几部分组成。二、选题目的及意义嵌入式系统技术已经广泛地应用于工业控制系统,信息家电,通信设备,医疗仪器,智能仪器仪表等众多领域,如手机,ADA,MP3,手持设备,智能电话,机顶盒等,可以说嵌入
5、式系统无处不在。市场对嵌入式系统的需求在飞速增长,企业在努力使用开发嵌入式系统的速度跟上市场与竞争的需要。但是,与此同时,嵌入式系统开发的基础离乱与方法的研究却严重滞后,这与其纳入市系统的特点有关。三、嵌入式系统高级编程语言Ada语言是20世纪70年代美国国防部开发并投入使用的功能强大的通用系统开发语言,最初为Ada83。它支持模块化、独立编译、协处理等功能。其可靠性、可维护性、可读性都是相当好的。后来,为了更好地支持OOP(Object-Oriented Programming),对其进行了改进,形成了目前广泛使用的Ada95。使用Ada语言可以大大改善系统的清晰性、可靠性、可维护性等性能指
6、标2,3。它是美国国防部指定的唯一一种可用于军用系统开发的语言。C语言是由Dennis Richie于1972年在AT&Bell实验室研究成功并投入使用的系统编程语言。其设计目标是使C既具有汇编语言的效率,又具有高级语言的易编程性。其最具代表性的应用是UNIX操作系统。从20世纪80年代中期C语言涉足实时系统后,受到了普遍欢迎。目前是使用最广泛的嵌入式系统编程语言。C+是由Bjarne Stroustrup 于1995年在Bell实验室研制成功并投入使用的。C+在支持现代软件工程、OOP、结构化等方面对C进行了卓有成效的改进,但在程序代码容量、执行速度、程序复杂程度等方面比C语言程序性能差一些
7、。Modula-2是由Nicklans Wirth在70年代后期根据Pascal 和Modula开发的系统设计语言。其主要目标是在模块化、系统编程、协同处理等方面对Pascal 进行改进。Modula-2具有很强的类型检查能力和丰富的低级功能支持。因此,可用它设计一个完整的实时程序而不用汇编语言的支持。Modula-3是1988年由DEC(Digital Equipment Company)和ORC(Olivetti Research Center)根据Modula-2开发研制并投入使用的系统开发语言。目标是设计一个功能强大但结构简单的通用编程语言。它在协同处理、OOP、自动垃圾收集以及对C语
8、言和UNIX的支持等方面对Modula-2进行了改进Java是网络语言,而嵌入式系统则在功能、价格、体积、功耗、上市时间等方面有特殊要求。因此Java语言受速度和代码容量的限制,本身并不适合于嵌入式系统的应用。但Sun公司并不愿意放弃这个发展潜力巨大的应用市场,对Java进行改进后发表了J2ME(Java2 Micro Edition)。它是Java API的一个子集,只包含了Java的关键特性,是专门针对对内存具有苛刻要求的嵌入式系统而设计的。J2ME粗略地将应用对象划分为两大类:内存在128KB512KB之间的设备和内存大于512KB的设备,根据不同的类别提供不同的用户接口和软件包。 四、
9、解决的关键问题需解决的关键问题有:1、硬件各个模块的测试2、软件的设计与调试第2章 ARM处理器结构和ARM指令集一、寄存器和处理器模式1.ARM 有7个基本工作模式:User:非特权模式,大部分任务执行在这种模式。限制你的内存访问并且你不能直接读取硬件设备正常程序执行的模式FIQ:当一个高优先级(fast)中断产生时将会进入这种模式高速数据传输和通道处理IRQ:当一个低优先级(normal)中断产生时将会进入这种模式通常的中断处理Supervisor:当复位或软中断指令执行时将会进入这种模式供操作系统使用的一种保护模式Abort: 当存取异常时将会进入这种模式虚拟存储及存储保护Undef:
10、当执行未定义指令时会进入这种模式软件仿真硬件协处理器System: 使用和User模式相同寄存器集的特权模式特权级的操作系统任务2.寄存器组在26位体系下,ARM 处理器有二十七个寄存器,其中一些是在一定条件下使用的,所以一次只能使用十六个。 寄存器 0 到寄存器 7 是通用寄存器并可以用做任何目的。不象 80x86 处理器那样要求特定寄存器被用做栈访问,或者象 6502 那样把数学计算的结果放置到一个累加器中,ARM 处理器在寄存器使用上是高度灵活的。 寄存器 8 到 12 是通用寄存器,但是在切换到 FIQ 模式的时候,使用它们的影子(shadow)寄存器。 寄存器 13 典型的用做 OS
11、 栈指针,但可被用做一个通用寄存器。这是一个操作系统问题,不是一个处理器问题,所以如果你不使用栈,只要你以后恢复它,你可以在你的代码中自由的占用(corrupt)它。每个处理器模式都有这个寄存器的影子寄存器。 寄存器 14 专职持有返回点的地址以便于写子例程。当你执行带连接的分支的时候,把返回地址存储到 R14 中。同样在程序第一次运行的时候,把退出地址保存在 R14 中。R14 的所有实例必须被保存到其他寄存器中(不是实际上有效)或一个栈中。这个寄存器在各个处理器模式下都有影子寄存器。一旦已经保存了连接地址,这个寄存器就可以用做通用寄存器了。 寄存器 15 是程序计数器。它除了持有指示程序当
12、前使用的地址的二十六位数之外,还持有处理器的状态。 为更清晰一些, 提供下列图表: User 模式 SVC 模式 IRQ 模式 FIQ 模式 APCSR0 - R0 - R0 - R0 a1R1 - R1 - R1 - R1 a2R2 - R2 - R2 - R2 a3R3 - R3 - R3 - R3 a4R4 - R4 - R4 - R4 v1R5 - R5 - R5 - R5 v2R6 - R6 - R6 - R6 v3R7 - R7 - R7 - R7 v4R8 - R8 - R8 R8_fiq v5R9 - R9 - R9 R9_fiq v6R10 - R10 - R10 R10_f
13、iq slR11 - R11 - R11 R11_fiq fpR12 - R12 - R12 R12_fiq ipR13 R13_svc R13_irq R13_fiq spR14 R14_svc R14_irq R14_fiq lr- R15 / PC - pc最右侧的列是 APCS 代码使用的名字。APCS,ARM 过程调用标准(ARM Procedure Call Standard),提供了紧凑的编写例程的一种机制,定义的例程可以与其他例程交织在一起。最显著的一点是对这些例程来自哪里没有明确的限制。它们可以编译自 C、 Pascal、也可以是用汇编语言写成的。 APCS 定义了: 对寄存
14、器使用的限制。 使用栈的惯例。 在函数调用之间传递/返回参数。 可以被回溯的基于栈的结构的格式,用来提供从失败点到程序入口的函数(和给予的参数)的列表。程序计数器构造如下图2-2: 2731N Z C V Q2867I F T mode1623 815 54024fsxc U n d e f i n e dJ图2-2 程序计数器构造n 条件位:n N = 1-结果为负,0-结果为正或0n Z = 1-结果为0,0-结果不为0n C =1-进位,0-借位n V =1-结果溢出,0结果没溢出n Q 位:n 仅ARM 5TE/J架构支持n 指示增强型DSP指令是否溢出n J 位n 仅ARM 5TE/
15、J架构支持n J = 1: 处理器处于Jazelle状态n 中断禁止位:n I = 1: 禁止 IRQ.n F = 1: 禁止 FIQ.n T Bitn 仅ARM xT架构支持n T = 0: 处理器处于 ARM 状态n T = 1: 处理器处于 Thumb 状态n Mode位(处理器模式位):n 0b10000Usern 0b10001FIQn 0b10010IRQn 0b10011Supervisorn 0b10111Abortn 0b11011Undefinedn 0b11111Systemn 当处理器执行在ARM状态:n 所有指令 32 bits 宽n 所有指令必须 word 对齐n
16、所以 pc值由bits 31:2决定, bits 1:0 未定义 (所以指令不能halfword / byte对齐).n 当处理器执行在Thumb状态:n 所有指令 16 bits 宽n 所有指令必须 halfword 对齐n 所以 pc值由bits 31:1决定, bits 0 未定义 (所以指令不能 byte对齐).n 当处理器执行在Jazelle状态:n 所有指令 8 bits 宽n 处理器执行 word 存取一次取4条指令二、寄存器和处理器模式ARM处理器结构ARM处理器的框架如图2-1所示:乘法器指令解码地址自增器nRESETnMREQSEQABORTnIRQnFIQnRWMAS1:
17、0LOCKnCPICPACPBnWAITMCLKnOPCBIGENDISYNCnTRANSnM4:0桶形移位器32 位 ALU写数据 寄存器读数据 寄存器地址寄存器寄存器A31:0ABE及控制 逻辑PC Update解码站指令 解码IncrementerPCABusBBus第三章 嵌入式Linux编程环境一、Linux编译器vi的使用1.vi的模式 vi有三种模式,分别为命令行模式,插入模式及底行模式,下面具体进行介绍各模式的功能。(1)命令行模式。用户在用vi编辑文件时,最初进入的为一般模式。在该模式中可以通过上下移动光标进行“删除字符”或“整行删除”等操作,也可以进行“复制”,“粘贴”等操
18、作,但无法编辑文字。(2)插入模式。只有在该模式下,用户才能进行文字编辑输入,用户可按Exs 键回到命令行模式。(3)底行模式。在该模式下,光标位于屏幕的底行。用户可以进行文件保存或退出操作,也可以设置编辑环境,如寻找字符串,列出行号等。2.vi的基本流程(1)进入vi,即在命令行下输入vi hello。此时进入的是命令行模式,光标位于屏幕的上方。(2) 在命令行模式下输入i进入到插入模式,如下图,可以看出,在屏幕底部显示有“插入”表示插入模式,在该模式下可以输入文字信息。(3)最后,在插入模式中,输入Esc,则当前模式转入命令模式,并在底行中输入“:wq”(存盘退出)进行底行模式,如下图所示
19、。二、gcc 编译器(1)预处理在该阶段,编译器将上述代码中的stdio.h编译进来,并且用户可以使用gcc的选项“-E”进行查看,该选项的作用是让gcc在预处理结束后停止编译过程。(2)编译gcc 把代码编译成汇编语言。(3)汇编汇编阶段是把编译阶段生成“.s”文件转成目标文件,读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了,语句如下。rootlocalhost Gcc# gcc c hello.s o hello.o(4)链接成功编译之后,就进入了链接阶段。在这里涉及一个重要的概念-函数库。三、Make 工程管理器1. Makefile介绍make命令执行时,
20、需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。 首先,我们用一个示例来说明Makefile的书写规则。以便给大家一个感兴认识。这个示例来源于GNU的make使用手册,在这个示例中,我们的工程有8个C文件,和3个头文件,我们要写一个Makefile来告诉make命令如何编译和链接这几个文件。我们的规则是:(1). 如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。(2). 如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。(3). 如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序
21、。2. Makefile 基本结构(1)需要由make 工具创建的目标体,通常是目标文件或可执行文件。(2)要创建的目标体所依赖额文件。(3)创建每个目标时需要运行的命令。3.Makefile变量M akefile 往往是包含很多的文件和命令,这也是Makefile产生的原因。下面就可给出稍复杂一些的Makefile 进行讲解。在上面的例子中,先让我们看看edit的规则:edit : main.o kbd.o command.o display.o insert.o search.o files.o utils.occ -o edit main.o kbd.o command.o displa
22、y.o insert.o search.o files.o utils.o我们可以看到.o文件的字符串被重复了两次,如果我们的工程需要加入一个新的.o文件,那么我们需要在两个地方加(应该是三个地方,还有一个地方在clean中)。当然,我们的makefile并不复杂,所以在两个地方加也不累,但如果makefile变得复杂,那么我们就有可能会忘掉一个需要加入的地方,而导致编译失败。所以,为了makefile的易维护,在makefile中我们可以使用变量。makefile的变量也就是一个字符串,理解成C语言中的宏可能会更好。1总 结着Internet/Intranet等技术的迅速发展和广泛应用,很多
23、企业都构建了自己的局域网,他们能通过网络迅速地发布和传达信息,也能通过网络迅速地搜寻和获取信息。网络改变了我们的日常生活,同时也给企业管理带来深刻的变革,建立基于Web的招聘管理系统正是顺应时代发展的需要。嵌入式系统是一个很有发展空间的领域,以嵌入式系统为标志的后PC时代已经到来。但嵌入式系统是一个软硬件结合很紧密的课题,特别是涉及到bios开发、bootloader开发方面,则要求你对硬件要有一个较深的了解。所以学习嵌入式需要掌握了解很多知识,所以学习顺序一定不能乱,在了解嵌入式系统开发的体系结构后,一步一步的下手。搭建开发环境需要:硬件平台, 编译器, 调试器, RTOS, C/C+库,
24、协议栈等。建议有志于想把嵌入式学好者最好先分析一种RTOS的源代码-UCOS最容易;再分析一种通讯协议栈的实现方式-TCP/IP最实用 ;精通一种单片机的开发集成环境-keil C最经典;精通一种MCU的开发集成环境-ADS 1.2最流行。通过这次我对计算机硬件方面,和对计算机的整个体系结构从底层驱动到最高应用层以及中间那些协议都有了比较有了一些较具体深入的认识。对日益渗入到人们生活的各个领域嵌入式系统的设计、开发过程也有了一个详细的了解。对我认识问题分析问题解决问题的能力是一个极好的煅炼,对我的计算机水平也是一个极大的提高。参考文献1 康一梅 张永革 李志军 胡江 武伟 嵌入式软件测试2 刘
25、永涛 主编 ARM 嵌入式 体系结构与接口技术3 葛玉辉,田经兵,唐伦刚.人力资源管理模式比较研究J.商业研究,2002,252(8):7678.4 田红敏,陆伟锋.人力资源管理系统的设计与实现.江西教育学院学报(综合).2003(6).5 王锋,张景,何文娟等,基于Internet的人力资源管理系统,微机发展,2003(9)P(9597).6 余红传,张志胜,史金飞,ERP中人力资源子系统解决方案研究与实现现代制造工程,2003(1)P(1214).7 美Timothy Budd著.三联四方工作室译面向对象Java编程思想.北京:清华大学出版社,2002(8)8 陈锦辉,王景皓编著.(XML与Java程序设计大全)北京:中国铁道出版社2002(2),36.9 ZSC/太平洋网络学院编译,JAVA程序员必读:基础篇(2)面向对象编程概念.太平洋电脑网.10 美Way S. Horstmann等著.李如豹,刚冬梅,张雪莲等译.最新Java2核心技术卷工:原理.北京:机械工业出版社,2002(2).11 美George Reese著.石永薪,宋隆译.JDBC与Java数据库编程北京:中国电力出版社,2002(3),34.12 华清远见嵌入式学院 孙天泽 主编嵌入式Linux操作系统 16