2022年嵌入式系统原理及设计复习要点考试 .pdf
一、填空题(每空1 分,共 15 分)二、选择题(每题2 分,共 20 分)三、简答题(5 小题,共 35 分)四、综合应用题(2 题,共 30 分)知识点:第1章嵌入式系统概述1.嵌入式系统的分类:四类P5 嵌入式微处理器、微控制器、dsp 处理器、片上系统2.嵌入式操作系统基本概念:前后台系统、内核、占先式内核、非占先式内核、中断P7-10 前后台系统:对基于芯片的开发来说,应用程序一般是一个无限的循环,可称为前后台系统或超循环系统。中断服务程序处理异步事件这部分可以看成前台行为(中断级)。循环中调用相应的函数完成相应的操作,这部分可以看成后台行为(任务级)。内核:多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通信。内核提供的基本服务 是任务切换。使用实时内核可以大大简化应用系统的设计,是因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。内核需要消耗一定的系统资源,比如2 5的 CPU运行时间、RAM 和 ROM 等。非占先式内核:非占先式内核要求每个任务自动放弃CPU 的所有权。非占先式调度法也称作合作型多任务,各个任务彼此合作共享一个CPU。异步事件还是由中断服务来处理。中断服务可以使一个高优先级的任务由挂起状态(mount)变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU 的使用权时,那个高优先级的任务才能获得CPU的使用权。占先式内核:当系统响应时间很重要时,要使用占先式内核。最高优先级的任务一旦就绪,总能得到CPU 的控制权。当一个运行着的任务使一个比它优先级高的任务进入了就绪状态,当前任务的CPU 使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU 的控制权。如果是中断服务子程序使一个高优先级的任务进入就绪态,中断完成时,中断了的任务被挂起,优先级高的那个任务开始运行。中断:中断是一种硬件机制,用于通知CPU 有个异步事件发生了。中断一旦被识别,CPU保存部分(或全部)上下文即部分或全部寄存器的值,跳转到专门的子程序,称为中断服务子程序(ISR)。中断服务子程序做事件处理,处理完成后,程序回到:1.在前后台系统中,程序回到后台程序;2.对非占先式内核而言,程序回到被中断了的任务;3.对占先式内核而言,让进入就绪态的优先级最高的任务开始运行。名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 10 页 -第2章ARM7体系结构1.ARM7TDMI:T、D、M、I 分别代表什么P19 T(Thumb):支持高密度16 位的 Thumb 指令集;D(debug):支持片上调试M(multify):支持 64 位乘法I:支持 Embeded ICE硬件仿真功能模块;2.存储器的字与半字P20 ARM 处理器使用了 冯?诺依曼(Von Neumann)结构,指令和数据共用一条32 位总线,只有装载、存储和交换指令可以对存储器中的数据进行访问。以 bit1=0,bit0=0 其他位为任意值。字 以 bit0=0,其他位为任意值。半字 从偶数地址开始的连续2 个字节构成一个半字;以能被 4 整除的地址开始的连续4个字节构成一个字;ARM 指令的长度刚好是一个字,Thumb 指令的长度刚好是一个半字。3.3 级流水线P2022取值译码执行a)取值从存储器装载一条指令;b)译码识别将要被执行的指令;c)执行处理指令并将结果写回寄存器无论 ARM 处理器处于何种状态,程序计数器R15(即 PC)总是指向“正在取值”的指令。习惯上约定将“正在执行的指令作为参考点”,称之为当前第1 条指令。因此,PC总是指向第3 条指令,或者说 PC总是指向当前正在执行的地址在加上2 条指令的地址。ARM 与 Thumb 指令下的 PC值当处理器处于ARM状态时,每条指令长为4 字节,所以 PC的值为正在执行的指令地址加 8 字节,即:PC值=当前程序执行位置+8 字节当处理器处于Thumb 状态时,每条指令长为2 字节,所以的值为正在执行的指令地址加字节,即:值当前程序执行位置字节4.ARM 指令集与 Thumb 指令集、ARM 处理器的两种状态及状态的切换P2425 ARM7TDMI 处理器内核包含2 套指令系统,分别为ARM 指令集和Thumb 指令集,并且各自对应1 种处理器的状态:ARM 状态:32 位,处理器执行字方式的 ARM 指令,处理器默认为此状态;Thumb 状态:16 位,处理器执行半字 方式的 Thumb 指令(可视为ARM 的子集)。注意:两个状态之间的切换并不影响处理器模式或寄存器内容以“当前程序状态寄存器CPSR”中的控制位T 反映处理器正在操作的状态,即哪种指令集正在执行。A T arm 到 Thumb T A thumb 到 arm Code 32 Code 16 LDR R0,=Lable+1LDR R0,=Lable BX R0 BX R0 Code 16 Code 16 Lable mov R1,#12 Lable mov R1,#10 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 10 页 -当 T=0时,处理器处于ARM 状态,执行ARM 指令;当 T=1时,处理器处于Thumb 状态,执行Thumb 指令。5.ARM 处理器的 7 种模式(用户模式、特权模式)P26 ARM 体系结构支持7 种处理器模式,分别为:用户模式、快速中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。这样的好处是可以更好的支持操作系统并提高工作效率。ARM7TDMI 完全支持这七种模式。除用户模式外,其它模式均为特权模式。特权模式允许对CPSR 的完全读/写访问;用户模式只允许只允许对CPSR的控制位进行读访问,但允许对条件标志位的读/写访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。6.ARM 内部寄存器:31 个通用 32 位寄存器、6 个状态寄存器P27 在 ARM 处理器内部共有37 个用户可访问的寄存器,分别为31 个通用 32 位寄存器和 6 个状态寄存器。7.Thumb 状态下的寄存器P34 Thumb 状态寄存器集是ARM 状态集的子集,程序员可以直接访问的寄存器为:a)8 个通用寄存器R0R7;b)堆栈指针(SP);c)链接寄存器(LR);d)程序计数器(PC);e)当前程序状态寄存器(CPSR)8.当前程序状态寄存器:(模式位、状态位、FIQ禁止、IRQ禁止)P37 ARM 内核包含1 个 CPSR 和 5 个仅供异常处理程序使用的SPSR。CPSR反映当前处理器的状态,其包含:a)4 个条件代码标志(负标志 N、零标志 Z、进位标志C 和溢出标志V);b)2 个中断禁止位(IRQ禁止与 FIQ禁止);c)5 个对当前处理器模式进行编码的模式位(M4:0);d)1 个用于指示当前执行指令的状态位(ARM 指令还是Thumb 指令)。9.异常的返回指令:(FIQ和 IRQ)P40 快速中断fiq SUBS PC,R14_fiq,#4R14 4中断 irq SUBS PC,R14_irq,#4R14 410.异常向量表(IRQ、FIQ、复位)P40 地址异常进入时的模式进入时I 的状态进入时F 的状态0 x0000 0000 复位管理禁止禁止0 x0000 0018 IRQ 中断禁止F 0 x0000 001c FIQ 快速中断禁止禁止11.异常中断的进入与退出P4142 异常的进入:当一个异常导致模式切换时,内核自动的做如下处理:将异常处理程序的返回地址保存到相应异常模式下的LR;名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 10 页 -将 CPSR的当前值保存到相应异常模式下的SPSR;设置 CPSR为相应的异常模式;设置 PC为相应异常处理程序的中断入口向量地址,跳转到相应的异常中断处理程序执行;异常的退出:当异常处理程序结束时,异常处理程序必须:返回到发生异常中断的指令的下一条指令处执行,即就是说将LR 中的值减去偏移量后移入 PC;将 SPSR的值复制回CPSR;清零在入口处置位的中断禁止标志。12.ARM 处理器支持的存储格式:大端格式和小端格式P49 PPT80 小端存储器系统:在小端格式中,数据的高字节存放在高地址中。(高对高)大端存储器系统:在大端格式中,数据的高字节存放在低地址中。(高对低)第3章ARM7T DMI(-S)指令系统1.ARM 处理器的八种寻址方式寄存器寻址操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。寄存器寻址指令举例如下:MOV R1,R2;将 R2的值存入 R1 SUB R0,R1,R2;将 R1的值减去 R2 的值,结果保存到R0 立即寻址立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数)。立即寻址指令举例如下:SUBS R0,R0,#1;R0 减 1,结果放入R0,并且影响标志位MOV R0,#0 xFF000;将立即数 0 xFF000装入 R0寄存器寄存器移位寻址寄存器移位寻址是ARM 指令集特有的寻址方式。当第2 个操作数是寄存器移位方式时,第 2 个寄存器操作数在与第1 个操作数结合之前,先进行移位操作。寄存器移位寻址指令举例如下:MOV R0,R2,LSL#3;R2 的值左移 3 位,结果放入R0,即是;R0=R2 8 ANDS R1,R1,R2,LSL R3;R2 的值左移 R3位,然后和R1相“与”操作,;结果放入 R1 寄存器间接寻址寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。寄存器间接寻址指令举例如下:LDR R1,R2;将 R2指向的存储单元的数据读出;保存在 R1中SWP R1,R1,R2;将寄存器 R1的值和 R2 指定的存储;单元的内容交换基址寻址基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址。基址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 10 页 -器访问等。基址寻址指令举例如下:LDR R2,R3,#0 x0C ;读取 R3+0 x0C地址上的存储单元;的内容,放入R2 STR R1,R0,#-4!;先 R0=R0-4,然后把R1的值寄存;到保存到 R0指定的存储单元多寄存器寻址多寄存器寻址一次可传送几个寄存器值,允许一条指令传送16 个寄存器的任何子集或所有寄存器。多寄存器寻址指令举例如下:LDMIA R1!,R2-R7,R12;将 R1指向的单元中的数据读出到;R2 R7、R12 中(R1 自动加 4)STMIA R0!,R2-R7,R12;将寄存器 R2R7、R12 的值保;存到 R0指向的存储单元中;(R0 自动加 4)堆栈寻址STMFD SP!,R1-R7,LR;将 R1R7、LR入栈,满递减堆栈LDMFD SP!,R1-R7,PC;数据出栈,放入R1 R7、PC寄存器,;满递减堆栈相对寻址相对寻址是基址寻址的一种变通。由程序计数器PC 提供基准地址,指令中的地址码字段(地址标号)作为偏移量,两者相加后得到的地址即为操作数的有效地址。相对寻址指令举例如下:BL SUBR1;调用到 SUBR1子程序 BEQ LOOP;条件跳转到LOOP标号处.LOOPMOV R6,#1.SUBR1.2.单寄存器加载/存储指令LDR/STR 多寄存器加载/存储指令LDM/STM(了解)LDR/STR指令用于对内存变量的访问、内存缓冲区数据的访问、查表、外围部件的控制操作等。若使用LDR指令加载数据到PC寄存器,则实现程序跳转功能,这样也就实现了程序散转。所有单寄存器加载/存储指令可分为“字、有/无符号字节、有/无符号半字加载存储指令”。多寄存器加载/存储指令可以实现在一组寄存器和一块连续的内存单元之间传输数据。LDM 为加载多个寄存器;STM为存储多个寄存器。允许一条指令传送16 个寄存器的任何子集或所有寄存器。它们主要用于现场保护、数据复制、常数传递等。3.分支指令:B、BL、BX B指令为简单的跳转指令,不附带其它功能。跳转范围限制在当前指令的32M 字节地址内(ARM 指令为字对齐,最低2 位地址固定为0)。BL 带链接的分支指令BL 指令除了具有跳转功能,还能在跳转之前将下一条指令的地址拷贝到R14(即 LR)链接寄存器中,它适用于子程序调用。跳转范围限制在当前指令的 32M 字节地址内。指令格式如下:例如:BL DelayNS ;调用子程序DelayNS BX 带状态切换的分支指令BX指令除了具有跳转功能,还能在跳转的同时切换名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 10 页 -处理器状态。其跳转范围不受限制。指令格式如下:BX Rn 4.状态寄存器的读/写指令:MRS/MSR 在 ARM 处理器中,只有MRS指令可以对状态寄存器CPSR和 SPSR进行读操作。通过读 CPSR可以了解当前处理器的工作状态。读 SPSR 寄存器可以了解到进入异常前的处理器状态。指令格式如下所示:MRS R1,CPSR;读取 CPSR状态寄存器到R1 MRS R2,SPSR;读取 SPSR 状态寄存器到R2 在 ARM 处理器中,只有MSR指令可以对状态寄存器CPSR和 SPSR进行写操作。与MRS配合使用,可以实现对CPSR 或 SPSR 寄存器的读-修改-写操作,可以切换处理器模式等操作。将 R0 的内容写入CPSR寄存器的控制位域MSR CPSR_c,R0 第4章LPC2000系列ARM硬件结构1.片内 Flash的编程方法P104 PPT14 1.使用 JTAG仿真/调试器,通过芯片的JTAG接口下载程序;2.使用在系统编程技术(即ISP),通过 UART0接口下载程序;3.使用在应用编程技术(即IAP),在用户程序运行时对Flash进行擦除和/或编程操作,实现数据的存储和固件的现场升级。2.存储器映射的概念PPT21 给物理存储器分配逻辑地址的过程称为存储器映射3.存储器重映射概念PPT30 将已经过映射的存储器再次映射的过程称为存储器重映射,它使同一物理存储单元出现多个不同的逻辑地址。这些存储单元主要包括引导块“Boot Block”和用于保存异常向量表的少量存储单元。3.1 引导块概念及功能PPT31 引导块(Boot Block)是芯片设计厂家在LPC2000系列 ARM 内部固化的一段代码,用户无法修改或删除。这段代码在芯片复位后被首先运行,其功能主要是:?判断运行哪个存储器上的程序;?检查用户代码是否有效;?判断芯片是否被加密;?芯片的在应用编程(IAP)以及在系统编程功能(ISP)。3.2 异常向量表重映射PPT34、36、37(异常向量表占据的存储单元及可来自的四个不同区域)异常向量表位于存储器映射的0 x00000 x001C地址空间,定义了 8 个异常向量,每个异常向量占一个字。通常在 0 x00000 x001C 地址空间每个异常入口放置一条ARM 跳转指令,在其后的 0 x0020 0 x0003F 地址空间上放置跳转目标地址,即异常服务函数的入口地址。所以一个异常向量表实际包含了8 个字的异常入口和8 个字的跳转目标地址,占用了16 个字(64 字节)的存储单元。异常向量表可以来自四个不同的区域:Boot Block、片内 Flash、片内 RAM和外部存储器。微控制器可以执行这些存储器中的代码。除了片内 Flash 的向量表位于0 x00000 x003F地址上,其他存储器的向量表都不位于这个地址。为了能让ARM 内核通过访问0 x00000 x003F 地址访问到其他存储区域的向量表,这样向量表必须进行重映射。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 10 页 -4.启动代码PPT40 上电/复位引导代码(BootBlock)启动代码用户 main 函数?向量表定义;?堆栈初始化;?系统变量初始化;?中断系统初始化;?I/O 初始化;?外围初始化;?地址重映射等操作。5.时钟系统PPT47(组成部分、结构框图)组成部分:晶体震荡器、唤醒定时器、锁相环(PPL)和分频器。6.晶体振荡器的两种模式PPT49 外部时钟源(从属模式),也可以使用外接晶体和片内振荡电路(振荡模式)产生时钟。7.复位PPT54、56(2 个复位源、复位信号保持的时间)1、外部复位把 nRESET 引脚拉为低电平,并保持一个最小时间,引发复位在晶体振荡器保持稳定振荡,或者使用有源晶振时,外部复位信号可以缩短到不小于 300ns。2、看门狗复位通过设置看门狗相关寄存器,当看门狗定时器溢出后,引发复位芯片上电后,晶体振荡器开始振荡。因为振荡从开始到稳定需要一过程,所以外部复位信号至少要保持10ms;8.唤醒定时器PPT68(工作原理,注意计数周期)唤醒定时器能够确保振荡器和芯片内部硬件电路在处理器开始执行指令之前有足够的时间初始化。计数满 4096 个周期后,控制开关闭合9.PLL PPT72、7680(结构框图、馈送序列、计算)Fosc为晶体震荡频率Fcco 为流控震荡器频率Fcclk 为连接 PPL之后的频率馈送序列分两步进行,如下所示:step1.将值 0 xAA 写入 PLLFEED step2.将值 0 x55 写入 PLLFEED 最后得出PLL的输出频率(当 PLL激活并连接时)为:Fcclk=MFosc 或Fcclk=Fcco/(2P)CCO输出频率为:Fcco=Fcclk 2P 或Fcco=Fosc M2P 10.VPB分频 PPT83(了解)(框图未画)VPB分频器主要有两个用途:1.将处理器时钟(cclk)分频,以便外设在合适的速度下工作。2.降低系统功耗。11.两种节电模式:空闲模式和掉电模式节电模式处理器系统时钟外设空闲模式停止执行指令有效正常工作掉电模式停止执行指令无效无需时钟支持的外名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 10 页 -设能够正常工作12.外部存储器控制器特性(可扩展4 个 Bank 组,每组的寻址范围最大16MB,总线宽度可以为8、16、32 位)13.存储器组配置寄存器(WST1、RBLE和 WST2)14.16 位总线宽度外接存储器的连接方式PPT2628(注意引脚的名称,地址线的连接、片选信号)LPC2200与存储芯片 MT45W4MW16 的连接示意图。MT45W4MW16 是一款 PSRAM芯片,16 位总线宽度,容量8M 字节。MT45W4MW16部分引脚描述引脚描述A0A22地址线D0 D15数据线CE片选线OE读使能线WE写使能线UB高字节使能线LC P22 00MT45W 4MW16A1A0A23A2 2D0D0D15D1 5CEOEW EUBLBCS0OEW EBLS1BLS0名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 10 页 -LB低字节使能线15.(大题)向量中断控制器:中断的优先级、(向量IRQ 中断的硬件处理过程PPT7173/P204)、(设计实例PPT74)、PPT76 向量 IRQ具有中等优先级,处理中断比较迅速。一旦发生向量IRQ中断,ARM 处理器进入 IRQ 模式,PC指向 IRQ异常入口 0 x18,同时向量IRQ服务程序的地址从相应通道的向量地址寄存器(VICVectAddr015)中复制VIC的向量地址寄存器(VICVectAddr),PC根据 VICVectAddr 内的地址进行跳转,执行相应的服务程序。16.定时器产生的中断类型匹配中断、捕获中断17.脉宽调制器:单边沿输出及双边沿输出PPT69、70、73、74 使用两个匹配寄存器就可以实现单边沿PWM 输出。这两个匹配寄存器的功能:控制 PWM 周期 PWMMR0;控制 PWM 的占空比 PWMMRn。管脚名称管脚方向管脚描述PWM1输出PWM 通道 1 输出PWM2输出PWM 通道 2 输出PWM3输出PWM 通道 3 输出PWM4输出PWM 通道 4 输出PWM5输出PWM 通道 5 输出PWM6输出PWM 通道 6 输出注意:虽然有7 个匹配寄存器,但是并没有PWM0 输出通道。因此,通常都使用匹配寄存器0 来控制 PWM 通道的周期。18.实时时钟:产生的中断类型及基准时钟频率实时时钟含有两类中断计数器增量中断和报警中断基准时钟频率:32.768kHz 名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 10 页 -第5章硬件电路与接口技术1.最小系统框图及电源部分P353 供电部分(供电系统)、时钟信号(时钟系统)、复位信号(复位及其配置系统)、存储器系统、调试接口(调试测试接口)电源部分:数字3.3V 和数字 1.8V,模拟 3.3V 和模拟 1.8V.也就是 2 组 3.3V 和 2组 1.8V。2.LPC2114最小系统、LPC2214最小系统、LPC2210/2220 最小系统(P357 倒数第一行358 顺数 1、2 行)其中 LPC2114 没有外部总线,但是有片内Flash(可用于存储程序)和片内RAM;PLC2110/2220 具有外部总线,但是没有片内Flash,只有片内RAM PLC2214不但有片内Flash和 Ram;还有外部总线。(全部都有)名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 10 页 -