嵌入式系统设计_第1页
嵌入式系统设计_第2页
嵌入式系统设计_第3页
嵌入式系统设计_第4页
嵌入式系统设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式系统设计1嵌入式系统的概念目前,对嵌入式系统的定义多种多样,但没有一种定义是全面的。下面给出两种比较合理定义: 从技术的角度定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。从系统的角度定义:嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。术语嵌入式反映了这些系统通常是更大系统中的一个完整的部分,称为嵌入的系统。嵌入的系统中可以共存多个嵌入式系统。2嵌入式处理器可以分为以下几大类:嵌入式微处理器;嵌入式微控制器;嵌入式DSP处理器;嵌入式片上系统(SOC)。3 嵌入式操作系统实时操作系

2、统的特点一般实时操作系统应用于实时处理系统的上位机和实时查询系统等实时性较弱的实时系统,并且提供了开发、调试、运用一致的环境。 嵌入式实时操作系统应用于实时性要求高的实时控制系统,而且应用程序的开发过程是通过交叉开发来完成的,即开发环境与运行环境是不一致。嵌入式实时操作系统具有规模小(一般在几K几十K 内)、可固化使用实时性强(在毫秒或微秒数量级上)的特点IEEE 的实时UNIX分委会认为实时操作系统应具备以下的几点: 异步的事件响应 。切换时间和中断延迟时间确定 。优先级中断和调度 抢占式调度 。内存锁定 。连续文件 。同步4实时操作系统(RTOS) 实时操作系统是一段在嵌入式系统启动后首先

3、执行的背景程序,用户的应用程序是运行于RTOS之上的各个任务,RTOS根据各个任务的要求,进行资源(包括存储器、外设等)管理、消息管理、任务调度、异常处理等工作。在RTOS支持的系统中, 每个任务均有一个优先级,RTOS根据各个任务的优先级,动态地切换各个任务,保证对实时性的要求。5非占先式内核非占先式内核要求每个任务自我放弃CPU 的所有权。非占先式调度法也称作合作型多任务,各个任务彼此合作共享一个CPU。异步事件还是由中断服务来处理。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的

4、任务才能获得CPU的使用权。6占先式内核当系统响应时间很重要时,要使用占先式内核。因此绝大多数商业上销售的实时内核都是占先式内核。最高优先级的任务一旦就绪,总能得到CPU的控制权。当一个运行着的任务使一个比它优先级高的任务进入了就绪状态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU的控制权。如果是中断服务子程序使一个高优先级的任务进入就绪态,中断完成时,中断了的任务被挂起,优先级高的那个任务开始运行。7中断中断是一种硬件机制,用于通知CPU有个异步事件发生了。中断一旦被识别,CPU保存部分(或全部)上下文即部分或全部寄存器的值,跳转到专门的子程序,称为中

5、断服务子程序(ISR)。中断服务子程序做事件处理,处理完成后,程序回到:1. 在前后台系统中,程序回到后台程序;2. 对非占先式内核而言,程序回到被中断了的任务;3. 对占先式内核而言,让进入就绪态的优先级最高的任务开始运行。8使用实时操作系统的必要性嵌入式实时操作系统在目前的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统庞大的应用中显得愈来愈重要。在嵌入式应用中,只有把CPU嵌入到系统中,同时又把操作系统嵌入进去,才是真正的计算机嵌入式应用。使用实时操作系统主要有以下几个因素:嵌入式实时操作系统提高了系统的可靠性。 提高了开发效率,缩短了开发周期。 嵌入式实时操作系统充分发挥了32位CPU

6、的多任务潜力。9实时操作系统的优缺点优点:在嵌入式实时操作系统环境下开发实时应用程序使程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立的任务模块,使应用程序的设计过程大为简化;而且对实时性要求苛刻的事件都得到了快速、可靠的处理。通过有效的系统服务,嵌入式实时操作系统使得系统资源得到更好的利用。缺点:但是,使用嵌入式实时操作系统还需要额外的ROM/RAM开销,25%的CPU额外负荷,以及内核的费用。10常见的嵌入式操作系统嵌入式LinuxWin CEVxWorks C/OS-II第二章ARM7体系结构1 .ARM体系结构ARM体系结构还有以下特点每条数据处

