一、 单项选择题 (10题,共 20分)

1、看门狗是嵌入式系统中常用的保证系统可靠性的技术,下列情况下,会产生看门狗中断的是 。
A.软件喂狗 B.处理器温度过高 C.应用产生异常 D.看门狗定时超时
2、以下哪种方式不属于文件系统的格式
A. FAT32 B. JFFS C.Cmd D.Ext2
3、嵌入式系统由硬件部分和软件部分构成,以下 不属于嵌入式系统软件。
A.驱动程序 B.BSP C.JAVA D.内核
4、下列工具中能够实现自动编译的是 。A. arm-linux-gcc B. glibc C. stub D. make
5、在C语言中,将变量声明为volatile类型,其作用为 。
A. 设为静态变量 B. 让编译器不再对该变量进行优化 C. 设为全局变量 D.节约存储空间
6、实时操作系统必须在 处理来自外部的事件。
A、一个机器周期 B、被控制对象规定的时间 C、周转时间 D、时间片
7、临界区是 。
A.一个缓冲区 B.一段程序 C.一段共享数据区 D.一个互斥资源
8、下列设备中 设备是块设备。A、键盘 B、机械硬盘 C、DM9000网卡 D、MCU
9、下面哪一种工作模式ARM9不具备,而属于ARM CortexA8的特有模式是 。
A、 系统模式 B、 安全监控模式 C、软中断模式 D、FIQ模式
10、关于RISC指令系统描述不正确的是 。
A、指令条数多 B、指令长度固定C、指令格式种类少 D、寻址方式种类少
1. 下面关于存储管理的叙述中,正确的是 -。
A.在嵌入式微处理器当中,都配备有存储管理单元MMU
B.在嵌入式系统中,内核空间和用户空间必须是两个相互独立的地址空间
C.在有些嵌入式系统中,甚至不提供存储管理功能
D.在虚存系统中,只要磁盘空间无限大,任务就能拥有任意大的编址空间
3. 下面不属于嵌入式操作系统的是:
A.VxWorks B. ucosII C. windows7 D. WinCE
4. 下面 特性符合嵌入式操作系统特点。 A.忽略功耗 B.不可定制
C.通用计算 D. 实时性
5. 在大多数Linux发行版本中,以下哪个属于字符设备 A. 串行口 B. 硬盘 C. 虚拟终端 D. 网卡
6. 在实时操作系统中,两个任务并发执行,一个任务要等待其合作伙伴发来消息,或建立某个条件后再向前执行,这种制约性合作关系被称为任务的 。
A.同步 B.互斥 C.调度 D.执行
7. 在ARM cortexA8处理器中,下面哪种中断方式优先级最高
A. FIQ B.数据中止 C. Reset D. IRQ
9. 一个任务被唤醒,意味着 。
A.该任务重新占有了CPU B.其优先级变为最大
C.其任务移至等待队列队首 D.任务变为就绪状态
10. 关于硬件抽象层,以下描述中错误的是 。
A.硬件抽象层包括操作系统内核和驱动程序
B.硬件抽象层将操作系统与硬件平台隔开
C.硬件抽象层是一种软件
D.硬件抽象层有利于系统的模块化设计

  1. 在大多数Linux发行版本中,以下哪个属于嵌入式网络设备 A. 串行口 B. 硬盘 C. 虚拟终端 D. 网卡
    3. 下面不属于嵌入式操作系统的是:
    A.VxWorks B. lunix C. Dos D. windows ce
    4. 下面 特性不符合嵌入式操作系统特点。 A.实时性 B.忽略功耗
    C.专用计算 D.可定制
    5. 页式存储管理当中的页面是由 所感知的。
    A.应用程序 B.CPU C.驱动软件 D.操作系统
    7. 在ARM处理器中,下面哪种中断方式优先级最低
    A. FIQ B. Reset C. 数据中止 D. IRQ

  2. 关于ARM汇编和C语言混合编程下列正确的是:
    A.C语言中可以直接嵌入某些汇编指令 B. C语言中不可以调用汇编的子程序
    C. 汇编程序中不可以调用C语言的函数 D. C语言嵌入的汇编指令时,不可使用C的变量

二.填空题(25空,共25 分)

  1. ARM体系结构中以字为单位,按 4 字节对齐,地址最末两位为 00 。

