ARM高级程序设计复习提纲.docx

上传人:b****1 文档编号:10955733 上传时间:2023-05-28 格式:DOCX 页数:33 大小:49.03KB
下载 相关 举报
ARM高级程序设计复习提纲.docx_第1页
第1页 / 共33页
ARM高级程序设计复习提纲.docx_第2页
第2页 / 共33页
ARM高级程序设计复习提纲.docx_第3页
第3页 / 共33页
ARM高级程序设计复习提纲.docx_第4页
第4页 / 共33页
ARM高级程序设计复习提纲.docx_第5页
第5页 / 共33页
ARM高级程序设计复习提纲.docx_第6页
第6页 / 共33页
ARM高级程序设计复习提纲.docx_第7页
第7页 / 共33页
ARM高级程序设计复习提纲.docx_第8页
第8页 / 共33页
ARM高级程序设计复习提纲.docx_第9页
第9页 / 共33页
ARM高级程序设计复习提纲.docx_第10页
第10页 / 共33页
ARM高级程序设计复习提纲.docx_第11页
第11页 / 共33页
ARM高级程序设计复习提纲.docx_第12页
第12页 / 共33页
ARM高级程序设计复习提纲.docx_第13页
第13页 / 共33页
ARM高级程序设计复习提纲.docx_第14页
第14页 / 共33页
ARM高级程序设计复习提纲.docx_第15页
第15页 / 共33页
ARM高级程序设计复习提纲.docx_第16页
第16页 / 共33页
ARM高级程序设计复习提纲.docx_第17页
第17页 / 共33页
ARM高级程序设计复习提纲.docx_第18页
第18页 / 共33页
ARM高级程序设计复习提纲.docx_第19页
第19页 / 共33页
ARM高级程序设计复习提纲.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

ARM高级程序设计复习提纲.docx

《ARM高级程序设计复习提纲.docx》由会员分享,可在线阅读,更多相关《ARM高级程序设计复习提纲.docx(33页珍藏版)》请在冰点文库上搜索。

ARM高级程序设计复习提纲.docx

ARM高级程序设计复习提纲

 

一、填空题

1.ARM微处理器共有______个______位寄存器,其中______个为通用寄存器,______个为状态寄存器。

37、32、31、6 

2.ARM处理器有9种基本寻址方式,分别是:

______、______、______、______、______、______、______、______、______。

 寄存器寻址、立即寻址、寄存器偏移寻址、寄存器间接寻址、基址寻址、多寄存器寻址、堆栈寻址、块拷贝寻址、相对寻址

 

3.ARM指令集可以分为6类,分别是:

______、______、______、______、______、______。

 

跳转指令、数据处理指令、程序状态寄存器(PSR)传输指令、Load/Store指令、协处理器指令、异常中断产生指令

 

4.在ARM的汇编程序中,有如下几种伪指令:

_____、______、______、______、______。

符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令、其他伪指令

 

5.汇编语言与C/C++的混合编程通常有以下几种方式:

_____、______、______。

 在C/C++代码中嵌入汇编指令;从汇编程序中访问C程序变量;汇编程序、C/C++程序间的相互调用

 

6.ARM C/C++编译器支持和产生以下几种格式的文件:

_____、____、____、______、______。

 

filename.c 源文件、filename.h头文件、filename.o目标文件、filename.s汇编代码文件、filename.lst列表文件

7.ARM在线仿真包括3个过程:

_____、______、______。

装载映像文件、程序执行、查看寄存器和内存空间

8.目前流行的嵌入式操作系统主要有:

______、______、_____和_____。

Vxwork、WinCE、Linux、pSOS

9.ARM处理器工作状态主要有______、______和______模式。

运行、睡眠、空闲

10.作为高速缓存的存储器主要有______、______和______。

 SRAM、DRAM、FlashROM

11.动态RAM有______和______。

 SDRAM、DDR

12.ARM有从外部______启动的外启动和从片上______启动的内启动两种启动方式。