7、理指令可同时包含算术逻辑单元(ALU)的运算和移位处理,实现ALU和移位器的最大利用;使用地址自增和自减的寻址方式优化程序循环;装载/保存指令对数据的批量传输,实现最大数据吞吐量;大多数指令的条件执行,实现最快速的代码执行2.三级流水线ARM处理器使用流水线来增加处理器指令流的速度,这样可使几个操作同时进行,并使处理和存储器系统连续操作,能提供0.9MIPS/MHz的指令执行速度。正常操作过程中,在执行一条指令的同时对下一条(第二条)指令进行译码,并将第三条指令从存储器中取出。3.ARM处理器状态ARM7TDMI处理器内核包含2套指令系统,分别为ARM指令集和Thumb指令,并且各自对应1种处

8、理器的状态:ARM状态:32位,处理器执行字方式的ARM指令,处理器默认为此状态;Thumb状态:16位,处理器执行半字方式的Thumb指令。注意:两个状态之间的切换并不影响处理器模式或寄存器内容。4.ARM处理器模式ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。这两种模式都不能由异常进入,想要进入必须修改CPSR,而且它们使用完全相

9、同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。何时进入异常模式,具体规定如下:处理器复位之后进入管理模式,操作系统内核通常处于管理模式;当处理器访问存储器失败时,进入数据访问中止模式;当处理器遇到没有定义或不支持的指令时,进入未定义模式;中断模式与快速中断模式分别对ARM处理器2种不同

10、级别的中断作出响应。5.ARM内部寄存器Thumb状态寄存器集是ARM状态集的子集,程序员可以直接访问的寄存器为:8个通用寄存器R0R7;程序计数器(PC);堆栈指针(SP);链接寄存器(LR);当前程序状态寄存器( CPSR)。6.CPSR和SPSR寄存器CPSR为当前程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。7.当前程序状态寄存器 ARM内核包含1个CPSR和5个仅供异常处理程序使用的SPSR。CPSR反映当前处理器的状态,其包含:4个条件代码标志

11、(负标志N、零标志Z、进位标志C和溢出标志V );2个中断禁止位(IRQ禁止与FIQ禁止);5个对当前处理器模式进行编码的位(M4:0);1个用于指示当前执行指令的位(ARM指令还是Thumb指令)。8.控制位中断禁止控制位I和F当控制位I置位时,IRQ中断被禁止;当控制位F置位时,FIQ中断被禁止9.异常简介只要正常的程序流被暂时中止,处理器就进入异常模式。10.异常的进入当一个异常导致模式切换时,内核自动的做如下处理将异常处理程序的返回地址(加固定的偏移量)保存到相应异常模式下的LR;将CPSR的当前值保存到相应异常模式下的SPSR设置CPSR为相应的异常模式设置PC为相应异常处理程序的中

12、断入口向量地址,跳转到相应的异常中断处理程序执行;11.异常的退出当异常处理程序结束时,异常处理程序必须: 返回到发生异常中断的指令的下一条指令处执行,即就是说将LR中的值减去偏移量后移入PC; 将SPSR的值复制回CPSR清零在入口处置位的中断禁止标志 12.IRQ与FIQ中断请求与快速中断请求IRQ:只有当CPSR中相应的中断屏蔽位被清除时,才可能发生IRQ异常,中断请求(IRQ)异常由一个nIRQ输入端的低电平所产生的正常中断。 注:中断异常产生时,中断异常模式下的R14保存的是PC的值。FIQ:快速中断请求(FIQ)适用于对一个突发事件的快速响应,这得益于在ARM状态中,快中断模式有8

13、个专用的寄存器可用来满足寄存器保护的需要第四章LPC2000系列ARM硬件结构1.片内FLASH程序存储器片内Flash通过128位宽度的总线与ARM内核相连,具有很高的速度,加上特有的存储器加速功能,因此可以将程序直接放在Flash上运行。2.片内Flash编程方法1. 使用JTAG仿真/调试器,通过芯片的JTAG接口下载程序;2. 使用在系统编程技术(即ISP),通过UART0接口下载程序3.使用在应用编程技术(即IAP),在用户程序运行时对Flash进行擦除和/或编程操作,实现数据的存储和固件的现场升级。2.存储器映射:给物理存储器分配逻辑地址的过程称为存储器映射。3.存储器重映射将已经

