大三下学期嵌入式复习资料

  • 格式:doc
  • 大小:77.00 KB
  • 文档页数:5

1 大三下学期嵌入式复习资料 (这只是份资料,没有原题) 第1章 嵌入式系统基础知识 1、嵌入式系统的定义。(P1) 答:嵌入式系统是“控制、监视或者辅助设备、机器和车间运行的装置”。 2、嵌入式系统的组成。(P3) 答: (1)硬件层:①嵌入式微处理器;②存储器;③通用设备接口和I/O接口。 (2)中间层:①嵌入式系统硬件初始化;②硬件相关的设备驱动程序。 (3)系统软件层:①嵌入式操作系统;②文件系统;(3)图形用户接口。 (4)应用软件层。 3、各种硬件常识。(P4) 答:(1)嵌入式微处理器:嵌入式微处理器的体系结构可以采用冯·诺依曼体系结构或哈佛体系结构,指令系统可以是RISC或CISC;主流的体系有:ARM、X86、PowerPC等。 (2)存储器:主存储器用来存放系统和用户的程序及数据,包含有ROM和RAM。辅助存储器通常指硬盘、NAND、Flash、CF卡、MMC卡、SD卡等。 (3)通用设备接口:嵌入式系统通常具有与外界交互所需的通用设备接口,如GPIO、VGA视频输出接口、现场总线,SPI(串行外围设备接口)等。 第2章 ARM体系结构 1、ARM的体系结构简介。(P21) 答:典型的ARM体系结构包含32位ALU、31个32位通用寄存器及6个状态寄存器、32×8位乘法器、32×32位桶形移位寄存器、指令译码及控制逻辑、指令流水线和数据/地址寄存器等。 2、ARM处理器的工作模式与状态。(P27) 答:(1)工作模式共七种: ①usr (用户模式):ARM微处理器正常程序执行模式。 ②fiq (快速中断模式):用于高速数据传输或通道处理。 ③irq (外部中断模式):用于通用的中断处理。 ④svc (管理模式):操作系统使用的保护模式。 ⑤abt (数据方位终止模式):当数据或指令预取终止时进入该模式。 ⑥sys (系统模式):运行具有特权的操作系统任务。 ⑦und (管理模式):操作系统使用的保护模式。 (2)工作状态:ARM微处理器有32位ARM和16位Thumb两种工作状态。在32位ARM状态下执行字对齐的ARM指令,在16位Thumb状态下执行半字对齐的Thumb指令。 3、ARM的寄存器组织。(P28) 答:(1)通用寄存器:①不分组寄存器(R0~R7);②分组寄存器(R8~R14);③程序计数器(R15)。 (2)程序状态寄存器CPSR:寄存器R16用作程序状态寄存器CPSR,CPSR包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。 4、异常类型。(P33) 答:ARM体系结构支持7种类型的异常:复位、未定义指令、软件中断、指令预取中止、数据中止、外部中断请求(IRQ)、快速中断请求(FIQ)。 5、异常处理过程。(P35) 答:(1)将返回地址保存到LR寄存器。PC→LR (2)将CPSR保存到SPSR。CPSR→SPSR (3)根据异常模式和异常类型设置处理器工作模式。 (4)让PC指向异常处理程序的首地址,异常处理程序被执行完成后,ARM首先将PC保存在LR里,在将SPSR保存在CPSR中,开中断。(5)关中断。 6、ARM储存器格式。(大端与小端)(P36) 答:ARM存储系统可以使用小端存储或者大端存储两种方法,如图: 2

7、寻址方式。(P37) 答:寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式,ARM微处理器有9种基本寻址方式。(1)寄存器寻址;(2)立即寻址;(3)寄存器移位寻址;(4)寄存器间接寻址;(5)变址寻址;(6)多寄存器寻址;(7)堆栈寻址;(8)块复制寻址;(9)相对寻址。 8、熟悉ARM指令集。(P40)(此部分太杂,请自行查看P40-P46内容) 第3章 中断处理 1、中断的概念。答:使系统打断当前执行的代码,转而执行其它的代码,中断是系统对外界的事件的响应。 2、中断向量。 答:中断向量即中断源的识别标志,可用来存放中断服务程序的入口地址或跳转到中断服务程序的入口地址。 3、中断处理过程(P76) 答:在ARM系统中,一旦有中断发生,正在执行的程序都会停下来,通常都会执行以下的中断步骤:(1)保存现场。保存当前的PC值到R14,保存当前的程序运行状态到SPSR。(2)模式切换。根据发生的中断类型,进入IRQ模式或FIQ模式。(3)获取中断服务子程序地址。(4)多个中断请求处理。(5)中断返回,恢复现场。 4、中断优先级和中断嵌套。 答:(1)为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先级。 (2)中断嵌套是指一个中断处理程序被另外一个中断处理程序打断。从而产生中断嵌套。 第4章 嵌入式软件模型 1、四种软件模型概念。 (1)Round Robin模型(轮询): 特点:软件是无穷循环结构,程序被分为很多模块,依次处理。 优点:结构简单,易于实现;适用于比较特殊的场合。 缺点:①如果某一设备所需的最长响应时间少于轮询一次所花时间,这个模型满足不了要求;②等待时间长;③紧急任务得不到处理;④十分脆弱。 (2)Round Robin with Interrupt模型: 特点:使用中断处理硬件的紧急请求,并修改操作标识。程序轮询每一个操作标识符,并处理相应设备的I/O。 优点:①紧急任务处理放入中断服务程序中;②可减轻任务延时;③代码结构清晰;④当设备无中断产生,其设备的处理也就不用执行。 缺点:①没有处理共享数据问题;②没有处理任务的优先级。 (3)Function Queue with scheduling模型: 特点:①将设备的处理代码写成函数形式;②中断产生时,将对应的函数加入函数队列;③程序循环从函数队列取函数执行。 优点:①main函数可以使用调度的策略;②高优先级的函数可以获得更多的CPU资源。 缺点:①如低优先级函数获得CPU,其他优先级比它高的函数必须等其完成;②编程复杂。 (4)Real Time Operation System模型(RTOS): 特点:①理想的目标,任何高优先级的任务随时都能获得CPU资源,尽量提高响应速度。②具有实时任务调度的支持;③操作系统应具有复杂的任务调度策略。④中断具有较高的优先级。