SDRAM、ROM

13. Nand-Flash闪存每个块的最大擦写次数是______万次,而Nor的擦写次数是______万次。

 100、10

14.MTD核心层分为:

______层、______层和______层。

 用户模块接口、MTD抽象、MTD设备驱动模块

15.Nor-Flash常用于存放______,而Nand-Flash存放______。

系统代码、用户信息

 

16.Linux设备可分为______、______和______三种。

字符设备、块设备、网络设备

17.GPIO支持______、______和______三种数据传输方式。

中断、查询、DMA

18.GPIO驱动可以以两种方式编译:

一种是______,另一种是______。

 静态编译进内核、编译成模块动态加载

 

19.ARM处理器复位源有______、______、______、______、______和______。

 上电复位、外部硬复位、内部硬复位、JTAG复位、外部软件复位、内部软件复位

20.按复位信号是否与时钟信号同步,可分为:

______复位和______复位。

 同步、异步

 

21.常用的A/D转换器有______、______、______、______和______。

积分型、逐次逼近型、并行比较型、∑-△型、流水线型

22.速度最快的A/D转换器是______ADC。

并行比较型

23.A/D转换可分为4个阶段,分别是:

______、______、______、______。

 采样、保持、量化、编码

24.从广义的角度来说,数据通信方式可以分为______和______两大类,相应的通信线路分别称为______  和______。

 并行通信、串行通信;并行总线、串行总线

25.串行通信的两种基本工作方式为:

______和______。

标准异步串行通信(UART)

接口有:

______、  ______和______。

异步串行通信、同步串行通信;RS-232C、RS-422、RS-485

26.UART串行通信接口标准是__________,它采用_______逻辑来进行电平传输。

 

RS-232C、负

27.I2C采用两根I/O线是:

______和______。

 SCL串行时钟线、SDA串行数据线

28.I2C数据传输速率标准模式下为_____bps,快速模式下为_____bps,高速模式下为______bps。

100K、100K、3.4M

29.串行存储器一般具有两种写入方式:

______和______。

 字节写入方式、页写入方式

30.USB系统包括______、______和______三部分。

31.USB互连、USB从端口、USB主端口

32.USB从端口包括______和______两大类。

33.USB集线器、功能设备

34.USB1.1支持______bps的传输速率,2.0标准支持______bps的传输速率。

 1.5~12、120~240

35.USB支持______、______、______和______等四种传输模式。

同步、中断、控制、批量

36.USB驱动程序开发的工具主要有______、______和______。

 Windiver、MicrosoftDDK、DriverStudio

37每个以太网口上都有一个唯一的______位MAC 地址与之对应。

 48

39.Boot-loadere两种不同的操作模式是______模式和______模式。

启动加载、下载

40.Boot-loader目标代码是*. ______格式的文件。

 bin

41. ARM Linux移植主要工作是把编译生成的______、______和______,并烧写到Flash中。

 Boot-loader、KernelImage、RootFile

42.Linux支持多种文件系统,包括:

______、______、______和______。

 Romfs、Cramfs、JFFS、JFFS2

43.JFFS2在Linux中一种是作为______,另一种是作为______在系统启动后被挂载。

 根文件系统、普通文件系统

44.Linux源文件的树形结构可以分为4层:

______、______、______和______。

 用户层、内核层、底层驱动、硬件驱动

 

二、问答题:

 

1.通用寄存器包括R0~R15,可以分为具体哪三类?

 通用寄存器包括R0~R15,可以分为三类:

 

(1)未分组寄存器R0~R7;

  

(2)分组寄存器R8~R14;

  (3)程序计数器PC(R15)。

2.请描述Thumb状态下的寄存器与ARM状态下的寄存器有什么关系?

Thumb状态下的寄存器与ARM状态下的寄存器有如下关系:

 

(1)Thumb状态下和ARM状态下的R0~R7是相同的。

 

