1.嵌入式系统定义
从技术的角度定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
2.嵌入式系统特点
嵌入式系统中运行的任务是专用而确定的;
嵌入式系统都是实时系统,有实时性的要求;
系统可靠性要求高(因为使用环境可能很恶劣);
具有功耗约束;
系统资源紧缺;
3.risc 与cisc区别
CISC适用于通用计算机,RISC使用于嵌入式系统。
4.嵌入式系统组成
硬件包括微处理器、外围硬件设备、嵌入式操作系统,以及用户的应用软件系统等四个部分组成
5.设计过程
0.ARMv7版架构特点
Cortex-A—面向性能密集型系统的应用处理器内核
Cortex-R—面向实时应用的高性能内核
Cortex-M—面向各类嵌入式应用的微控制器内核
1.ARM的三个特点
体积小、低功耗、低成本、高性能;
16/32位双指令集;
全球的合作伙伴众多;
2.ARM7TMDI-S各字母所代表的含义
3.ARM处理器的工作模式有哪几种,其中哪些为特权模式,哪些为异常模式
用户模式 USR 正常程序执行模式
快中断模式 FIQ 支持高速数据传输或通道处理
中断模式 IRQ 用于通道中断处理
管理模式 SVC 操作系统保护模式
中止模式 ABT 实现虚拟存储器和/或存储器保护
未定义模式 UND 支持硬件协处理器的软件仿真
系统模式 SYS 运行特权级的操作系统任务
特权模式:
除用户模式以外,其余6种模式称之为特权模式(Privileged Modes);
当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的;
异常模式:
除去用户模式和系统模式以外的5种又称为异常模式(Exception Modes);
常用于处理中断或异常,以及需要访问受保护的系统资源等情况;
4.arm/thumb状态的切换
ARM状态—处理器执行32位的字对齐的。Thumb状态—处理器执行16位的、半字对齐的。
进入Thumb状态:
当操作数寄存器的状态位(位[0])为1时,执行BX(带状态切换分支指令)进入Thumb状态。
如果处理器在Thumb状态进入异常,则当异常处理返回时,自动转换到Thumb状态。
进入ARM状态:
当操作数寄存器的状态位(位[0])为0时执行BX指令进入ARM状态。
当处理器进行异常处理时,进入ARM状态,从异常向量地址处开始执行。
5.三级流水线与五级流水线
三级指令流水线,三个阶段分别为:取址、译码、执行。
五级指令流水线,五个阶段分别为:取址、译码、执行,访存,写入。
ARM9具有5级流水线,将存储器的访问和寄存器写操作分别有单独的流水线来处理,解决了3级流水线LDR/STR指令执行阶段的延迟,提高了指令执行效率。
6.简述ARM处理器异常处理和程序返回的过程
SUB LR,LR,#4 ;计算返回地址(偏移-4)
STMFD SP!,{R0-R3,LR} ;保存使用到的寄存器
. . .
LDMFD SP!,{R0-R3,PC}^ ;中断返回
7.堆栈寻址方式种类
可以组合出四种类型的堆栈方式:
满递增:堆栈向上增长,堆栈指针指向含有效数据项的最高地址。指令如LDMFA、STMFA等;
空递增:堆栈向上增长,堆栈指针指向堆栈上的第一个空位置。指令如LDMEA、STMEA等;
满递减:堆栈向下增长,堆栈指针指向内含有效数据项的最低地址。指令如LDMFD、STMFD等;
空递减:堆栈向下增长,堆栈指针向堆栈下的第一个空位置。指令如LDMED、STMED等
8.分析程序状态寄存器CPSR各位的功能描述,并说明条件标志位NZCV的含义
9.ARM处理器字数据的存储格式有哪两种?并指出这两种格式的区别
大端序:多字节数据的最高字节存放在最低存储位置。
小端序:多字节数据的最低字节存放在最低存储位置。
10.读写指令
11.ARM处理器有哪几种异常类型?分析各异常类型返回的相关指令。
13.简述ARM处理器寄存器R13,R14,R15的功能。
寄存器R13常作为堆栈指针(SP)。
R14为链接寄存器(LR),在结构上有两个特殊功能:
在每种模式下,模式自身的R14版本用于保存子程序返回地址;
当发生异常时,该模式下的R14被设置成该异常模式将要返回的地址。
寄存器R15为程序计数器(PC),它指向正在取指的地址。
ARM7TDMI(-S)的指令集,包括ARM指令集,Thumb指令集。
ARM指令集介绍:
(1) 指令格式
{} {S} ,{,}
其中<>号内的项是必须的,{ }号内的项是可选的。
opcode:指令助记符;
cond:执行条件;
S:是否影响CPSR寄存器的值;
Rd:目标寄存器; Rn:第1个操作数的寄存器;
operand2:第2个操作数;
operand2的三种形式:
#immed_8r ——常数表达式;
Rm ——寄存器方式;
Rm, shift ——寄存器移位方式;
SUBNES R1,R1,#0x10 ;条件执行减法运算(NE),R1 –0x10 → R1,影响CPSR
(2) 条件码cond
(3) ARM存储器访问指令
LDR{cond}{T} Rd,<地址> ;将指定地址上的字数据读入Rd
STR{cond}{T} Rd,<地址> ;将Rd中的字数据存入指定地址
LDR R1,[R0,R2,LSL #2] ;将R0+R2×4地址处的数据读出,保存到R1中(R0、R2的值不变)
SWP R1,R1,[R0] ;将R1的内容与R0指向的存储单元的内容进行交换
(4) ARM数据处理指令:数据处理指令只能对寄存器的内容进行操作,而不能对内存中的数据进行操作。
数据传送指令:MOV{cond}{S} Rd,operand2
MOVS R3,R1,LSL #2 ;R3=R1<<2,并影响NZC标志位
算术逻辑运算指令:
ADDS R1,R1,#1 ;R1←R1+1,并影响标志位
SUB R6,R7,#0x10 ; R6←R7-0x10
比较指令:CMP{cond} Rn, operand2
CMP R1,#10 ; R1与10比较,设置相关标志位
(5) 乘法指令
MUL R1,R2,R3 ;R1=R2×R3
(6) ARM分支指令
B WAITA ; 跳转到WAITA标号处
(7) 协处理器指令