《实时嵌入式系统设计》课程复习.ppt_第1页
《实时嵌入式系统设计》课程复习.ppt_第2页
《实时嵌入式系统设计》课程复习.ppt_第3页
《实时嵌入式系统设计》课程复习.ppt_第4页
《实时嵌入式系统设计》课程复习.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式系统概论 复习课 北京航空航天大学 机器人研究所 魏洪兴,考试时间,时间: 2011年1月5日晚18:0020:00 地点: 主南405 考试形式: 半开卷,考试要求,掌握嵌入式系统的软硬件基本概念,包括CISC、RISC、进程、线程、操作系统通信与同步等,及一些术语的表示方法; 掌握ARM体系结构:包括寄存器组织、工作模式、异常处理等; 掌握ARM汇编指令,能够进行简单的汇编程序设计; 了解uC/OS的基本结构,嵌入式系统的软硬件基本概念,嵌入式系统的软/硬件框架,CISC和RISC,CISC:复杂指令集(Complex Instruction Set Computer) 具有大量的指令和寻址方式 8/2原则:80%的程序只使用20%的指令 大多数程序只使用少量的指令就能够运行。,RISC:精简指令集(Reduced Instruction Set Computer) 在通道中只包含最有用的指令 确保数据通道快速执行每一条指令 使CPU硬件结构设计变得更为简单,CISC与RISC的数据通道,IF,ID,REG,ALU,MEM,开始,退出,IF,ID,ALU,MEM,REG,微操作通道,开始,退出,单通数据通道,CISC与RISC的对比,非占先式与占先式,非占先式(non-preemptive) 非占先式调度法也称作合作型多任务(cooperative multitasking),各个任务彼此合作共享一个CPU。 中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到改任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。 非占先式内核的一个特点是几乎不需要使用信号量保护共享数据。运行着的任务占有CPU,而不必担心被别的任务抢占。 非占先式内核的最大缺陷在于其响应高优先级的任务慢,任务已经进入就绪态,但还不能运行,也许要等很时间,直到当前运行着的任务释放CPU。内核的任务级响应时间是不确定的,不知道什么时候最高优先级的任务才能拿到CPU的控制权,完全取决于应用程序什么时候释放CPU。,非占先式(Non-Preemptive),占先式(preemptive) 当系统响应时间很重要时,要使用占先式(preemptive)内核。最高优先级的任务一旦就绪,总能得到CPU的控制权。 当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU的控制权。 使用占先式内核时,应用程序不应直接使用不可重入型函数。如果调入可重入型函数时,低优先级的任务CPU的使用权被高优先级任务剥夺,不可重入型函数中的数据有可能被破坏。,占先式(Preemptive),进程、线程和任务,在多道程序系统中,各个程序之间是并发执 行的,共享系统资源。CPU需要在各个运行 的程序之间来回地切换,这样的话,要想描 述这些多道的并发活动过程就变得很困难。 为此,操作系统设计者提出了进程的概念。,什么是进程?,A process a program in execution,一个进程应该包括: 程序的代码; 程序的数据; PC中的值,用来指示下一条将运行的指令; 一组通用的寄存器的当前值,堆、栈; 一组系统资源(如打开的文件) 总之,进程包含了正在运行的一个程序的所有 状态信息。,main( ) A( ) PROCESS,A program is C statements or commands 静态的; A process is program + running context 动态的.,main( ) A( ) PROGRAM,heap,Stack A Main,Registers,PC,Process Program,进程的特性,动态性:程序的运行状态在变,PC、寄存器、 堆和栈等; 独立性:是一个独立的实体,是计算机系统资 源的使用单位。每个进程都有“自己” 的PC和内部状态,运行时独立于其他 的进程(逻辑PC和物理PC); 并发性:从宏观上看各进程是同时独立运行的,怎么办?,需要提出一种新的实体,满足以下特性: (1)实体之间可以并发地执行; (2)实体之间共享相同的地址空间;,这种实体就是:线程(Thread),什么是线程?,Thread: A sequential execution stream within a process; A thread of execution; 进程当中的一条执行流程。,从两个方面来理解进程: 从资源组合的角度:进程把一组相关的 资源组合起来,构成了一个资源平台 (环境),包括地址空间(代码段、数据 段)、打开的文件等各种资源; 从运行的角度:代码在这个资源平台上的 一条执行流程(线程)。,进程 线程 资源平台,优点: 一个进程中可以同时存在多个线程; 各个线程之间可以并发地执行; 各个线程之间可以共享地址空间。,线程所需的资源,(本图摘自Silberschatz, Galvin and Gagne: “Operating System Concepts”),任务task,典型的任务一个无限循环。 void mytask(void *pdata) for (;) do something; waiting; do something; C/OS II 2.5版本支持64个任务,每个任务一个特定的优先级。优先级越高,数字越小。 系统占用了8个任务,保留优先级为0、1、2、3、OS_LOWEST_PRIO-3、 OS_LOWEST_PRIO-2、 OS_LOWEST_PRIO-1、 OS_LOWEST_PRIO-0。,任务状态,OSIntEnter(),/* 在调用本函数之前必须先将中断关闭 */ void OSIntEnter (void) if (OSRunning = TRUE) if (OSIntNesting 255) OSIntNesting+; ,OSIntExit的意义,OSIntExit(),void OSIntExit (void) OS_ENTER_CRITICAL(); /关中断 if (-OSIntNesting|OSLockNesting) = 0) /判断嵌套是否为零 /把高优先级任务装入 OSIntExitY = OSUnMapTblOSRdyGrp; OSPrioHighRdy=(INT8U)(OSIntExitY 3) + OSUnMapTblOSRdyTblOSIntExitY); if (OSPrioHighRdy != OSPrioCur) OSTCBHighRdy = OSTCBPrioTblOSPrioHighRdy; OSCtxSwCtr+; OSIntCtxSw(); OS_EXIT_CRITICAL(); /开中断返回 ,ARM处理器体系结构与指令集,ARM寄存器组织 1*,寄存器 - 2,37 寄存器 31 个通用32位寄存器,包括程序计数器PC 未分组寄器R0-R7 分组寄存器R8-R14 程序计数器PC(R15) 6 个状态寄存器 15 通用寄存器 (R0 to R14), 以及1或者2个状态寄存器和程序计数器在任何时候都是可以访问的 可访问的寄存器取决于处理器的模式 其它寄存器 (the banked registers) 的状态在支持IRQ, FIQ, 管理员, 中止和未定义模式处理时被切换,寄存器 - 3,R0 到 R15 可以直接访问 R0 到 R14 是通用寄存器 R13: 堆栈指针 (sp) (通常) 每种处理器模式都有单独的堆栈 R14: 链接寄存器 (lr) R15 包含程序计数器 (PC) CPSR 当前程序状态寄存器,包括代码标志状态和当前模式位 5个SPSRs-(程序状态保存寄存器) 当异常发生时保存CPSR状态,处理器工作模式(1),ARM 有7个基本工作模式: 1、User:非特权模式,大部分任务执行在这种模式 正常程序执行的模式 2、FIQ:当一个高优先级(fast)中断产生时将会进入这种模式 高速数据传输和通道处理 3、IRQ:当一个低优先级(normal)中断产生时将会进入这种模式 通常的中断处理 4、Supervisor:当复位或软中断指令执行时将会进入这种模式 供操作系统使用的一种保护模式 5、Abort: 当存取异常时将会进入这种模式 虚拟存储及存储保护 6、Undef: 当执行未定义指令时会进入这种模式 软件仿真硬件协处理器 7、System: 使用和User模式相同寄存器集的特权模式 特权级的操作系统任务,程序状态寄存器 - 1,ARM7TDMI 包含当前程序状态寄存器 (CPSR), 加上5个程序状态保存寄存器SPSR,当异常发生时,用于保存CPSR的状态 这些寄存器的功能是: 保存ALU当前操作信息 控制允许和禁止中断 设置处理器操作模式,程序状态寄存器 - 2,N, Z, C and V 条件码标志 可以在处理器中作为数学和逻辑操作改变 可以被所有的指令测试,以决定指令是否被执行 N : Negative. Z : Zero. C : Carry. V : oVerflow I and F 位是中断禁止位 M0, M1, M2, M3 and M4 位是模式位,程序状态寄存器,条件位: N = 1-结果为负,0-结果为正或0 Z = 1-结果为0,0-结果不为0 C =1-进位,0-借位 V =1-结果溢出,0结果没溢出 Q 位: 仅ARM 5TE/J架构支持 指示增强型DSP指令是否溢出 J 位 仅ARM 5TE/J架构支持 J = 1: 处理器处于Jazelle状态,中断禁止位: I = 1: 禁止 IRQ. F = 1: 禁止 FIQ. T Bit 仅ARM xT架构支持 T = 0: 处理器处于 ARM 状态 T = 1: 处理器处于 Thumb 状态 Mode位(处理器模式位): 0b10000 User 0b10001 FIQ 0b10010 IRQ 0b10011 Supervisor 0b10111 Abort 0b11011 Undefined 0b11111 System,ARM异常 - 1,异常内部或外部中断源产生并引起处理器处理一个事件,如外部中断或试图执行未定义指令都会引起异常。 处理异常之前必须保留处理器的状态 异常类型 FIQ IRQ(Interrupt ReQuest) 未定义指令 预取中止 数据中止 复位 软件中断Software interrupt 通过软件中断产生 进行管理员模式中获得 通常要求特殊的管理功能,如操作系统支持,异常 - 2,异常类型 未定义的指令陷井 当ARM接受到一条不能处理的指令,ARM把这条指令提供给任何一个协处理器执行 如果协处理器可以执行这条指令但此时协处理器忙,ARM将等待直到协处理器准备好或中断发生 如果没有协处理器处理这条指令,那么ARM将处理未定义的指令陷井 异常优先级 (1) Reset (highest priority) (2) Data abort (3) FIQ (4) IRQ (5) Prefetch abort (6) 未定义指令, Software interrupt (最低优先级),异常向量,Vector Table,异常处理,当异常产生时, ARM core: 拷贝 CPSR 到 SPSR_ 设置适当的 CPSR 位: 改变处理器状态进入 ARM 态 改变处理器模式进入相应的异常模式 设置中断禁止位禁止相应中断 (如需要) 保存返回地址到 LR_ 设置 PC 为相应的异常向量 返回时, 异常处理需要: 从 SPSR_恢复CPSR 从LR_恢复PC Note:这些操作只能在 ARM 态执行.,Vector table can be at 0xFFFF0000 on ARM720T and on ARM9/10 family devices,FIQ,IRQ,(Reserved),Data Abort,Prefetch Abort,Software Interrupt,Undefined Instruction,Reset,ARM 指令集的特点

温馨提示

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

最新文档

评论

0/150

提交评论