(2)Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的。

 (3)Thumb状态下的SP对应于ARM状态下的R13。

 (4)Thumb状态下的LR对应于ARM状态下的R14。

 (5)Thumb状态下的程序计数器对应于ARM状态下的R15。

  

3.当一个异常出现以后,ARM微处理器会执行哪几步操作?

 当一个异常出现以后,ARM微处理器会执行以下几步操作。

 

(1)将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。

若异常是从ARM状态进入,则LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常的类型有关);若异常是从Thumb状态进入,则在LR寄存器中保存当前PC的偏移量,这样,异常处理程序就不需要确定异常是从何种状态进入的。

例如:

在软件中断异常SWI,指令 MOV PC,R14_svc总是返回到下一条指令,不管SWI是在ARM状态执行,还是在Thumb状态执行。

 

(2)将CPSR复制到相应的SPSR中。

 (3)根据异常类型,强制设置CPSR的运行模式位。

 (4)强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。

4.一条典型的ARM指令具有什么样的语法格式,并描述各选项意义。

 一条典型的ARM指令语法格式如下所示:

 

{}{S},,< shifter_operand > 

其中:

 

opcode是指令操作符编码;

 cond 是指令执行的条件编码;

 S决定指令的操作是否影响

CPSR的值;

 Rd是目标寄存器编码;

 Rn是包含第1个操作数的寄存器编码; 

shifter_operand 表示第2个操作数。

5.表示递增和递减的满堆栈和空堆栈有哪几种组合,请比较它们的特点。

 有4种类型的堆栈,表示递增和递减的满堆栈和空堆栈的各种组合。

  满递增:

堆栈通过增大存储器的地址向上增长,堆栈指针指向内含有效数据项的最高地址。

指令如LDMFA,STMFA等。

  空递增:

堆栈通过增大存储器的地址向上增长,堆栈指针指向堆栈上的第一个空地址。

指令如LDMEA,STMEA等。

  满递减:

堆栈通过减小存储器的地址向下增长,堆栈指针指向内含有效数据项的最低地址。

指令如LDMFD,STMFD等。

  空递增:

堆栈通过减小存储器的地址向下增长,堆栈指针指向堆栈下的第一个空地址。

指令如LDMED,STMED等。

 

 

7.汇编语言程序中常用的符号,需要遵循哪些规则?

1、 符号区分大小写,同名的大、小写符号会被编译器认为是两个不同的符号。

 2、符号在其作用范围内必须唯一。

 3、自定义的符号名不能与系统的保留字相同。

4、符号名不应与指令或伪指令同名。

8.可执行映像文件通常由几部分构成,它们有什么特点?

1、 一个或多个代码段,代码段的属性为只读。

 2、 零个或多个包含初始化数据的数据段,数据段的属性为可读写。

 3、 零个或多个不包含初始化数据的数据段,数据段的属性为可读写。

9.初始化存储器有哪几种方法?

初始化存储器就是设置ARM处理器的某些寄存器,这可以通过两种方法完成:

第一种,如果ARM处理器内部有SRAM,则可以建立一个简单的工程,该工程对涉及存储器映射的寄存器初始化;

第二种,利用AXD的命令行配置那些寄存器,具体步骤如下:

 

首先在C:

\下建立文本文件memory_map.txt,该文件设置寄存器的值,其格式为:

 

setmem ADDRESS,DATA,SIZE 

其中,ADDRESS是寄存器的地址,

DATA是该寄存器要设置的值,

SIZE是数据宽度,一般为32,可以设置多个寄存器;

然后打开AXD Debugger的命令行窗口,执行下面的命令,配置对应的控制寄存器。

 

>obey C:

\memory_map.txt 

执行完毕后,memory_map.txt中的寄存器就配置完毕,存储器就映射到预定的地址空间

 

10.软启动状态对ARM处理器有什么作用?

 软启动时,处理器被复位,但是SDRAM里面的内容仍旧保持。

11.简述SDRAM在ARM系统中的主要作用。

 SDRAM具有高速、大容量等优点,是一种具有同步接口的高速动态随机存储器,在ARM系统中主要用作程序的运行空间、数据及堆栈区。

12.区别ARM外启动方式和内启动方式的不同。

 外启动方式下,ARM从外部程序存储器取指令执行;内启动时,ARM运行片上ROM中固化的启动程序。

13.简述嵌入式设备中程序运行方式。

嵌入式设备中程序运行方式有两种:

一种是将程序加载到SDRAM中运行,另一种是程序直接在其所在的ROM/Flash存储器中运行。

14.与SDRAM相比,Flash在ARM系统中的主要作用是什么?

Flash存储器常当作硬盘使用,而SDRAM则类似内存,Flash用于存放程序代码、常量表,以及一些在系统掉电后需要保存的用户数据等。

15.在读写数据速度上,Nor-Flash 与Nand-Flash有什么区别?

 Nor-Flash的读取速度比Nand-Flash快;Nand-Flash的写入速度和擦除速度比Nor-Flash快。

16.简述开发GPIO的具体步骤。

 具体步骤是:

l

模块化驱动程序;l

在内核空间申请和释放内存;l

分配字符设备主设备号和子设备号;l

在内核空间注册与注销;l

在内核空间提供系统调用函数。

17.如何通过合理存放数据提高中断处理速度?

将中断处理尽可能搬到内部RAM或SDRAM。

中断处理函数代码放在Flash中,数据放在SDRAM中。

通过改变编译配置,将所有的中断处理函数都拷贝到ARM内部RAM或者SDRAM中

18.简述各种A/D转换器的应用场合。

 积分型A/D转换器主要应用于低速、精密测量等领域;

逐次逼近型A/D转换器适用于中速率而分辨率要求较高的场合;

并行比较A/D转换器适用于速度要求特别高的领域,如视频A/D转换;

∑-△型调制型A/D转换器主要应用于高精度数据采集系统,特别是数字音响系统、多媒体、地震勘探仪器、声纳等电子测量等领域;

流水线型A/D转换器主要应用于对频域特性要求较高的通信系统,对噪声、带宽和瞬态速度等时域特性要求较高的CCD成像系统,以及对时域和频域特性都要求较高的数据采集系统。

19.列举两种不同工作方式下的D/A转换器。

直接D/A转换器直接将输入的数字信号转换为输出的模拟信号;而间接D/A转换器是先将输入的数字信号转换为某种中间量,然后再将这种中间量转换成为输出的模拟量。

20.在选择通信方式时,需要考虑哪几个主要方面?

 一般情况下,在选择通信方式时,需要考虑以下几个主要方面。

l

1、通信速率。

标准通信接口都有相应的最大通信速率,即相应信道容量的最大值。

通信距离。

通信速率和通信距离两个物理参量互相依存,互相制约。

适当地减小通信速率,可以在一定程度上增加通信的距离;相应的,在允许一定的误码率条件下,可以提高相应的通信速率。

l

2、抗干扰能力。

为保证一定的通信速率和一定的通信距离,需要相应的通信媒介和比较好的抗干扰能力,以降低误码率。

3、在通信中,除了物理的抗干扰能力外,一般采用信道编码的方式来提高系统的抗干扰能力,从而保证信号的可靠性传输。

21.异步串行通信协议规定字符数据的传输规范,总结起来有哪几点?

 异步串行通信协议规定字符数据的传输规范,包括:

l

1、起始位。

通信线上没有数据被传送时处于逻辑“1”状态,当发送设备要发送一个字符数据时,首选发送一个逻辑“0”信号,这个逻辑低电平就是起始位。

起始位通过通信线传向接收机,接收设备检测到这个低电平后,就开始准备接收数据位信号。

起始位所起的作用就是使设备同步,通信双方必须在传送数据位前一致同步。

l

2、数据位。

当接收设备收到起始位后,开始接收数据位。

数据位的个数可以是5~9位,PC机中经常采用7~8位数据传送。

