2022年嵌入式试题总结 .pdf
07 电信三班 13 栋 216 一:填空( 30 分、 15 空)1、交叉开发环境、嵌入式系统开发的调试方法(填空一)答:交叉开发环境:交叉开发环境是指实现编译、链接和调试应用程序代码的环境与运行应用程序的环境不同,它分散在有通信连接的宿主机与目标机环境之中。嵌入式系统的调试方法:a源程序模拟器方式b监控器方式c仿真器方式2、BSP的定义、作用(填空二)答:硬件抽象层称为 BSP,即板级支持包 (Board Support Package) 。板级支持包是操作系统与目标应用硬件环境的中间接口,它是软件包中具有平台依赖性的那一部分。板级支持包的主要功能包括两部分:a.在系统启动时,对硬件进行初始化b.为驱动程序提供访问硬件的手段3、ARM 处理器的特点、寄存器数目及作用(填空三)答:ARM 处理器的三大特点是:a.耗电少、成本低、功能强;b.16位/32 位双指令集;c.全球众多合作伙伴保证供应。ARM 内含 37 个寄存器,其中:a.31个通用 32 位寄存器b.6 个状态寄存器4、中断的处理流程及其寄存器的作用、相关的操作等(填空四)答:处理中断的步骤如下:(1)保存现场。保存当前的PC值到 R14,保存当前的程序运行状态到SPSR 。(2)模式切换。根据发生的中断类型,进入IRQ 模式或 FIQ 模式。(3)获取中断源。以异常向量表保存在低地址处为例,若是IRQ 中断,则 PC指针跳到 0 x18 处;若是 FIQ 中断,则跳到 0 x1C 处。IRQ 或 FIQ 的异常向量地址处一般保存的是中断服务子程序的地址,所以接下来PC 指针跳入中断服务子程序处理中断。(4)中断处理。为各种中断定义不同的优先级别,并为每一个中断设置一个中断标志位。当发生中断时, 通过判断中断优先级以及访问中断标志位的状态来识名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 07 电信三班 13 栋 216 别到底哪一个中断发生了。进而调用相应的函数进行中断处理。(5)中断返回,恢复现场。当完成中断服务子程序后,将SPSR中保存的程序运行状态恢复到 CPSR中,R14中保存的被中断程序的地址恢复到PC 中,进而继续执行被中断的程序。中断控制器使用的寄存器?SRCPND (SOURCE PENDING REGISTER) ?中断源挂起寄存器?INTMOD (INTERRUPT MODE REGISTER) ?中断模式寄存器?INTMSK (INTERRUPT MASK REGISTER) ?中断屏蔽寄存器?PRIORITY ( PRIORITY REGISTER) ?中断优先级控制寄存器?INTPND (INTERRUPT PENDING REGISTER) ?中断挂起寄存器?INTOFFSET (INTERRUPT OFFSET REGISTER) ?中断偏移寄存器?SUBSRCPND (INTERRUPT SUB SOURCE PENDING) ?子中断源挂起寄存器INTSUBMSK (INTERRUPT SUB MASK REGISTER )?副中断屏蔽寄存器。a. SRCPND/ SUBSRCPND, 这两个寄存器的作用是用于标示出哪个中断请求被触发。?b. INTMOD寄存器作用是指定该位相应的中断源处理模式(IRQ 还是FIQ) 。若某位为 0,则该位相对应的中断按IRQ 模式处理,为 1 则以 FIQ模式进行处理,该寄存器初始化值为0 x00000000,即所有中断皆以 IRQ 模式进行处理。c. INTMSK/ INTSUBMSK寄存器为中断屏蔽寄存器,作用是决定该位相应的中断请求是否被处理。若某位被设置为1,则该位相对应的中断产生后将被忽略( CPU 不处理该中断请求),设置为 0 则对其进行处理。这两个寄存器初始化后的值是0 xFFFFFFFF和 0 x7FF,既默认情况下所有的中断都是被屏蔽的。?d.PRIORITY ( PRIORITY REGISTER), 中断优先级控制寄存器,设置中断优先级?e.INTPND (INTERRUPT PENDING REGISTER) 中断 挂 起 寄存 器 ,INTPND 某个位被置 1 ,则表示 CPU 响应了该位相应的中断进行处理。f.INTOFFSET (INTERRUPT OFFSET REGISTER) 中断 偏 移 寄存 器,作用只是用于表明哪个中断正在被处理。二:简答( 30 分、 6 题)5、单片机系统、嵌入式系统和SOC 系统三者有何区别和联系?(简答一)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 07 电信三班 13 栋 216 答:嵌入式系统与单片机系统的区别?目前嵌入式系统的主流是以32 位嵌入式微处理器为核心的硬件设计和基于实时操作系统( RTOS)的软件设计;?单片机系统多为 4 位、8 位、16位机,不适合运行操作系统,难以进行复杂的运算及处理功能;?嵌入式系统强调基于平台的设计、软硬件协同设计, 单片机大多采用软硬件流水设计;?嵌入式系统设计的核心是软件设计(占70%左右的工作量),单片机系统软硬件设计所占比例基本相同。?SoC就是 System on Chip ,SoC是一种基于 IP(Intellectual Property)核嵌入式系统设计技术。?它结合了许多功能区块, 将功能做在一个芯片上, ARM RISC 、 MIPS RISC、DSP或是其他的微处理器核心, 加上通信的接口单元, 例如通用串行端口(USB) 、TCP/IP 通信单元、GPRS通信接口、GSM 通信接口、IEEE1394、蓝牙模块接口等等, 这些单元以往都是依照各单元的功能做成一个个独立的处理芯片。?嵌入式片上系统设计的关键是IP 核的设计。IP 核分为硬核、 软核和固核,是嵌入式技术的重要支持技术。?6、嵌入式系统的定义、组成(简答二)答:嵌入式系统的狭义定义:使用嵌入式微处理器构成的独立系统,并有自己的操作系统,具有特定功能,用于特定场合的系统。嵌入式系统的组成: 嵌入式系统通常由嵌入式处理器、外围设备、 嵌入式操作系统和应用软件等几大部分组成。7、实时系统的概念、 RTOS和普通 OS 的区别(简答三)答:实时系统 (Real Time System)是指产生系统输出的时间对系统至关重要的系统。从输入到输出的滞后时间必须足够小到一个可以接受的时限内。RTOS与通用计算机 OS 的区别:a.实时性。响应速度快,只有几微秒;执行时间确定、可预测;b.代码尺寸小。 10100KB,节省内存空间,降低成本;c.应用程序开发较难;d.需要专用开发工具:仿真器、编译器和调试器等。8、ARM 的数据类型和处理器模式(简答四)答:ARM 处理器支持下列数据类型:a. Byte 字节, 8 位;b. Halfword 半字, 16 位(半字必须与2 字节边界对准);c. Word 字,32 位(字必须与 4 字节边界对准)。ARM 体系结构支持 7 种处理器模式。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 07 电信三班 13 栋 216 9、什么是写直达和写回Cache操作,各有何特点?(简答五)答:?写直达、写回、标记法是 Cache的三种写操作方式, 即三种不同的 Cache更新算法。?写直达,顾名思义,它的做法是当 Cache写命中时, Cache与主存同时发生写修改。写直达法是写Cache 与写主存同步进行。其优点是Cache每行无需设置一个修改位及相应的判测逻辑;其缺点是Cache对 CPU 向主存的写操作无高速缓冲功能,降低了Cache的功效。?写回,当 CPU 对 Cache写命中时,只修改 Cache的内容而不立即写入主存,只当此行被换出时才写回主存。这种策略使Cache在 CPU 与主存之间的读方向和写方向方面都起到高速缓存的作用。对一 Cache行的多次写命中都在Cache 中快速完成修改,只是需被替换时才写回速度较慢的主存,减少了访问主存的次数,从而提高了效率。10、ARM 为何集成了 32 位的 ARM 指令集和 16 位的 Thumb 指令集?(简答六)答:ARM 指令集是32 位的, THUMB是 16 位的。他们可以动态切换。你可以认为ARM是 80386,而 THUMB是 8086。在一般的情况下, Thumb 指令与 ARM 指令的时间效率和空间效率关系为: Thumb 代码所需的存储空间约为ARM 代码的 6070 Thumb 代码使用的指令数比ARM 代码多约 3040 若使用 32 位的存储器, ARM 代码比 Thumb 代码快约 40 若使用 16 位的存储器, Thumb 代码比 ARM 代码快约 4050处理模 式说明用户usr 正常程序执行模式FIQ fiq 支持高速数据传送或通道处理IRQ irq 用于通用中断处理管理svc 操作系统保护模式中止abt 实现虚拟存储器和 / 或存储器保护未定und 支持硬件协处理器的软件仿真系统sys 运行特权操作系统任务名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - 07 电信三班 13 栋 216 与 ARM 代码相比较,使用Thumb 代码,存储器的功耗会降低约3011、基于 ARM 的硬件启动流程(简答七)答:硬件启动程序的工作一般包括:(1) 分配中断向量表(2) 初始化存储器系统(3) 初始化各工作模式下的堆栈(4) 初始化有特殊要求的硬件模块(5) 初始化用户程序的执行环境(6) 切换处理器的工作模式(7) 呼叫主应用程序三:应用( 20 分、 2 题)12、. C 程序和汇编的互相调用的应用答:汇编程序调用C 程序的方法为:首先在汇编程序中使用IMPORT 伪指令事先声明将要调用的C 语言函数;然后通过BL 指令来调用 C 函数。C 程序调用汇编子程序的方法为:首先在汇编程序中使用EXPORT 伪指令声明被调用的子程序,表示该子程序将在其他文件中被调用;然后在C 程序中使用 extern 关键字声明要调用的汇编子程序为外部函数。举例:A.汇编程序调用C 程序的方法为:首先在汇编程序中使用IMPORT 伪指令事先声明将要调用的 C 语言函数;然后通过BL 指令来调用C 函数。例如在一个C 源文件中定义了如下求和函数:int add(int x,int y) return(x+y); 调用 add()函数的汇编程序结构如下:IMPORT add ;声明要调用的C 函数MOV r0,1 MOV r1,2 BL add ;调用 C 函数 add B. C 程序调用汇编子程序的方法为:首先在汇编程序中使用EXPORT 伪指令声明被调用的子程序,表示该子程序将在其他文件中被调用;然后在C 程序中使用extern 关键字声明要调用的汇编子程序为外部函数。例如在一个汇编源文件中定义了如下求和函数:EXPORT add ;声明 add子程序将被外部函数调用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - 07 电信三班 13 栋 216 add ;求和子程序add ADD r0,r0,r1 MOV pc,lr 在一个 C 程序的 main()函数中对 add 汇编子程序进行了调用:extern int add(int x,int y); /声明 add为外部函数void main() int a=1,b=2,c; c=add(a,b); /调用 add子程序 13、什么是 big-endian 和 little-endian,编写一段程序测试你所使用的计算机的体系结构采用哪一种存储机制?答:big endian 是指低地址存放最高有效字节(MSB) ,而 little endian 则是低地址存放最低有效字节(LSB) 。int x=0 x12345678; int *p=&x; if(*(char*)p=0 x78) printf( “ little-endian” ) else if(*(char*)p=0 x12) printf( “ big-endian” ); 四:编程( 10 分、 1 题)14、GPIO 的编程(例:控制LED、有配置图、表)答:举例:通过对 G 口的操作控制 CPU 板左下角的 LED1 和 LED2 实现轮流闪烁。void Main(void) int flag, i; Target_Init(); /进行硬件初始化操作,包括对I/O 口的初始化操作for(;) if(flag=0) for(i=0;i1000000;i+); / 延时rGPGCON = rGPGCON & 0 xfff0ffff | 0 x00050000; /配置第 8、第 9位为输出引脚rGPGDAT = rGPGDAT & 0 xeff | 0 x200; / 第 8 位输出为低电平/第 9 位输出高电平for(i=0;i10000000;i+); / 延时flag = 1; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - 07 电信三班 13 栋 216 else for(i=0;i1000000;i+); / 延时rGPGCON = rGPGCON & 0 xfff0ffff | 0 x00050000; /配置第 8、第 9位为输出引脚rGPGDAT = rGPGDAT & 0 xdff | 0 x100; / 第 8 位输出为高电平/第 9 位输出低电平for(i=0;i1000000;i+); / 延时flag = 0; 五:分析( 10 分、 1 题)15、分析:中断过程举例初始化条件:(1) INTMASK 的值为 0 x400, PRIORITY 寄存器中的 ARB_MODE2值为 0,ARB_SEL2 的值为 00。INTMOD 的值为 0 xffffffff 。(2) INT_TIMER0, INT_TIMER2和 INT_UART2 三个中断同时触发。问: (1)此时 SRCPND、INTPND 、INTOFFSET 的值分别是什么?(2)一次中断处理完毕后,SRCPND、INTPND 、INTOFFSET 的值又是什么?我们用 INT_TIMER0, INT_TIMER2和 INT_UART0 三个中断完整地介绍一次中断异常处理。首先我们得做几个假设:假设 1:这三个中断的屏蔽被取消。假设 2:PRIORITY 寄存器中 ARB_MODE2 ,ARB_MODE5 皆为 0,即不进行优先级的自动旋转排序,任何时候ARBITER2 ,ARBITER5控制的中断组优先级次序分别为 0-1-2-3-4-5 和 1-2-3-4。假设 3:这三个中断皆为IRQ 类型。假设 4:这三个中断同时被触发。INT_TIMER0,INT_TIMER2和 INT_UART0 三个中断被同时触发,此时三个中断信号流向 SRCPND 寄存器,使该寄存器中的第10 位,12 位,28位被置为 1,中断信号继续向前流经INTMASK寄存器,这三个中断都没有被屏蔽,于是信号进一步流经INTMODE 寄存器,这三个中断皆为IRQ 类型,故中断信号继续向前流向PRIORITY寄存器,经过优先级判断,INT_TIMER0中断信号使INTPND 寄存器的第10 位置 1(INT_TIMER0优先级最高),此时 INTOFFSET寄存器的值为10,CPU 转向相应的中断服务例程进行处理。处理完毕后,我们的程序将 INTPND 和 SRCPND 的第 10 置为 0,至此 INT_TIMER0 中断处理完毕。此时 SRCPND 的第 12 位, 28 位仍为 1(这两个中断请求未被处理) ,故他们会继续被 CPU 已刚才描述的方式进行处理。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -