最全嵌入式系统复习题资料整理Word文档下载推荐.docx
- 文档编号:22924289
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:24
- 大小:30.86KB
最全嵌入式系统复习题资料整理Word文档下载推荐.docx
《最全嵌入式系统复习题资料整理Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《最全嵌入式系统复习题资料整理Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
CPSR(当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。
Thumb状态下的寄存器组织
❑程序可以直接访问8个通用寄存器(R7~R0)、程序计数器(PC)、堆栈指针(SP)、连接寄存器(LR)和CPSR。
每一种特权模式下都有一组SP、LR和SPSR(备份的程序状态寄存器)。
ARM微处理器的指令集可以分为六大类:
跳转指令
数据处理指令
程序状态寄存器(PSR)处理指令
加载/存储指令
协处理器指令和异常产生指令
指令寻址方式:
9种1.寄存器寻址;
2.立即寻址;
3.寄存器移位寻址;
4.寄存器间接寻址;
5.基址寻址;
6.多寄存器寻址;
7.堆栈寻址;
8.块拷贝寻址;
9.相对寻址;
嵌入式系统结构
v一般分为四层:
硬件层,中间层,软件层,功能层
▪中间层:
板级支持包BSP(硬件基本信息,基本程序)
•一般是芯片产商提供,需要根据实验系统情况进行微调,程序移植的时候很重要
▪软件层可分为:
设备驱动程序层,实时操作系统层,应用程序接口API层
•学习各种硬件使用,基于实时操作系统的程序设计
•编写设备驱动程序
•了解实时操作系统的功能及部分工作原理
▪功能层:
为实际应用编写程序
•GPS,MP3,控制系统等
v嵌入式操作系统的功能
v负责嵌入式系统的全部软硬件的分配和调度工作,控制协调活动
▪具有实时性高,稳定性强,能独立自主工作,可根据应用裁减
v其它功能:
强大的网络接口,友好的人机界面,良好的移植性,帮助文档多
串口标准
目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。
RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。
RS-232采取不平衡传输方式,即所谓单端通讯。
由于其发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米。
RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为3~7kΩ。
所以RS-232适合本地设备之间的通信
微处理器响应中断方法:
向量法,非向量法
向量中断--由硬件提供中断服务程序入口地址;
非向量中断--由软件件提供中断服务程序入口地址
中断服务寄存器INTPND的操作很特别,它的特别之处就在于对当我们要把该寄存器中某个值为1的位设置为0时,往该位写1。
ucos任务调度:
每个任务都处在以下5种状态之一的状态下,这5种状态是休眠态,就绪态、运行态、挂起态(等待某一事件发生)和被中断态,不同系统,任务的状态也不同
●休眠态:
相当于该任务驻留在内存中,但并不被多任务内核所调度。
●就绪态:
意味着该任务已经准备好,可以运行了,但由于该任务的优先级比正在运行的任务的优先级低,还暂时不能运行。
●运行态:
是指该任务掌握了CPU的控制权,正在运行中。
●挂起态:
也可以叫做等待事件态WAITING,指该任务在等待,等待某一事件的发生,(例如等待某外设的I/O操作,等待某共享资源由暂不能使用变成能使用状态,等待定时脉冲的到来或等待超时信号的到来以结束目前的等待,等等)。
●中断状态:
发生中断时,CPU提供相应的中断服务,原来正在运行的任务暂不能运行,就进入了被中断状态。
邮箱是μC/OS-II中另一种通讯机制,它可以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量。
该指针指向一个包含了特定“消息”的数据结构。
消息队列用于给任务发消息。
消息队列实际上是邮箱阵列。
●在调用μC/OS-Ⅱ的任何其它服务之前,μC/OS-Ⅱ要求用户首先调用系统初始化函数OSIint()。
OSIint()初始化μC/OS-Ⅱ所有的变量和数据结构.
I2C总线常识
I2C总线采用一个双线式漏极开路接口,可在一根总线上支持多个器件和主控器。
所连接的器件只会把总线拉至低电平,而决不会将其驱动至高电平。
总线在外部通过一个电流源或上拉电阻器连接至一个正电源电压。
当总线空闲时,两条线路均为高电平。
在标准模式中,I2C总线上的数据传输速率高达100kbit/s,而在快速模式中则高达400kbit/s。
I2C总线上的每个器件均由一个存储于该器件中的唯一地址来识别,并可被用作一个发送器或接收器(视其功能而定)。
除了发送器和接收器之外,在执行数据传输时,还可把器件视作主控器或受控器。
主控器是负责启动总线上的数据传输并生成时钟信号以允许执行该传输的器件。
同时,任何被寻址的器件均被视作受控器。
I2C总线的优点有哪些?
低电流、低功耗,元件价格低廉,硬件写保护,时钟和信号用电平触发,具有高抗噪声输入浪涌滤波器,时钟包含100KHZ和200KHZ两种模式。
只要求两条总线线路:
一条串行数据线SDA,一条串行时钟线SCL;
每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址,主机可以作为主机发送器或主机接收器;
它是一个真正的多主机总线,如果两个或更多主机同时初始化,数据传输可以通过冲突检测和仲裁防止数据被破坏;
串行的8位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可400kbit/s,高速模式下可达3.4Mbit/s;
连接到相同总线的IC数量只受到总线的最大电容400pF限制。
ADS集成开发环境(ARMDeveloperSuite)
ADS包括了四个模块分别是:
SIMULATOR;
C编译器;
实时调试器;
应用函数库。
ADS1.2提供完整的WINDOWS界面开发环境。
C编译器效率极高,支持c以及c++,使工程师可以很方便的使用C语言进行开发。
提供软件模拟仿真功能,使没有Emulators的学习者也能够熟悉ARM的指令系统。
配合FFT-ICE使用,ADS1.2提供强大的实时调试跟踪功能
嵌入式系统开发的基本流程?
答:
1)系统定义与需求分析;
2)系统设计方案的初步确立;
3)初步设计方案性价比评估与方案评审论证;
4)完善初步方案、初步方案实施;
5)软硬件集成测试;
6)系统功能性能测试及可靠性测试。
1.嵌入式系统开发过程分为哪几个阶段?
每个阶段的特点是什么?
(1)需求分析阶段:
对问题的识别和分析;
制定规格说明文档;
需求评审
采用成熟、易于二次开发的系统易于节省时间,从而以最短时间面世。
(2)设计阶段:
数据流分析-划分任务-定义任务间接口
DARTS的设计方法-是结构化设计的扩展,划分出任务,并提供定义任务间的接口机制,适合设计多个并发执行的任务。
(3)生成代码阶段:
代码编程-交叉编译和链接-交叉调试-测试(单元和集成测试)
一般采用的方法是现在通用PC机上编程,然后通过交叉编译、链接,将程序做成目标平台上可以运行的二进制代码格式,最后将程序下载到目标平台上的特定位置,在目标板上启动这段二进制代码。
(4)固化阶段:
嵌入式应用软件完成以后,编译器要对源代码重新编译一次,以产生固化到目标坏境的可执行代码,再烧到环境目标环境的Flash中。
固化的可执行代码和用于调试的可执行代码有些不同。
固化用的代码在目标文件中把调式用的信息都屏蔽掉了。
固化后没有监控器执行硬件的启动和初始化,这部分工作必须由固化的程序自己完成,所以启动模块必须包含在固化代码中。
程序需要写入到Flash中固化,保证每次运行后下一次运行无误,所以嵌入式开发相比增加了软件的固化阶段。
板级支持包(BoardSupportPackage)是操作系统与目标应用硬件环境的中间接口,它是软件包中具有平台依赖性的那一部分。
功能:
在系统启动时,对硬件进行初始化;
为驱动程序提供访问硬件的手段。
什么是可编程片上系统?
用可编程逻辑技术把整个系统放到一块硅片上,称作可编程片上系统SOPC.它是一种特殊的嵌入式系统,首先它是SOC,即由单个芯片实现整个系统的主要逻辑功能,具有一般SOC基本属性;
其次,它又具备软硬件在系统可编程的功能,是可编程系统,具有可裁剪、可扩充、可升级等灵活的设计方式。
2.有时要使用Thumb技术的原因
(Thumb指令集是把32位的ARM指令集的一个子集重新编码后形成的一个特殊的16位指令集。
)在性能和代码大小之间取得平衡,在需要较低的存储代码时采用Thumb指令系统用Thumb指令编写最小代码量的程序(能够很好的解决代码长度的问题),却取得以ARM代码执行的最好性能,可以带来低功耗,小体积,低成本。
3.寄存器R13,R14,R15的专用功能各是什么?
1)寄存器R13保存堆栈指针SP;
2)寄存器R14用作子程序链接寄存器,也称为LR,用以保存返回地址;
3)R15(PC)用作程序计数器。
4.寄存器CPSR,SPSR的功能各是什么?
1)CPSR包含条件码标志、中断禁止位、当前处理器模式以及其它状态和控制信息。
所有处理器模式下都可以访问当前的程序状态寄存器CPSR。
2)在每种异常模式下都有一个对应的物理寄存器——程序状态保存寄存器SPSR。
当异常出现时,SPSR用于保存
CPSR的状态,以便异常返回后恢复异常发生时的工作状态。
5.ARM的异常有哪几种,各进入何种工作模式?
他们退出各采用什么指令?
1)复位(Reset)异常(管理模式);
2)未定义指令(undefinedinstruction)异常(未定义模式);
3)软件中断(SWI)异常(管理模式);
4)指令预取中止(PrefechAbort)异常(中止模式);
5)数据访问中止(DataAbort)(中止模式);
6)快速中断请求(FIQ)(FIQ模式);
7)外部中断请求(IRQ)(IRQ模式)。
异常返回指令:
1)SWI,未定义的返回:
MOVSPC,R14;
2)IRQ,FIQ,预取中止的返回:
SUBSPC,R14,#4;
3)数据中止返回并重新存取:
SUBSPC,R14,#8
异常中断的优先级:
复位(最高优先级)-->
数据异常中止--->
FIQ-->
IRQ--->
预取指异常中止--->
SWI---->
未定义指令(包括缺协处理器)。
6.ARM的寻址方式有哪些?
各写一条说明。
1)立即寻址
(1)ADDR0,R0,#1/*R0←R0+1*/
(2)ADDR0,R0,#0x3f/*R0←R0+0x3f*/;
2)寄存器寻址(ADDR0,R1,R2/*R0←R1+R2*/);
3)寄存器间接寻址
(1)、LDRR0,[R1]/*R0←[R1]*/;
(2)STRR0,[R1]/*[R1]←R0*/;
4)基址加偏址寻址
(1)、LDRR0,[R1,#4];
R0←[R1+4];
(2)、LDRR0,[R1,#4]!
;
R0←[R1+4]、R1←R1+4;
(3)、LDRR0,[R1],#4;
R0←[R1]、R1←R1+4
5)堆栈寻址
(1)、STMFDSP!
{R1-R7,LR};
(2)、LDMFDSP!
6)块拷贝寻址
(1)、LDMIAR0!
{R2-R9};
(2)、STMIAR1,{R2,R9};
7)相对寻址
7.指令ADR,ADRL、LDR、NOP是如何处理地址值读入到寄存器中的?
ADR是将基于PC或者寄存器的地址值读入到寄存器的,ADR伪指令通常被替换成一条ADD指令或SUB指令来实现该ADR指令的功能。
而ADRL伪指令与ADR指令的最大不同之处是,它可以读取更大范围内的地址,而且被编译器替换成2条数据处理指令。
LDR将一个32位的立即数或者一个地址值读取到寄存器中。
大范围的地址读取。
NOP在汇编时将被替换成ARM中的空操作。
8.指令LDRR1,=0xFFF是如何将立即数0xfff读入到R1的?
由于需要读取的寄存器的数据超过了MOV及MVN指令可操作的范围,编译器将该常数放在数据缓冲区中,同时用一条基于PC的LDR指令读取该常数。
LDRR1,[PC,offset_to_LPOOL].
............
LTORG;
声明数据缓冲池
LPOOLDCDOxFFF;
OxFFF放在数据缓冲池中。
10.嵌入式Linux操作系统的特点。
广泛的硬件支持、内核高效稳定、开放源码,软件丰富、优秀的开发工具、完善的网络通信和文件管理机制,
Linux的进程调度五个状态
运行态(分为执行态、就绪态)、可中断等待态、不可中断等待态、僵死态、暂停态
11.什么是实时系统?
它由哪些特征?
如何分类?
实时系统是具有实时性且能支持实时控制系统工作的操作系统。
其首要任务是调动一切可利用的资源来完成实时控制任务,其次才着眼于提高计算机系统的使用效率,其重要特点是能满足对时间的限制和要求。
实时性:
实时系统所产生的结果在时间上有严格的要求,只有符合时间要求的结果才是正确的。
并行性:
要求系统有并行处理能力,以便能同时相应来自不同端口的输入信号。
多路性:
对多个不同的现场进行采集,以及对多个对象和多个执行实行控制。
独立性:
每个用户向实时系统提出服务请求,相互间是独立的。
在实时控制系统中对信号的采集和对象控制也是独立的。
可预测性:
实时系统的实际行为必须处在一定的限度内,而这个限度由系统的定义获得。
可靠性:
一方面指系统的正确性,另一方面指系统的健壮性,即使系统出现错误,仍然处于可预测状态,仍可以安全地带错运行和平缓降级它的性能。
分类:
强实时系统(保质、保量、在限定时间内完成任务)、弱实时系统(没有限制完成时间)、一般实时系统(强和弱的折中)。
1.RTOS由几部分组成?
它由哪些特点?
与一般操作系统有何不同?
实时内核(主要实现任务管理,定时器管理,存储器管理、任务间通信与同步,中断管理等)、网络组件、文件系统、图形用户界面。
支持异步事件的响应;
中断和调度任务的优先级机制;
支持抢占式调度;
确定的任务切换时间和中断延迟时间;
支持同步。
2.实时操作系统常用的任务调度算法有哪几种?
基于优先级的调度算法:
非抢占式调度,抢占式调度
同一优先级的时间轮转调度算法(执行一段时间无论完成与否,处理器均转入下一个就绪的同一优先级任务)
单调速率调度算法(执行频率越高,其优先级越高)
1.Linux系统的实时调度和普通调度有什么区别?
区别:
Linux根据政策从整体上区分实时进程和普通进程,因为实时进程和普通进程度调度是不同的,它们两者之间,实时进程应该先于普通进程而运行,然后,对于同一类型的不同进程,采用不同的标准来选择进程:
对于普通进程,Linux采用动态优先调度,Linux中某个进程的调度策略(policy)、优先级(priority)等可以作为参数由用户自己决定,具有相当的灵活性。
对于实时进程,Linux采用了两种调度策略,即FIFO(先来先服务调度)和RR(时间片轮转调度)。
因为实时进程具有一定程度的紧迫性,所以衡量一个实时进程是否应该运行,Linux采用了一个比较固定的标准。
有两个优先级,实时优先级就是用来衡量实时进程是否值得运行的。
2.Linux中从用户态进入核心态的唯一途径是什么?
从用户态转换为核心态的唯一途径是中断。
CPU处于用户态时,所运行的程序只能执行非特权指令,如果用户程序在用户态下执行特权指令,将发生中断,由操作系统获得控制。
操作系统在核心态下运行。
从核心态到用户态可以通过修改程序状态字来实现,这将伴随这由操作系统程序到用户程序的转换。
1.写出ARM使用的各种工作模式和状态。
ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:
第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令;
第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。
在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。
但ARM微处理器在开始执行代码时,应该处于ARM状态。
ARM处理器模式
ARM微处理器支持7种运行模式,分别为:
用户模式(usr):
ARM处理器正常的程序执行状态。
快速中断模式(fiq):
用于高速数据传输或通道处理。
外部中断模式(irq):
用于通用的中断处理。
管理模式(svc):
操作系统使用的保护模式。
数据访问终止模式(abt):
当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。
系统模式(sys):
运行具有特权的操作系统任务。
定义指令中止模式(und):
当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。
ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。
大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。
除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式;
其中除去用户模式和系统模式以外的5种又称为异常模式,常用于处理中断或异常,以及需要访问受保护的系统资源等情况
1.哪个寄存器用做PC?
哪个用做LR?
寄存器R14称为链接寄存器LR,它用于保存子程序的返回地址。
如果在子程序中保存了返回地址,寄存器R14则可以用做其他用途。
寄存器R15为程序计数器PC,不能用做其他用途
2.ARM与Thumb指令的边界对准有何不同?
用于字访问的地址通常应当字对准,用于半字访问的地址通常应当半字对准。
ARM执行期间是字对准方式,而Thumb指令时半字对准方式。
1、ARM7TDMI中的T、D、M、I的含义是什么?
64位乘法指令(带M后缀的)、支持片上调试(带D后缀的)、高密度16位的Thumb指令机扩展(带T后缀的)和EmbededICE观察点硬件(带I后缀的)
2、ARM7TDMI采用几级流水线?
使用何种存储器编址方式?
三级流水线(取指译码执行);
使用了冯·
诺依曼(VonNeumann)结构,指令和数据共用一条32位总线。
3、ARM处理器模式和ARM处理器状态有何区别?
处理器模式指的是处理器在执行程序时在不同时刻所处的不同状态,处理器状态指的是处理器当前所执行的指令集。
1、基础知识
(1)ARM7TDMI(-S)有几种寻址方式?
LORR1,[R0,#0x08]属于哪种寻址方式?
1.寄存器寻址;
LORR1,[R0,#0x08]属于基址寻址。
(2)ARM指令的条件码有多少个?
默认条件码是什么?
16条,默认条件码是AL。
(3)ARM指令中第二个操作数有哪几种形式?
举例5个8位图立即数。
(1)立即数;
(2)寄存器;
(3)寄存器及移位常数;
0x3FC(0xFF<
<
2)、0、0xF0000000(0xF0<
24)、200(0xC8)、0xF0000001(0x1F<
28)。
(4)LDR/STR指令的偏移形式有哪4种?
LDRB和LDRSB有何区别?
(1)零偏移;
(2)前索引偏移;
(3)程序相对偏移;
(4)后索引偏移。
LDRB就是读出指定地址的数据并存入指定寄存器,LDRSB读出指定地址的数据,并高24位用符号位扩展,再存入指定寄存器。
(5)请指出MOV指令与LDR加载指令的区别及用途。
MOV将8位图(pattern)立即数或寄存器(operand2)传送到目标寄存器(Rd),可用于移位运算等操作。
读取指定地址上的存储器单元内容,执行条件AL.
MOV指令用于将数据从一个寄存器传送到另一个寄存器中,或者将一个常数传送到一个寄存器中,但是不能访问内存。
LDR指令用于从内存中读取数据放入寄存器中。
(6)CMP指令的操作是什么?
写一个程序,判断R1的值是否大于0x30,是则将R1减去0x30。
CMP指令将寄存器Rn的值减去operand2的值,根据操作的结果更新CPSR中的相应条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。
CMPR1,0x30
SUBHIR1,R1,0x30
(7)调用子程序是用B还是用BL指令?
请写出返回子程序的指令?
BL指令用于子程序调用。
MOVPC,R14
(8)请指出LDR伪指令的用法。
指令格式与LDR加载指令的区别是什么?
LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。
第二个数为地址表达式。
(9)ARM状态与Thumb状态的切换指令是什么?
请举例说明。
BX指令,
(10)Thumb状态与ARM状态的寄存器有区别吗?
Thumb指令对哪些寄存器的访问受到一定限制?
Thumb状态下不能更新CPSR中的ALU状态标志。
,Thumb指令对R8~R15寄存器访问受限。
(11)Thumb指令集的堆栈入栈、出栈指令是哪两条?
PUSHPOP
(12)Thumb指令集的BL指令转换范围为何能达到±
4MB?
其指令编码是怎样的?
Thumb采用两条16位指令组合成22位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 复习题 资料 整理