在字符传送过程中,数据位从最低有效位开始传送,依次在接收设备中被转换为并行数据。

l

3、奇偶校验位。

数据位发送完毕后,为了保证数据的可靠性传输,常传送奇偶校验位。

奇偶校验用于有限差错检测。

如果选择偶校验,则数据位和奇偶位的逻辑“1”的个数必须为偶数;相反,如果是奇校验,则逻辑“1”的个数为奇数。

l

4、停止位。

在奇偶位或者数据位(当无奇偶校验时)之后发送停止位。

停止位是一个字符数据的结束,可以是1~2位的低电平,接收设备收到停止位后,通信线路便恢复逻辑“1”状态,直到下一个字符数据的起始位到来。

l

5、波特率设置。

通信线路上传送的所有位信号都保持一致的信号持续时间,每一位的宽度都由数据的码元传送速率确定,而码元速率是单位时间内传送码元的多少,即波特率。

22.UART模块部分主要实现什么功能?

 UART模块部分主要实现计算机主机与ARM之间的数据传输。

 1.简述I2C I/O的主要功能。

 串行时钟SCL用于产生器件所有数据发送或接收的时钟;串行数据/地址SDA用于传送地址和所有数据的发送或接收。

23.I2C的发送和接收是否在主模式或从模式下操作,取决于什么?

取决于I2C芯片是否必须启动数据的传输还是仅仅被寻址。

24.数据链路层的主要作用是什么?

 数据链路层把上层数据封装成带有目的MAC地址的帧发出,并接收目的MAC地址的数据帧,然后拆封以太网报头再发往上层协议。

25.简述ARM Linux内核启动三个阶段的功能。

第一阶段主要是进行CPU和体系结构的检查、CPU本身的初始化,以及页表的建立等。

初始化是从内核入口Entry开始到start_kernel前结束。

第二阶段主要是对系统中的一些基础设施进行初始化。

最后是更高层次的初始化,如根设备和外部设备的初始化。

26.ARM系统中Boot-loader的主要作用是什么?

 Boot-loader的作用与PC的BIOS类似,通过Boot-loader可以完成对ARM主要部件如CPU、SDRAM、Flash、串行口的初始化,同时下载文件到硬件板,对Flash进行擦除与编程。

27.Boot-loader的stage1和stage2的作用分别是什么?

stage1主要完成:

硬件设备初始化;为stage2准备RAM空间;拷贝stage2到RAM空间中;设置好堆栈;跳转到stage2的入口。

stage2主要完成:

初始化硬件设备;检测系统内存映射;将kernel映像和根文件系统映像从Flash上读到RAM;为内核设置启动参数;调用内核。

28.ARM Linux内核启动的主要工作包括哪些?

 完成Linux体系结构的初始化,内部中断、外部中断、软中断的初始化,以及与进程有关的初始化(计时器初始化、控制台初始化、内存模块初始化)。

29.简述ARM Linux三种主要编译开发工具的作用。

二进制文件处理工具binutils主要应用于移植调试操作系统初期的辅助开发;

编译工具gcc用于编译内核代码;

glibc用于链接和运行库文件。

30.Linux内核源程序的文件按树形结构是如何安排的?

 

(1)arch子目录是所有和体系结构相关的核心代码;

(2)include子目录是编译核心所需要的大部分头文件;

(3)init目录包含kernel初始化代码;

(4)mm目录是所有独立于CPU体系结构的内存管理代码;

(5)kernel目录实现了大多数Linux系统的内核函数;

(6)drivers目录是系统所有的设备驱动程序;

(7)lib目录放置核心的库代码,net目录是核心与网络相关的代码,ipc目录包含核心的进程间通信的代码,fs目录为文件系统代码和各类型文件的操作代码。

31.嵌入式操作系统中如何衡量一个文件系统的指标?

 

(1)可写性;

(2)永久存储性;(3)掉电稳定性;(4)压缩性;(5)在RAM时间。

32.选择文件系统时,需考虑Flash存储器的哪些物理特性和使用特点?

需要考虑以下几点:

(1)Flash存储器中各个块的最大擦除次数是有限的,如果能够均匀地使用各个块,就能延长Flash的整体寿命,这就需要文件系统有磨损均衡的功能。

(2)为了提高Flash存储器的利用率,文件系统应该有对存储空间的碎片收集功能。

(3)考虑出现嵌入式系统意外掉电的情况,文件系统还应该有掉电保护的功能,保证系统在出现意外掉电时也不会丢失数据。

31.在什么场合下,选择UDP而非TCP?

在需要通信的信息量比较小,而且通信环境可靠性比较好的场合下,不需要选择TCP而选择利用UDP,这样在软件设计上可以简化,硬件上可以节约成本。

32.UDP与TCP的主要区别是什么?

UDP和TCP的主要区别是两者在如何实现信息的可靠传递方面不同。

TCP协议中包含了专门的传递保证机制,而UDP协议并不提供数据传送的保证机制。

三、arm编程语法题

 

1.写一条ARM指令,完成操作r1=r2*3(4分)

答:

ADDR1,R2,R2,LSL#1

2、说明指令STMIAr12!

{r0-r11}的操作功能。

(4分)

 

答:

将R0-R11十二个寄存器中的32位数据,存储到R12地址指针为起始地址的内存中,地址的操作方式是先操作、后增加,并更新地址

3.ARM常见的符号定义伪指令,具体有哪几种?

 

1、 用于定义全局变量的GBLA、GBLL和GBLS。

 2、 用于定义局部变量的LCLA、LCLL和LCLS。

 3、 用于对变量赋值的SETA、SETL、SETS。

 4、 为通用寄存器列表定义名称的RLIST。

4..指出下面各条指令的寻址方式。

SUBR0,R1,R2;寻址方式为:

寄存器寻址

SUBSR0,R0,#1;寻址方式为:

立即数寻址

MOVR0,R2,LSL#3;寻址方式为:

寄存器移位寻址

SWPR1,R1,[R2];寻址方式为:

寄存器间接寻址

LDRR2,[R3,#0x0C];寻址方式为:

基址加变址间接寻址

5、ARM指令中的第二操作数“operand2”有哪些具体形式?

解:

有三种:

寄存器、寄存器移位、8位位图立即数。

6、对于ARM的变址寻址方式,有基地址和偏移地址两部分组成。

回答一下问题

(1)基地址可以是哪些寄存器?

(2)偏移地址可以有哪些形式?

(3)总地址的计算方法有哪些?

(4)变址寻址应用于哪些指令?

解:

(1)基地址可以是通用寄存器R0---R15中的任意一个。

(2)偏移地址可以有三种形式:

12位立即数、寄存器、寄存器移位。

(3)总地址的计算方法。

有三种:

前变址(前索引)、后变址(后索引)、自动变址。

(程序相对偏移)

a.前索引偏移:

即先使用偏移传送数据;不定修改基地址。

如:

LDRRd,[Rn,#m]

b.后索引偏移:

即先传送数据;后先使用偏移修改基地址。

如:

LDRRd,[Rn],#m

c.自动变址:

即先使用偏移传送数据;再用偏移修改基地址。

如:

LDRRd,[Rn,#m]!

(4)有4条指令:

LDR、STR、LDM、STM

2.分别写出语句a)与b)中LDR的作用

a)LDRr0,[r1,#6]真正的ARM指令,取出r1+6为地址里面的存储内容送到r0里。

b)LDRr0,=0x999伪指令,把0x999这个常数送到r0里。

3.假设R0的内容为0x104,寄存器R1、R2的内容分别为0x01与0x10,存储器所有单元初始内容为0。

连续执行下述指令后,说明存储器及寄存器的内容如何变化?

STMIBR0!

{R1,R2}//寄存器R0的内容为0x10c,存储器0x108的内容为0x01,存储器0x10c的内容为0x10,寄存器R1、R2的内容分别为0x01与0x

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2