(一)概述
1、嵌入式系统的定义:嵌入式系统是以应用为中心、以计算机技术为基础,软、硬件可裁剪,适应于应用系统对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计算机系统
2、嵌入式系统的特点:嵌入性、专用性、计算机系统
3、嵌入式系统的分类:按形态的差异分为芯片级、板级、设备级
4、BSP的中文含义是板级支持软件包,SoC的中文含义是片上系统
(二)体系结构
1、Cortex-A8采用ARMv7构架。
2、Cortex-A8的工作模式:用户模式(User),系统模式(System),管理模式(Supervisor),外部中断模式(IRQ),快速中断模式(FIQ),数据访问中止模式(Abort),未定义指令中止模式(Undefined),安全监控模式(Monitor)。除了用户模式和系统模式之外其余六种称为异常模式。(管外快 数未安)
3、Cortex-A8的工作状态:ARM状态、Thumb状态、ThumbEE状态
4、Cortex-A8是32位处理器,半字为16位,双字为64位。
5、存储系统的低地址中存放字节内容,高地址中存放字节,称为小端模式。
6、Cortex-A8共有40个32位寄存器,包括33个通用寄存器和7个状态寄存器,其中状态寄存器包括1个CPSR和6个SPSR。CPSR是当前程序状态寄存器,SPSR是程序状态保存寄存器
7、Cortex-A8的R13常作堆栈指针(SP),R14为子程序链接寄存器(LR),R15为程序计数器(PC)。
8、Cortex-A8未分组的通用寄存器有R0~R7,分组的通用寄存器有R8~R15。
9、ARM存储系统具有端格式和端格式两种数据存放格式。
(四)S5PV210及接口
1、S5PV210:又名“蜂鸟”,由三星公司推出,采用ARM Cortex-A8内核,ARM V7指令集,主频可达1GHZ,64/32位内部总线结构,32/32KB的数据/指令一级缓存,512KB的二级缓存,可以实现2000DMIPS(每秒运算2亿条指令集)的高性能运算能力,丰富的外设。
2、S5PV210接口:SRAM/ROM/NOR接口、OneNAND闪存接口、NAND接口、LPDDR1接口、DDR2接口。
3、GPIO接口:通用编程**I/O端口,S5PV210共有237个GPIO端口,分成15组。
(五)嵌入式Linux
(背!!考简答)
1、嵌入式LINUX的内核有五个组成部分,它们
进程调度、内存管理、虚拟文件系统、网络接口、进程通信
(进内虚网进)
2、嵌入式Linux主要由
引导程序、内核、驱动程序、文件系统**四部分组成。

3、BootLoader的主要功能:初化化、加载和引导操作系统
4、ARM-Linux采用的文件系统是VFS
(六)应用
1、嵌入式开发主机上一般需要安装集成开发环境、Flash编程器和串口仿真三种软件。
2、在嵌入式交叉开发环境中,开发计算机称为宿主机,嵌入式设备称为目标机。
3、基于ARM的嵌入式开发环境的基本组成:宿主机及集成开发环境、JTAG仿真器、目标机、Flash编程器、串口线、并口线、网线、JTAG线等。
4、ARM有3种方式控制程序的执行流程方式:正常顺序执行、通过跳转命令跳转到特定的标号处、异常处理
5、嵌入式系统的设计步骤:需求分析、体系结构设计、硬件**/**软件设计、系统集成和系统测试。

三.简答题(4题,共20 分)

写出下列指令的寻址方式:
目的操作数:寻址 第一位源操作数: 第二位源操作数:
1. 请填写以下指令属于哪种寻址方式。必考!!!
MOV R0,#0xFF00:_
立即寻址__。LDR R1!,{R2-R4,R6}:_多寄存器寻址__
BL SUB R1:相对寻址_。STMIA R0!,{R1-R7}:块拷贝寻址_
MOV R0,R2,LSL #3:__寄存器偏移寻址。LDR R2,[R3,#0x0C]:_基址(变址)寻址_
LDR R1,[R2]:_寄存器间接寻址__
2.**嵌入式Linux组成?嵌入式内核组成?必考!!!

25.请填写以下指令具体含义。
MOV R0,#0xFF00: 将常数 0xFF00赋给寄存器 R0_
LDR R1!,{R2-R4,R6}:将R1指向的内存数据读取到R2-R4,和R6中。其中R1每次自加__
BL SUBR1:_跳转调用到SUBR1子程序__
STMIA R0!,{R1-R7}:将R1~R7的数据保存到存储器中。;存储指针在保存第一个值之后增加,;增长方向为向上增长.
MOV R0,R2,LSL #3:__R2←R2中的数左移3位__
LDR R2,[R3,#0x0C]:R2←[R3+0x0C]__
将R3寄存器的值加上位移量0x0C,形成操作数的有效地址,将该有效地址单元中的数据传送到寄存器R2中。
LDR R1,[R2]:R0← [R1]_
该指令将寄存器R2中存放的值作为存储器地址,将该存储单元中的数据传送到寄存器R1中
B WAITA:__无条件跳转到标号WAITA处执行_
BL FUNC1:_将当前PC值保存到R14中,然后跳转到标号FUNC1处执行__
BX R0:__跳转R0中的地址处执行,如果R0[0]=1,切换到Thumb状态_
BLX R0:_将当前PC值保存到R14中,然后跳转R0中的地址处执行;并切换到Thumb状态
26.请填写以下指令具体含义。
MOV R0,#0x01:
将常数 0x01 赋给寄存器 R0_
ADD R0,R1,R2,LSL,#3:R0←R1 + R2中的数左移3位_
MOV R0,R1,LSL,#3:_R0←R1扩大8倍_
SUB R0,R1,R2:R0 = R1 - R2_
ADC R1,R1,R3:带进位加法__
SBC R1,R1,R3:带借位减法_
AND R1,R2,R3:R0 = R1 & R2;_
AND R0,R0,#3:R0的位0和位1不变,其余位清0_
ORR R0,R0,#3:R0的位0和位1置1,其余位不变__
EOR R0,R0,#0F:异或;R0的低4位取反_
CMP R1,#0x200:比较(减);将R1的值减去200,并根据结果设置CPSR的标志位__
TST R1,#0x0F:__
测试(与)_;检测R1的低4为是否为0_
MRS R0,CPSR:_程序状态字传送给寄存器;将CPSR的值复制到R0中__
MSR CPSR,R0:寄存器传送给程序状态字 ;将R0值写回到CPSR中_
LDR R1,[R0,#0X12]: 加载,存储单元传送给寄存器; 将存储器地址为R0+0x12的字数据写入R1__
STR R1, [R0, #0x12]; 存储,寄存器传送给存储单元 将R1中的字数据写入以R0+0x12为地址的存储器中

29.half word B=218和word C=218在内存中的存放方式有何不同,请分大端和小端两种情况说明。
答案

31.写出下列ARM指令的功能
MOV R1,#0x10; 将常数 0x01 赋给寄存器 R1
MOV R0,R1; 将寄存器 R1的值 赋给寄存器 R0
MOVS R3,R1,LSL, #2; 将寄存器 R1的值扩大4倍后赋给寄存器 R3
MOV PC,LR; 子函数返回

2. 下面的声明都是什么意思?
const int pn;
int const pn;
const int pn;
int
const pn;
int const pn const;
const int pn; pn是一个常整型数
int const pn; pn是一个常整型数
const int
pn; pn是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。
int const pn; pn是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)
int const
pn const; pn是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)
——每个各1分

33.BootLoader的功能是什么?它的主要组成部分有哪些?
初化化、加载和引导操作系统**。
34.简要说明BootLoader的普遍工作流程,列举常用的BootLoader。

  1. U-Boot Redboot<br />35.什么是U-Boot的环境变量?常用的U-Boot命令有哪些?<br /> u-boot是一种普遍用于嵌入式系统中的Bootloader<br />36.什么是主机-目标机交叉开发模式?主机-目标机的文件传输方式有哪些?<br />宿主机和开发板可通过网络/XX连接, 宿主机将会包含开发板所需的编译环境, 程序可在宿主机上编译完成后, 传递到开发板上执行, 而在开发板上不会包含编译环境, 只会有执行环境, 这节省开发板的空间.

四.编程题(2题,共20分)

(编程:不考外设编程:跑马灯那种)(1C 1汇编)
6**、试用汇编语言编写程序,在ARM状态下对R3赋值0x11223344,在Thumb状态下将R3扩大4倍。(考类似,但是考其他的算术运算)**

  1. .global _start
  2. .text
  3. _start:
  4. .arm
  5. MOV R3, #0X11223344
  6. MOV R0, Tstart+1
  7. BX R0 //转移,并并由ARM状态切换到THUMB状态。
  8. .thumb
  9. Tstart: LSL R3, R3, #2 //2^2=4
  10. stop: B stop //转移
  11. .end

7**、试用C语言编写程序,求1!+2!+3!+…+8!,并将结果保存于地址为0xc0000000的存储单元中。**

  1. long jc(int x) //我们实验是main是因为实验箱厂家微改的
  2. {long s=1;
  3. int i;
  4. for(i=1;i<=x;i++) s=s*i;
  5. return s;
  6. }
  7. _start()
  8. {
  9. long s=0;
  10. int i;
  11. unsigned long *p=0xc0000000; //定义的时候*p代表指针
  12. for (i=1; i<=8; i++) s=s+jc(i);
  13. *p=s; //赋值的时候*p代表值
  14. while(1) ; //裸机下必须
  15. }

image.png
6. 假设某系统的一个绝对地址为0x9527的整型变量的值为0x1314。请编写代码实现这一操作。
(C语言或者汇编语言皆可)
int ptr;
ptr = (int
)0x9527;
*ptr = 0x1314;
——-地址转换正确可得2分,程序功能完成即可得5分

五.操作题(15分)


8、试简述S5PV210**开发环境的搭建步骤。(环驱法工)
1 Eclipse开发环境的安装
安装gcc编译工具(交叉编译器
安装tools工具
安装JLink工具
安装jre
安装Eclipse
2 ARM仿真器驱动的安装
将Jlink仿真器用USB线连接到电脑上,等待自动安装Jlink驱动
3 Eclipse的调试方法
导入已存在的工程并编译
4 Eclipse的调试工程的原理及过程
连接JLinkGDBServerCL 调试工具
配置调试工具Eclipse
9**、试简述S5PV210串口实验的基本步骤。(连导配 串行发)**
实验箱串口连线
将Uart程序导入
配置main, Debugger, Commands
运行串口调试程序sscom32.exe,并设置好参数
eclipse单步运行后全速运行
打开串口调试程序sscom32.exe,pc机发送数据,arm收到pc机的数据,上方可以看到arm机运行串口程序时的输出

简答二:
设计与步骤??

试题1