您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 嵌入式系统原理及应用
1嵌入式系统设计与实例开发——ARM与C/OS-Ⅱ基本概念及设计方法2本节提要132嵌入式系统软硬件基础(第二次课)嵌入式系统设计方法(后续)一个嵌入式设计方法实例(后续)3嵌入式系统的软/硬件框架嵌入式微处理器SDRAMROMI/OA/DD/A人机交互接口通用接口实时操作系统(RTOS)图形用户接口BSP/HAL硬件抽象层/板极支持包任务管理文件系统应用程序嵌入式计算机系统硬件层软件层中间层功能层4冯·诺依曼体系结构和哈佛体系结构CISC与RISCIP核流水线存储器系统嵌入式系统硬件基础5冯·诺依曼体系结构模型指令寄存器控制器数据通道输入输出中央处理器存储器程序指令0指令1指令2指令3指令4数据数据0数据1数据26哈佛体系结构指令寄存器控制器数据通道输入输出中央处理器程序存储器指令0指令1指令2数据存储器数据0数据1数据2地址指令地址数据7CISC和RISCCISC:复杂指令集(ComplexInstructionSetComputer)•具有大量的指令和寻址方式;•8/2原则:80%的程序只使用20%的指令;•大多数程序只使用少量的指令就能够运行。RISC:精简指令集(ReducedInstructionSetComputer)•在通道中只包含最有用的指令;•确保数据通道快速执行每一条指令;•使CPU硬件结构设计变得更为简单。8CISC与RISC的对比类别CISCRISC指令系统指令数量很多较少,通常少于100执行时间有些指令执行时间很长,如整块的存储器内容复制;或将多个寄存器的内容复制到存贮器没有较长执行时间的指令编码长度编码长度可变,1-15字节编码长度固定,通常为4个字节寻址方式寻址方式多样简单寻址操作可以对存储器和寄存器进行算术和逻辑操作只能对寄存器对行算术和逻辑操作,Load/Store体系结构编译难以用优化编译器生成高效的目标代码程序采用优化编译技术,生成高效的目标代码程序9知识产权核(IP核,intellectualproperty)知识产权(IP)电路或核是设计好并经过验证的集成电路功能单元。IP复用意味着设计代价降低(时间,价格)。IP核的类别:微处理器微处理器:ARM,PowerPC;存储器存储器:RAM,memorycontroller;外设:PCI,DMAcontroller;多媒体处理:MPEG/JPEG;encoder/decoder;数字信号处理器(DSP);通信:Ethernetcontroller,router。10IP核的种类SoftCores(“code”)(软核)HDL语言描述;灵活度高,可修改;与工艺独立,可根据具体的加工工艺重新综合;IP很难保护。Firmcores(“code+structure”)(固核)逻辑综合后的描述;与工艺相关。Hardcores(“physical”)(硬核)物理综合后的描述;准备流片;包含工艺相关的布局和时序信息;IP很容易保护。多数的处理器和存储器11IP核的商业模型三种模式1.设计者提供设计和工具的许可证DSPGroup(PineandOakCores),3Soft,ARM。提供包括HDL在内的模拟模型,工具或仿真器。使用者负责设计制造。2.核厂商设计并制造集成电路芯片TI,Motorola,Lucent。VLSI,SSI,Cirrus,Adaptec。3.核厂商卖核,负责为客户设计并制造芯片LSIlogic,TI,Lucent。12IP核的市场构成74%为硬件设计厂商。26%将购买IP核。13ARM的IP核固化宏单元(硬核)ARM920TARM7TDMIARM720TARM1022E可综合内核(软核)ARM926EJ-SARM7TDMI-SARM1026EJ-S测试芯片ARM10200E14流水线技术流水线技术:几个指令可以并行执行。•提高了CPU的运行效率。•内部信息流要求通畅流动。译码取指执行add译码取指执行sub译码取指执行cmp时间AddSubCmp15指令流水线—以ARM为例为增加处理器指令流的速度,ARM7系列使用3级流水线。允许多个操作同时处理,比逐条指令执行要快。PC指向正被取指的指令,而非正在执行的指令。FetchDecodeExecute从存储器中读取指令解码指令寄存器读(从寄存器Bank)移位及ALU操作寄存器写(到寄存器Bank)PCPCPC-4PC-2PC-8PC-4ARMThumb16最佳流水线该例中用6个时钟周期执行了6条指令。所有的操作都在寄存器中(单周期执行)。指令周期数(CPI)=1。操作周期123456ADDSUBMOVANDORREORCMPRSBFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteDecodeExecuteFetchDecodeFetchFetch17LDR流水线举例该例中,用6周期执行了4条指令指令周期数(CPI)=1.5周期操作123456ADDSUBLDRMOVANDORRFetchDecodeExecuteFetchDecodeExecuteFetchDecodeExecuteDataWritebackFetchDecodeExecuteFetchDecodeFetch18分支流水线举例流水线被阻断。注意:内核运行在ARM状态。周期123450x8000BL0x8004X0x8008XX0x8FECADD0x8FF0SUB0x8FF4MOV地址操作FetchDecodeExecuteFetchDecodeExecuteFetchDecodeFetchFetchDecodeExecuteLinkretAdjustFetchDecodeFetch19存储器系统RAM:随机存取存储器,SRAM:静态随机存储器,DRAM:动态随机存储器。•SRAM比DRAM快。•SRAM比DRAM耗电多。•DRAM存储密度比SRAM高得多。•DRAM需要周期性刷新。ROM:只读存储器。FLASH:闪存。20输入输出接口I/OA/D、D/A键盘LCD存储器接口设备接口21本节提要132嵌入式系统软硬件基础嵌入式系统设计方法一个嵌入式设计方法实例22嵌入式系统软件基础操作系统的分类嵌入式实时操作系统前台与后台多任务,任务优先级,调度非占先式与占先式、可重入型函数23操作系统的分类(1)顺序执行系统:系统内只含有一个程序,独占CPU的运行时间,按语句顺序执行该程序,直至执行完毕,另一程序才能启动运行。如DOS操作系统。(2)分时操作系统:系统内同时可以有多个程序运行,把CPU的时间按顺序分成若干片,每个时间片内执行不同的程序,如UNIX。(3)实时操作系统:系统内有多个程序运行,每个程序有不同的优先级,只有最高优先级的任务才能占有CPU的控制权。24按实时性分类强实时系统,其系统响应时间在毫秒或微秒级(数控机床)。一般实时系统,其系统响应时间在毫秒到几秒的数量级上,其实时性的要求比强实时系统要差一些(媒体播放)。弱实时系统,其系统响应时间约为数十秒或更长。251.循环轮询系统:(PollingLoop)最简单的软件结构是循环轮询,程序依次检查系统的每一个输入条件,一旦条件成立就进行相应的处理。Initialize()While(true){if(condition_1)action_1();if(condition_2)action_2();……if(condition_n)acition_n();}按软件结构分类262.事件驱动系统:(Event-Drivensystem)事件驱动系统是能对外部事件直接响应的系统。它包括前后台、实时多任务、多处理器等,是嵌入式实时系统的主要形式。应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作,这部分可以看成后台行为(background)。中断服务程序处理异步事件,这部分可以看成前台行为(foreground)。后台也可以叫做任务级,前台也叫中断级。例如,很多基于微处理器的产品采用前后台系统设计,如微波炉、电话机、玩具等。从省电的角度出发,平时微处理器处在停机状态,所有的事都靠中断服务来完成。27前后台系统(后台循环、前台中断)ISRISR后台前台ISR时间28代码的临界区也称为临界区,指处理时不可分割的代码。一旦这部分代码开始执行,则不允许任何中断打断。在进入临界区之前要关中断,而临界区代码执行完以后要立即开中断。代码的临界区29多任务(任务、进程和线程)CPU寄存器任务控制块1任务控制块2任务控制块n休眠、就绪、运行、挂起、被中断任务1任务2任务n……CPU寄存器30一个任务,也称作一个线程,是一个简单的运行程序。每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间。多任务运行的实现实际上是靠CPU(中央处理单元)在许多任务之间转换、调度。CPU只有一个,轮番服务于一系列任务中的某一个。多任务运行使CPU的利用率得到最大的发挥,并使应用程序模块化。在实际应用中,多任务的最大特点是,开发人员可以将很复杂的应用程序层次化。31任务的状态RUNNINGREADYOSTaskCreate()OSTaskCreateExt()TaskisPreemptedOSMBoxPend()OSQPend()OSSemPend()OSTaskSuspend()OSTimeDly()OSTimeDlyHMSM()OSMBoxPost()OSQPost()OSQPostFront()OSSemPost()OSTaskResume()OSTimeDlyResume()OSTimeTick()OSTaskDel()DORMANTWAITINGOSStart()OSIntExit()OS_TASK_SW()OSTaskDel()OSTaskDel()InterruptOSIntExit()ISR32系统内核(Kernel)与调度(Scheduler)多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通信。内核(Kernel):提供的基本服务是任务切换。内核本身也增加了应用程序的额外负荷,代码空间增加ROM用量,内核本身数据结构增加了RAM的用量。内核本身对CPU的占用时间一般在2到5个百分点之间。调度(Scheduler):是内核的主要职责之一,就是要决定该轮到哪个任务运行了。多数实时内核是基于优先级调度法的。每个任务根据其重要程度的不同被赋予一定的优先级。基于优先级的调度法则,CPU总是让处在就绪态的优先级最高的任务先运行。33非占先式与占先式非占先式(non-preemptive)调度法也称作合作型多任务(cooperativemultitasking),各个任务彼此合作共享一个CPU。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。(见下页图)非占先式内核的一个特点是几乎不需要使用信号量保护共享数据。运行着的任务占有CPU,而不必担心被别的任务抢占。非占先式内核的最大缺陷在于其响应高优先级的任务慢,任务已经进入就绪态,但还不能运行,也许要等很长时间,直到当前运行着的任务释放CPU。内核的任务级响应时间是不确定的,不知道什么时候最高优先级的任务才能拿到CPU的控制权,完全取决于应用程序什么时候释放CPU。34非占先式(Non-Preemptive)低优先级任务ISR高优先级任务(1)(2)(3)(4)(5)(6)(7)中断服务程序使高优先级任务就绪低优先级任务释放CPU使用权TIME35当系统响应时间很重要时,要使用占先式(preemptive)内核。最高优先级的任务一旦就绪,总能得到CPU
本文标题:嵌入式系统原理及应用
链接地址:https://www.777doc.com/doc-3181965 .html