自
觉
遵
守
考
场
纪
律
如
考
试
作
弊
此
答
卷
无
效
名
姓
号
学
东 南 大 学 考 试 卷 ( A 卷)
课 程 名 称
嵌入式系统基础
考 试 学 期 1 1 - 1 2 - 2
得分
适 用 专 业
软件工程
考 试 形 式
半开卷
考试时间长度 120 分钟
参考资料:教材、课件、作业本
一、填空题(每空格 1 分,共 24 分)
1、ARM 微处理器有____种工作模式,它们分为两类,分别是__________、__________;
其中用户模式属于__________。
七、非特权模式、特权模式、非特权模式。
线
2、ARM 微处理器复位后,PC(R15)的内容通常是_____________,初始的工作模式
是_______________。
0x0、supervisor。
3、ARM 微处理器采用两种总线架构,数据和指令使用同一接口的是冯诺依曼架构,数
据和指令使用不同接口的是________架构,ARM9 20T 采用________架构。
哈佛、哈佛。
4、计算机有 CISC 和 RISC 两种类型,以 ARM 微处理器为核心的计算机属于________
类型,其指令长度是__________。
封
RISC、定长的。
5、I/O 接口电路数据传送方式有______、______、______、I/O 通道和_ I/O 处理机方式。
查询、中断、DMA。
6、存储一个 32 位数据 0x2168456 到地址为 0x2000~0x2003 四个字节单元中,若以大端
对齐方式存储,则 2000H 存储器单元的内容为__________。
0x02。
密
7、ARM 汇编语句“ADDS R2,R2,R3,LSL#1”的作用是___________________。
R2=R2+(R3〈〈1)设置标志位。
8、ARM 汇编语句“LDR R2,[R3,#128]”的寻址方式是_______________。
变址寻址。
9、IRQ 中断的入口地址是_______________,FIQ 中断的入口地址是_______________。
0x00000018、0x0000001C。
10、Nand-Flash 的读取速度比 Nor-Flash______;Nand-Flash 的写入速度和擦除速度比
Nor-Flash______。
慢、快。
11、ARM Linux 移植主要工作是把编译生成的________、Kernel Image 和_______,并
烧写到 Flash 中。
Boot-loader、Root File。
12、嵌入式系统开发一般采用______________方式,其中宿主机一般是指_____________。
宿主机/目标机、PC 机或台式机
共 4 页
第 1 页
二、指令和程序测试题(3 小题,共 20 分)
1、初始值 R1=0x23,R2=0x0F;执行指令 BIC R0,R1,R2,LSL#1 后,寄存器 R0、
R1 的值分别是多少?(4 分)
R1=0x21,R2=0x23
2、写一段 ARM 汇编程序:循环累加队列 myarray 中的所有元素,直到碰上零值元素,
结果放在 R4 中。程序框架如下,补充代码完成上述功能。(8 分)
AREA total,CODE,READONLY
ENTRY
start
MOV R4, #0
ADR R0, myarray
;再此补充代码
3、试补充编写一段 ARM 汇编代码,实现下面流程图功能。(8 分)
AREA example,CODE,READONLY
ENTRY
start
MOV R0, #15
MOV R0, #9
;再此补充代码
共 4 页
第 2 页
三、问答题(每小题 8 分,共 56 分)
1、CPSR 中如何修改 I、F、T、MODE 位?在程序的何处修改?何模式下修改?
答:CPSR 中的 T 控制位使用 BX 指令完成处理器状态的切换(BX 指令属分支
指令,它会打断流水线状态,实现处理器状态切换)。MRS 与 MSR 配合使用,
实现 CPSR 寄存器的读-修改-写操作。修改 I,F,T,MODE 位时先将 CPSR 中的
内容通过 MRS 指令读到通用寄存器中,再将要修改的位所确定的立即数通过
MSR 指令写入状态寄存器 CPSR 中,只有在特权模式下才能修改。
2、表示递增和递减的满堆栈和空堆栈有哪几种组合,请比较它们的特点。
答:满递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向内含有效数据项的最
高地址。指令如 LDMFA,STMFA 等。
空递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向堆栈上的第一个空地址。
指令如 LDMEA,STMEA 等。
满递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向内含有效数据项的最低地
址。指令如 LDMFD,STMFD 等。
空递增:堆栈通过减小存储器的地址向下增长,堆栈指针指向堆栈下的第一个空地址。
指令如 LDMED,STMED 等。
3、Linux 系统的设备驱动程序功能有哪些?
答:设备驱动的功能有:
1)对设备初始化和释放;
共 4 页
第 3 页
2)把数据从内核传送到硬件和从硬件读取数据;
3)读取应用程序传送给设备文件的数据和回送应用程序请求的数据;
4)检测和处理设备出现的错误。
4、Boot-loader 是什么样的一段程序?它的 stage1 和 stage2 的作用分别是什么?
答:Boot-loader 是嵌入式系统复位启动时,操作系统内核运行前,执行的一段程序。
stage1 主要完成:硬件设备初始化;为 stage2 准备 RAM 空间;拷贝 stage2 到 RAM
空间中;设置好堆栈;跳转到 stage2 的入口。
stage2 主要完成:初始化硬件设备;检测系统内存映射;将 kernel 映像和根文件系
统映像从 Flash 上读到 RAM;为内核设置启动参数;调用内核。
5、基于 ARM 核的嵌入式系统开发环境主要包括哪些组件?
6、进行基于 ARM 核的嵌入式系统软件开发时,调用如下函数:
int do_something(int arg1, void *arg2, char arg3, int *arg4)
则这四个参数通过什么方式从调用程序传入被调函数?
7、在基于 ARM 核的嵌入式系统编程中,任何在汇编语言程序访问 C 语言的全局变量?
共 4 页
第 4 页