地址A的字 地址A+2的半字 地址A的半字 地址A+3的字节 地址A+2的字节 地址A+1的字节 地址A的字节

31 20 19 12 11 10 9 8 5 4 3 2 1 0 小端存储系统

地址A的字 地址A的半字 地址A+2的半字 地址A的字节 地址A+1的字节 地址A+2的字节 地址A+3的字节

31 24 23 16 15 8 7 0 大端存储系统 3 第5章 1、任务的定义。 答:表示运行的一段程序,是任务管理独立单元,是资源分配单元。 2、任务的状态及转移图。 答:某一任务在任一时刻处于某一状态中。(1)运行态:任务获得CPU资源并运行其程序代码。(2)就绪态:除了CPU资源不满足外,其他资源都得到满足。(3)阻塞态:当任务所需资源(除CPU)未满足时,阻塞。(4)休眠态:当任务被创建/执行之前,代码处于休眠。(5)被中断态:运行的任务被中断打断后。 3、任务调度及各种调度策略。(P248) 答:(1)任务的调度:OS内核负责对任务的调度和管理,按照一定的调度策略,从就绪的任务列表中选择一个任务。对该任务分配CPU时间,并在合适的时机切换任务。 (2)任务调度存在可抢占式调度和不可抢占式调度。 常用调度策略有:先来先服务法、短作业优先法、时间片轮转法、优先级算法。 4、优先级反转及处理方法。 答:(1)优先级反转:高优先级任务在申请已经被低优先级任务所占据的资源,被迫阻塞,交出CPU控制权,使得优先级处中间的任务运行完成。 (2)使用优先级继承来处理优先级反转。 5、任务的同步。 答:某函数在执行时不能被打断,否则会引起数据的错误。多个任务访问该函数时,函数执行有先后顺序。 6、PV原语 答:PV原语通过操作信号量来处理进程间的同步与互斥的问题。其核心就是一段不可分割不可中断的程序。 P原语为阻塞原语,负责把当前进程由运行状态转换为阻塞状态,直到另外一个进程唤醒它。操作为:申请一个空闲资源(把信号量减1),若成功,则退出;若失败,则该进程被阻塞; V原语为唤醒原语,负责把一个被阻塞的进程唤醒,它有一个参数表,存放着等待被唤醒的进程信息。操作为:释放一个被占用的资源(把信号量加1),如果发现有被阻塞的进程,则选择一个唤醒之。 7、生产者与消费者。 Semaphore mutex=1; Semaphore used=0; Semaphore available=N; Producter() { buf Type *next,*here; while(1) { produce Elem(next); P(available); P(mutex); here=GetBuf(available); copyBuf(here,next); (把next拷贝到here中) V(mutex); copyBuf(here,next);

被中断态 阻塞态 休眠态

就绪态 运行态

创建 资源得到满足 (可重复)调度 (可重复)调度 资源未满足 4

P(mutex); Add(here,used); V(mutex); V(used); }} Consume() { bufType *next,*here; while(1) { P(used); P(mutex); here=GetBuf(used); V(mutex); CopyBuf(next,here); Consumer(next); P(mutex); AddBuf(available,here); V(mutex); V(available); }} 8、读者与写者 resourceType *resource; int countRead=0; Semaphore mutex=1; Semaphore writerBlock=1; Writer() { while(1) { P(writeBlock); write(); V(writeBlcok); }}

Reader() { while(1) { P(mutex); if(countRead==0) P(writeBlock); countRead=countRead +1; V(mutex); Read(); P(mutex); countRead=countRead-1; if(countRead==0) V(writeBlock); V(mutex); } }