35.简述FIQ工作方式的特点?
答:FIQ异常是由外部中断信号引起的。(2分)FIQ异常模式下有足够的私有寄存器,且支持数据传送和通道处理方式,从而当异常发生、进入异常服务时,可避免对私有寄存器保存的需求,减少了进入异常或退出异常过程中的总开销。(2分)FIQ异常优先级高于IRQ异常。FIQ异常向量被放在所有异常的最后,这样是为了提高相应速度。(2分) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 31.简述提高软件可靠性的方法。
答:嵌入式系统可靠性的基本指标有:可靠度、失效率(2分)、平均故障间隔时间、(2分)和平均修复时间和利用率等。(2分) 32.简述S3C2410的存储空间的分配方法。
答:S3C2410芯片采用的是ARM920T核,地址空间总共为4G。(2分)其中,1GB地址空间用于支持外部存储器的链接,此部分被分成8个存储块,每块128MB。另外的空间有一小部分用于I/O端口或部件的寻址,其他的地址空间没有用到。(4分) 33.简述嵌入式操作系统与通用操作系统的区别。
答:通用操作系统是一种通用的操作系统,可运行在不同的硬件平台。(3分)而嵌入式操作系统与一般的Windows操作系统不同,其是一种专用、可定制的特点。(3分) 34.简述在应用编程及其优点。
答:对于大部分基于闪存的系统来说,一项重要的需求就是当这些系统安装在终端产品上后,具有更新固件的能力,这个能力称为在应用编程(In-Application Programming IAP)。(3分)很显然,在应用编程的好处是可以摆脱昂贵、复杂的编程器和仿真器,为用户的最终产品提供方便的固件程序的更新能力。另外,对于资源有限的开发者来说,也提供了一种极低成本的固件下载方法。(3分) 35.简述ARM9异常的优先级
答:若多个异常在某一时刻同时出现,那么,ARM9处理器将按照异常的优先级高低顺序处理,优先级顺序由高到底为:复位、数据中止、FIQ、IRQ、预取中止、未定义指令和SWI。(3分)当优先级高的异常被响应后,ARM9处理器将跳转到一个对应的地址处开始执行程序,这个异常服务程序的入口即是其向量地址。(3分)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 31.简述嵌入式系统的BooTLoader的功能。
答:BootLoader是系统加电后、操作系统内核或用户应用程序运行之前,首先必须运行的一段程序代码。(2分)通过这段程序,为最终调用操作系统内核、运行用户应用程序准备好正确的环境。(对于嵌入式系统来说,有的使用操作系统,也有的不使用操作系统,但在系统启动时都必须运行BootLoader,为系统运行准备好软硬件环境。)(4分) 32.简述目前嵌入式操作系统的种类。
答:1)μC/OS-II 嵌入式操作系统内核;2)VxWorks嵌入式实时操作系统;3)WinCE操作系统;4)Linux操作系统 ;5)Symbian操作系统(6分) 33.简述构造嵌入式开发环境的三种形式。
答:1)交叉开发环境 ;(2分)2)软件模拟环境 ;(2分)3)评估电路板(2分) 34.简述嵌入式系统开发的基本流程。
答:1)系统定义与需求分析;2)系统设计方案的初步确立;3)初步设计方案性价比评估与方案评审论证;4)完善初步方案、初步方案实施;5)软硬件集成测试;6)系统功能性能测试及可靠性测试。(每项1分) 35.简述可编程片上系统内容。
答:用可编程逻辑技术把整个系统放到一块硅片上,称作可编程片上系统SOPC。它是
一种特殊的嵌入式系统,首先它是SOC,即由单个芯片实现整个系统的主要逻辑功能,具有一般SOC基本属性;(3分)其次,它又具备软硬件在系统可编程的功能,是可编程系统,具有可裁剪、可扩充、可升级等灵活的设计方式。(3分)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
31.简述有时要使用Thumb技术的原因
答:(Thumb指令集是把32位的ARM指令集的一个子集重新编码后形成的一个特殊的16位指令集。()2分)在性能和代码大小之间取得平衡,在需要较低的存储代码时采用Thumb指令系统用Thumb指令编写最小代码量的程序(能够很好的解决代码长度的问题),却取得以ARM代码执行的最好性能,(2分)可以带来低功耗,小体积,低成本。(2分) 32.简述ARM处理器的工作模式。
答:1)正常用户模式(usr);2)快速中断模式(fiq);3)普通中断模式(irq);4)操作系统保护模式(svc) 或 管理模式 ;5)数据访问中止模式(abt);6)处理未定义指令的未定义模式(und);7)运行特权级的操作系统任务的系统模式(sys)。(6分) 33.简述在c语言程序中内嵌汇编语言的方法。
答:内嵌的汇编指令包括大部分的ARM指令和Thumb指令,但是不能直接引用C的变量定义,数据交换必须通过ATPCS进行。(4分)嵌入式汇编在形式上表现为独立定义的函数体。(2分)
34.简述寄存器CPSR,SPSR的功能。
答:1)CPSR包含条件码标志、中断禁止位、当前处理器模式以及其它状态和控制信息。所有处理器模式下都可以访问当前的程序状态寄存器CPSR。(3分)
在每种异常模式下都有一个对应的物理寄存器——程序状态保存寄存器SPSR。当异常出现时,SPSR用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。(3分) 35.简述小端和大端存储器组织的内容。
答:1)小端存储器组织是较高的有效字节存放在较高的存储器地址,较低的有效字节存放在较低的存储器地址(同同小)。(3分)2) 大端存储器组织是较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址(正反大)。(3分)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 31.简述数据的边界对齐定义。
答:默认情况下,ADS编译器使用的是数据类型的自然边界对其方式。(2分)数据的自然对其方式是指:如果该数据类型是n个字节的,那么该数据类型就按n字节对齐。(4分)
32.简述现有ARM核的种类。
答:ARM7、 ARM9、ARM9E 、ARM10E,、SecurCore 、ARM11(每项1分) 33.简述在C语言程序中调用汇编语言程序的方法。
答:为了保证程序调用时参数的正确传递,汇编程序的设计要遵守ATPCS。在汇编程序中需要使用EXPORT伪操作来声明,使得本程序可以被其它程序调用。(3分)同时,在C程序调用该汇编程序之前需要在C语言程序中使用extern关键词来声明该汇编程序。(3分)
34.简述实时操作系统的主要功能。
答:实时多任务操作系统(Real Time multi-tasking Operation System,RTOS)简称实时操作系统,主要用来完成嵌入式实时应用的任务调度和控制等核心功能。(4分)这些功能是通过内核服务函数形式交给用户调用的,也就是RTOS的系统调用,或者叫做RTOS的API。(2分)
35.简述寄存器R13,R14,R15的专用功能。
答:1)寄存器R13保存堆栈指针SP;(2分)2)寄存器R14用作子程序链接寄存器,
也称为LR ,用以保存返回地址;(2分)3)R15(PC)用作程序计数器。(2分)
分析设计题
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 36.编写程序,完成操作r1 = r2 * 4功能。 解:MOV R1,R2, LSL #2
37.编写子程序实现两个寄存器R0,R1相加的功能。
ADD_SUB ADDS R0,R0,R1 MOV PC,LR END
38.试分析当初始值R2=5,R3=4,R4=3,执行指令SUBS R2, R3,R4,LSR #2后,寄存器R2,R3的值分别是多少?
R2=3 R3=4
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 36.编写程序,使能IRQ中断
ENABLE-IRQ
MRS R0,CPSR BIC R0,R0,#0X80 MSR CPSR_C,R0 MOV PC,LR
37.有如下程序段,并回答执行程序以后R0的值是多少。 num EQU 2 start
MOV r0, #1 MOV r1, #6 MOV r2, #3
BL arithfunc stop
B stop
arithfunc CMP r0, #num MOVHS pc, lr ADR r3, JumpTable
LDR pc, [r3,r0,LSL#2] JumpTable
DCD (.WORD) DoA DCD (.WORD) DoS DoA
ADD r0, r1, r2 MOV pc, lr DoS
SUB r0, r1, r2 MOV pc,lr END 答:R0=5。
38.有程序段如下,实现下面流程图,试补充编写ARM汇编代码。 程序段:
startYESr0=r1?NOstopYESr0>r1?NOr0 = r0 - r1MOV r0, #15
r1 = r1 - r0
MOV r1, #9 start ;补充代码 stop B stop END 程序:
Start: CMP r0,r1 SUBLT r1,r1,r0 SUBGT r0,r0,r1 BNE start
///////////////////////////////////////////////////////////////////////////////////////////////////////// 36.写一条 ARM 指令,完成操作r1 = r2 * 3 解:ADD R1,R2,R2 ,LSL #1
37.编写程序,禁能IRQ中断
DISABLE_IRQ MRS R0 CPSR ORR R0,R0,#0X80 MSR CPSR_C,R0 MOV PC,LR
38.试分析当初始值R1=26H,R2=0FH执行指令BIC R0, R1,R2,LSL #2后,寄存器R0,R1的值分别是多少? 解:R0=02H, R1=26H
//////////////////////////////////////////////////////////////////////////////////////////////////// 36.说明指令STMIA r12!, {r0-r11}的操作功能。
解:将R0-R11十二个寄存器中的32位数据,存储到R12地址指针为起始地址的内存中,地址的操作方式是先操作、后增加,并更新地址。
37.写一段 ARM汇编程序:循环累加队列myarray中的所有元素,直到碰上零值元素,结果放在r4中。程序框架如下,补充代码完成上述功能。
AREA total, CODE READONLY ENTRY start MOV r4, #0 ADR r0, myarray
;在此补充代码 stop B stop myarray DCD 0x11 DCD 0x22 ……
DCD 0x0 END 解:
Loop LDR r1, [r0], #4 ADD r4, r4, r1 CMP r1, #0 BNE loop
38.编一个简单的软件延时程序
DELAYI NOP NOP NOP
SUBS R1,R1,#1 BNE DELAYI MOV PC,LR
////////////////////////////////////////////////////////////////////////////////////////////////// 36.编写程序实现求R4R3-1,差放在R6R5中的功能 SUBS R5,R3,#1 SBC R6,R4,#0
37.这是一个由源程序strtest.c和scopy.s组成的混合程序项目,通过调用strcopy完成字符串复制,程序代码如下。要求阅读程序,在程序中的注释符“//”后,说明该句程序的作用。 strtest.c
#include
extern void strcopy(char *d, const char *s); int main()
{ const char *srcstr = \ char dststr[] = \
printf(\
printf(\ '%s'\\n '%s'\\n\ strcopy(dststr,srcstr); // printf(\
printf(\ '%s'\\n '%s'\\n\