14、过映射的存储器再次映射的过程称为存储器重映射,它使同一物理存储单元出现多个不同的逻辑地址。这些存储单元主要包括引导块“Boot Block”和用于保存异常向量表的少量存储单元。注意:存储器重映射并不是对映射单元的内容进行了复制,而只是将多个地址指向了同一个存储单元,这种效果是通过芯片内部的“存储器管理部件”实现的。4.AHB和VPBAHB(先进的高性能总线)和VPB(VLSI外设总线)外设区域都为2M字节,可各分配128个外设。每个外设空间的规格都为16K字节,这样就简化了每个外设的地址译码。注意:外设寄存器的地址都是字对齐。AHB 和VPB外设区域中不管是字还是半字,都是一次性访问。5.引导

15、块及其功能引导块(Boot Block)是芯片设计厂家在LPC2000系列ARM内部固化的一段代码,用户无法修改或删除。这段代码在芯片复位后被首先运行,其功能主要是:判断运行哪个存储器上的程序;检查用户代码是否有效;判断芯片是否被加密;芯片的在应用编程(IAP)以及在系统编程功能(ISP)注意:部分器件内部虽然没有用户Flash空间,但它们仍然存在Boot Block,并且复位后会被首先运行。6.异常向量表概述异常向量表位于存储器映射的0x00000x001C地址空间,定义了8个异常向量,每个异常向量占一个字。通常在每个异常入口放置一条ARM 跳转指令,其跳转目标地址放在0x001D0x000

16、3F地址空间,即异常服务函数的入口地址。所以一个异常向量表实际包含了8个字的异常入口和8个字的跳转目标地址,占用了16个字(64字节)的存储单元。7.异常向量表的重映射异常向量表可以来自四个不同的区域:Boot Block、片内Flash、片内RAM和外部存储器。微控制器可以执行这些存储器中的代码。 除了片内Flash的向量表位于0x00000x003F地址上,其他存储器的向量表都不位于这个地址。为了能让ARM内核通过访问0x00000x003F地址访问到其他存储区域的向量表,这样向量表必须进行重映射注意:除了“用户片内Flash 模式”外,其它模式下都无法访问片内Flash的0x00000x

17、003F区域。8.时钟部件VPB分频器VPB总线是芯片的内部总线,上面挂接着绝大部分的外设,而这些外设的工作速度相对于ARM内核来说都要慢一些,VPB分频器决定了处理器时钟(cclk)与外设器件所使用的时钟(pclk)之间的关系。VPB分频器主要有两个用途:将处理器时钟(cclk)分频,以便外设在合适的速度下工作。降低系统功耗。9.功率控制10.向量中断控制器ARM7TDMI内核具有两个中断输入,分别为IRQ中断和FIQ中断。向量中断控制器(VIC)负责管理芯片的中断源,最多可以管理32个中断输入请求。11.中断分类中断输入请求可以在VIC中被设置为以下三类:FIQ中断:具有最高优先级;向量I

18、RQ中断:具有中等优先级;非向量IRQ中断:具有最低优先级;12.IRQ中断特点区别13.看门狗a看门狗的用途就是使微控制器在进入错误状态后的一定时间内复位。b其原理是在系统正常工作时,用户程序每隔一段时间执行喂狗动作(一些寄存器的特定操作),如果系统出错,喂狗间隔超过看门狗溢出时间,那么看门狗将会产生复位信号,使微控制器复位。14.特性 带内部预分频器的可编程32位定时器; 如果没有周期性重装(喂狗)动作,则产生片内复位; 具有调试模式; 看门狗软件使能后,必须由复位来禁止; 错误的喂狗动作,将立即引起复位。15.使用看门狗的注意要点 WDT定时器为递减计数,向下溢出时产生中断和(或)复位;

19、 使能看门狗后,必需要要执行一次正确的喂狗操作才能启动看门狗; 看门狗没有独立的振荡器,其使用PCLK作为时钟。所以CPU不能进入掉电模式,否则看门狗将停止工作; 看门狗溢出时间 = Ntpclk416脉宽调制器PWM特性: 独立的32位定时器/计数器; 7个匹配寄存器,可实现6路单边沿PWM输出,或3路双边沿PWM输出,或两者的混合输出; 所有PWM输出的频率都是相同的; 脉冲周期和宽度可以是任意的定时器计数值; 匹配寄存器更新与脉冲输出同步,防止产生错误脉冲。输出波形可分为两类: 单边沿输出; 双边沿输出。第五章uc/osII程序设计基础1.任务设计在基于实时操作系统的应用程序设计中,任务

20、设计是整个应用程序的基础,其它软件设计工作都是围绕任务设计来展开。2.任务的分类单次执行类;周期执行类;事件触发类3.任务的优先级任务的优先级安排原则如下:快捷性:在前面各项条件相近时,越快捷(耗时短)的任务安排的优先级越高,以使其它就绪任务的延时缩短;频繁性:对于周期性任务,执行越频繁,则周期越短,允许耽误的时间也越短,故应该安排的优先级也越高,以保障及时得到执行;中断关联性:与中断服务程序(ISR)有关联的任务应该安排尽可能高的优先级,以便及时处理异步事件,提高系统的实时性。如果优先级安排得比较低,CPU有可能被优先级比较高的任务长期占用,以致于在第二次中断发生时连第一次中断还没有处理,产

21、生信号丢失现象;关键性:任务越关键安排的优先级越高,以保障其执行机会;紧迫性:因为紧迫任务对响应时间有严格要求,在所有紧迫任务中,按响应时间要求排序,越紧迫的任务安排的优先级越高。紧迫任务通常与ISR关联;传递性:信息传递的上游任务的优先级高于下游任务的优先级。4.系统函数的分类根据功能分类:初始化;内存管理;任务管理;事件管理;事件管理;系统管理5.事件的一般使用规则相似性;先创建后使用;配对使用;在ISR中使用6.系统函数使用场合a时间管理1.)控制任务的执行周期2.)控制任务的运行节奏 3.)状态查询 b资源同步;c行为同步7.时间管理函数的使用场合时间管理服务函数是以系统节拍为处理单位

22、的,实际的时间与希望的时间是有误差的,最坏的情况下误差接近一个系统节拍。因此时间管理服务函数只能用在对时间精度要求不高的场合,或者时间间隔较长的场合。8.行为同步一个任务的运行过程需要和其它任务的运行配合,才能达到预定的效果,任务之间的这种动作配合和协调关系称为“行为同步”2.数据通信 9.系统管理中进入然后退出临界区进入然后退出临界段是“资源同步”的方法之一,能够在访问共享资源时保障信息的可靠性和完整性。方法10.互斥信号量 这种二值信号量可以实现对共享资源的独占式处理,所以叫做互斥信号量。互斥信号量也称为mutex,专用于资源同步。互斥信号量具有一些特性:占用一个空闲优先级,以便解决优先级

23、反转问题。可以说能防止优先级反转现象的信号就是互斥信号量。11.使用互斥信号量有以下3点需要注意1.在嵌入式系统中,经常使用互斥信号量访问共享资源来实现资源同步。而用来实现资源同步的互斥信号量在创建时初始化,这是由OSMutexCreate ()函数来实现的;2.OSMutexPost ()发送互斥信号量函数与OSMutexPend ()等待互斥信号量函数必须成对出现在同一个任务调用的函数中,因此我们需要编写一个公共的库函数,因为有多个任务可能调用这个函数 ;3. 信号量最好在系统初始化的时候创建,不要在系统运行的过程中动态地创建和删除。在确保成功地创建信号量之后,才可对信号量进行接收和发送操作。12.互斥信号量实现资源同步 信号量在实时多任务系统中,信号量被广泛用于:任务间对共享资源的互斥、任务和中断服务程序之间的同步、任务之间的同步。13.信号量的工作方式 1.任务间同步:一对一同步; 多对一同步.在实际的应用中,常用信号量实现任务间的同步,OSSemPend()和OSSemPost()会出现在不同任务的不同函数中,但不一定成对出现。2.资源同步14.在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论