logo资料库

《嵌入式系统》基础练习题及答案.doc

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
一、填空题: 1. ARM 处理器有两种工作状态,它们是 ARM 状态和 Thumb 状态。 2. ARM 处理器有 7 种工作模式:用户模式 USR(user mode)、 快速中断模式(FIQ)、中断模 式(IRQ)、管理模式 SVC、中断模式 IRQ(interrupt mode)、系统模式 SYS(system mode)、 未定义模式 UND(undefined mode) 。 3. 嵌入性、 专用性 和 计算机系统 是嵌入式系统的三要素。 4. ARM7 有 3 级流水线,ARM9 有 5 级流水线。 5. 目前业界有关嵌入式处理器的分类主要有:嵌入式微处理器、MCU、嵌入式片上系统(SOC) 和嵌入式 DSP。 6. XSBASE270 实验箱上电时,ARM 微处理器会工作在 ARM 状态、用户 模式、 复位 异常。 二、简答题: 1. 阅读程序回答下列问题 num EQU 30 AREA StrCopy, CODE, READONLY ENTRY start ldr ldr mov mov r0, =src r1, =dst r2, #num sp, #0x400 blockcopy movs r3,r2, LSR #3 stmfd sp!, {r4-r11} octcopy ldmia r0!, {r4-r11} stmia r1!, {r4-r11} subs bne r3, r3, #1 octcopy ldmfd sp!, {r4-r11} copywords ands beq r2, r2, #7 stop ; 《嵌入式系统》试卷(A 卷),第 1页,共 8 页
wordcopy ldr str subs bne r3, [r0], #4 r3, [r1], #4 r2, r2, #1 wordcopy stop b stop AREA Strings, DATA, READWRITE ltorg src dst DCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8, 1,2,3,4,5,6,7,8,1,2,3,4,5,6 DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 End 问题: (1)octcopy ………bne octcopy 循环能进行几次? 答:3 次。 (2)wordcopy………bne wordcopy 循环能进行几次? 答:6 次。 (3)指令 movs r3,r2, LSR #3 和指令 ands r2, r2, #7 的功能和意义是什么? 答:由于 r2 中存储的是源地址单元块的字的个数,而逻辑右移 3 位相当于除以 8,因此 movs r3,r2,LSR #3 能够计算出需要每次移动 8 个字数据的总次数,并将其存储在 r3 寄存器中,r2 寄 存器则是存放 num 除以 8 后的余数; ands r2,r2,#7 将 r2 与 7(二进制数的末四位为 0111)相与后,能够得出不足 8 个字时,还剩 余多少个字需要单个字传输。 (4)伪指令 DCD 的功能是什么? 答:定义字数据。 (5)该程序完成什么功能? 答:通过多寄存器数据传输指令,完成将内存自 SRC 开始的 30 个字数据传送到目标区 DST。 《嵌入式系统》试卷(A 卷),第 2页,共 8 页
2. 下列是汇编调 C 的程序,阅读程序回答下列问题 EXPORT CALLSUM AREA Example,CODE,READONLY IMPORT sum ENTRY CALLSUM STMFD SP!,{LR} mov R0,#2 ADD ADD ADD STR ADD R1, R0, R0 R2, R1, R0 R3, R1, R2 R3,[SP,#-4]! R3,R1,R1 BL sum ADD SP,SP,#4 LDMFD SP!,{PC} END int sum (int a,int b,int c,int d,int e) { } return(a+b+c+d+e); 问题: 1) 汇编程序传递给 C 程序的变量 a,b,c,d,e 的值分别是多少? 答:分别为 2,4,6,10,8。 2) 指令 ADD SP,SP,#4 的功能和意义是什么? 答:恢复堆栈指针的值。 3) 调用 sum 返回的结果是多少?结果存放在哪里? 答:返回的结果是 30,结果存放到 r0 寄存器。 3.如图示是基于 wince 的嵌入式系统开发模式 《嵌入式系统》试卷(A 卷),第 3页,共 8 页
说明图中各个部分(宿主机、目标机、USB、以太网、串口、仿真器)的作用。 答: (1)宿主机:一般是通用计算机,宿主机上丰富的资源和良好的开发环境来开发、编译、仿真调 试需要嵌入到目标机上的程序(软件)。 (2)目标机:运行嵌入式软件的平台。 (3)USB:下载程序到目标机。 (4)以太网口:主要用于将 NK.bin 下载到实验箱的 RAM 中,再通过 bootloader 将 os 镜像加载 到 Flash 中。 (5)串口:主要用于将启动信息等通过超级终端显示在宿主机上。 (6)仿真器:处于宿主机和目标机之间,实现调试通信。 5、在嵌入式教学实验平台亿道 EELiodPxa270 上,调试不带操作系统的应用程序时,请说明文件: ARMulate.dll;H-JTAG.dll;PXA270.ini;pxa270.hfc 的作用和使用方法。 答: (1)ARMulator.dll 作用: ARMulator 是一个在 ARM 公司推出的集成开发环境 ADS (ARM Developer Suite)中提供的指 令集模拟器。它与运行在通用计算机(通常是 x86 体系结构)上的调试器相连接,模拟 ARM 微处 理器体系结构和指令集,用于在仿真环境下开发和调试 ARM 程序。 使用方法: 《嵌入式系统》试卷(A 卷),第 4页,共 8 页
运行 AXD,在调试界面的菜单栏中的 options 选项里打开 configure target 一项,选择模拟器调 试平台【ARMulate.dll】;选择选择模拟器调试平台 ARMulate.dll,加入后,如下所示,点击 OK; 重新启动调试程序即可。 (2)H-JTAG.dll: 作用: H-JTAG 是一款简单易用的仿真调试软件,用于在真实环境下调试 ARM 程序,不需要硬件仿真器, 可以支持大部分的仿真调试功能。 使用方法: 运行 AXD,打开调试界面,进行调试设置:在调试界面的 options 菜单里打开 configure target 一项,加载 H-JTAG.dll 运行平台;重新启动调试程序即可。 (3)PXA270.ini: 作用:是用于初始化 RAM 的脚本。 使用方法: 运行 AXD,在调试界面的 options 菜单里打开 configure interface 一项,选择 SessionFiles 选 项卡,加载自己工程下面的 PXA270.ini 文件,注意一定要是自己工程文件夹内的。 (4)pxa270.hfc: 作用:是一个在真实环境(ROM)中调试 ARM 程序时需要用到的配置文件。 使用方法: 打开 H-JTAG 的界面后,点击菜单栏 Load 加载 pxa270.hfc 即可。 三、程序分析和设计 附资料: * CPSR(当前程序状态寄存器)可以在任何处理器模式下被访问。 ;* 它包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态位 ;*----------------------------------------------------------------------------- ;* 30 31 29 28 8 7 6 5 27 4 3 2 26 1 0 《嵌入式系统》试卷(A 卷),第 5页,共 8 页
--------------------------------------------------------------------- ;* ;* | N | Z | C | V | Q | - | ...... ;* ;* 运行模式位 M[4:0]:这几位是模式位,这些位决定了处理器的运行模式 --------------------------------------------------------------------- 。。 | I | F | T | M4 | M3 | M2 | M1 | M0 | 题目: 如下清单是基于 XSBASE270 实验箱的启动程序(汇编部分)和跑马灯程序(C 程序部分) ;汇编程序部分 StackSvc StackIrq EQU EQU IMPORT main 0xa0600000 0xa0605000 AREA init ,CODE ,READONLY ENTRY BL BL BL B InitMem(InitMem 子程序略) InitStack InitGPIO main ; ;************************************** ;Init GPIO ;************************************** ALIGN InitGPIO LDR R1, =0x40e00000 MOV STR LDR STR LDR STR LDR R0, #0x10000 R0, [R1,#0x20] R0, =0xa0000000 R0, [R1,#0x64] R0, =0x01c000 ;GPIO64-95 direction configuration R0, [R1,#0x14] R0, =0x402 《嵌入式系统》试卷(A 卷),第 6页,共 8 页
STR R0, [R1,#0x68] MOV PC, LR ;************************************** ALIGN InitStack ;Set IRQ mode(IRQ) MSR LDR CPSR_c, #0xd2 SP, =StackIrq ;Set Supervisor mode(SVC) MSR LDR CPSR_c, #0xd3 SP, =StackSvc MOV PC, LR END ;C 语言程序部分 #define LED_CS4 (*((volatile unsigned char *)(0x10500000))) #define LED_VALUE (0xff) int i; void Delay(unsigned int x) { } unsigned int n, j, k; for (n =0; n <=x; n++) for (j = 0; j <0xff; j++) for (k = 0; k <0xff; k++); int main(void) { while (1) { } LED_CS4 = 0xff; for (i = 0; i < 8; i++) { } LED_CS4 = (LED_VALUE << i) -1; Delay(200); 《嵌入式系统》试卷(A 卷),第 7页,共 8 页
return 0; } 1、 是否可以将 BL InitGPIO 改为 B InitGPIO,为什么?(选作) 答:不能。BL 是一个子程序调用指令,BL InitGPIO 作用是调用 InitGPIO 子程序进行 GPIO 口 的初始化,初始化完成后返回主程序继续执行下面的 B main 程序。 而 B 是一个无条件转移指令, B InitGPIO 的作用是将指令跳转到 InitGPIO 处执行,但并没有返回。 2、该程序将 GPIO77、78、79、80、81 口分别初始化成什么方向(输入或输出)?(选作) 答:77 口初始化输入(IN);78,79,80 初始化为输出(OUT);81 初始化为输入(IN)。 3、在子程序 InitStack 中增加语句设置 Irq 模式的堆栈指针 ;Set IRQ mode(IRQ) MSR LDR CPSR_c, #0xd2 SP, =StackIrq 4、C 程序 main 中 i=3 循环做完时,LED_VALUE=0x[ff],LED_CS4=0x[f7],发光二极管[L4]亮 (发光二极管编号 L8---L1) 5、写 C 表达式,使发光二极管高四位亮、低四位灭。 #define LED_CS4 (*((volatile unsigned char *)(0x10500000))) LED_CS4 = 0x0f 四、程序设计和调试题 1.在 ARM 中用汇编语言编写程序,计算 2+4+6+8+…+2N 的值。并把结果显示到发光二极管或者数 码管上。 LED_CS4 EQU 0x10500000 Add,CODE,READONLY AREA ENTRY start MOV MOV MOV R1, #1 R2, #2 R3, #0 ;作为计数器和递增的乘数 ;作为值保持不变的乘数 《嵌入式系统》试卷(A 卷),第 8页,共 8 页
分享到:
收藏