没有合适的资源?快使用搜索试试~ 我知道了~
浙工大嵌入式考点整理.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 118 浏览量
2023-10-03
22:01:35
上传
评论
收藏 2.44MB PDF 举报
温馨提示
试读
24页
浙工大嵌入式考点整理.pdf
资源推荐
资源详情
资源评论
嵌入式系统定义
以应用为中心,以计算机技术为基础,软件、硬件可裁减,功能、可靠性、成本、体积、功 耗严格要求的
专用计算机系统。
ARM7
架构的
3
级流水线
取指级:取指级完成程序存储器中指令的读取,并放入指令流水线中。
译码级:对指令进行译码,为下一周期准备数据路径需要的控制信号。这一级指令 “占有”
译码逻辑,而不“占有”数据路径。
执行级:指令“占有”数据路径,寄存器被读取,运算单元产生相应的运算结果并回写到目 的寄存器中,
运算单元的结果则根据指令需求来更改状态寄存器的条件位。
ARM9
的
5
级流水线
取指:指令从存储器中取出,放入指令流水线。
译码:指令译码,从寄存器中读取寄存器操作数。
执行:产生逻辑运算的结果或存储器地址。
访存
/
缓冲:如果需要,则访问数据存储器。否则,
ALU
的结果只是简单地缓冲一个时钟周
期,以便使所有指令具有同样的流水线流程。
回写:将指令产生的结果回写到寄存器,包括任何从存储器读取的数据。
复杂指令集一一
CISC
精简指令集一一
RISC
CISC
处理器的实现复杂性更高,而
RISC
编译器的复杂性更高;
CISC
处理器功耗高、流水线效率低;
RISC
代码密度不高,可执行文件体积较大,汇编代码可读性较差 总线分类 按相对于
CPU
的位置划分 片内
总线 片外总线: 按功能类型 数据总线
Dbus
地址总线
Abus
控制总线
Cbus
总线的主要参数 总线宽度又称总线位宽,指的是总线能同时传送数据的位数。 如
16
位总
线就是具有
16
位数据传送能力。
总线频率 总线工作速度的一个重要参数,工作频率越高,速度越快。通常用
MHz
表示。
总线带宽 又称总线的数据传送率,是指在一定时间内总线上可传送的数据总量,用每秒最 大传送数据量
来衡量。总线带宽越宽,传输率越高。
总线带宽 伸位
:MB/s)=
(总线宽度
/8)X
总线频率
如:总线宽度
32
位,频率
66MHZ
,则总线带宽
=
(
32/8
)
* 66MHz=264MB/s
一个微处理器系统可能含有多条总线 高速总线
AHB
低速总线
APB
嵌入式存储系统是由寄存器、高速缓冲区
Cache
、主存储器和辅助存储器组成。
SDRAM
存储单元可以理解为一个电容, 总是倾向于放电,为避免数据丢失,必须定时刷新。
FLASH
存储器
(
可在线进行电写入、电擦除的
ROM
存储器
)
有两种主要技术
NOR FLASH
:具有
SRAM
接口,可字节读写、操作速度慢、
10
万次寿命
NAND FLASH
:多周期寻址,页读写、速度快、需
ECC
校验、
100
万次寿命、易产生坏块
存储格式 大端格式:高位字节排放在内存的低地址端,低位字节排放在内存的高地址端
设计一个
C
语言程序,判定
CPU
的大、小端模式
short int x;
内存地址 小爲模弍殍敢内客 大舞噗戎存战内客
0x4000 0x78
0x12
0x4001 0x56
0x34
0x4002 0x34
0x56
0x4003 0x12 0n7B
小端格式:低位字节排放在内存的低地址端,高位字节排放在内存的高地址端
32bit
的数
0x12345678
在
Little-endian
模式以 及
Big-endian
模式
CPU
内存中的存放方式
char x0,x1;
x=0x1122;
x0=((char*)&x)[0];
〃低地址单元
x1=((char*)&x)[1];
〃高地址单元
若
x0=0x11,
则是大端
;
若
x0=0x22,
则是小端 .....
嵌入式软件分类系统软件控制、管理计算机系统的资源 支撑软件辅助软件开发的工具
应用软件面向应用领域
ARM
指令集变种:
T
、
M
、
E
、
D
、
I
、
J
、
F
、
S
标志 含义 说明
T
支持
Thumb
指令集
Thumb
指令集版本
1
:
ARMv4T
Thumb
指令集版本
2
:
ARMv5T
Thumb-2
:
ARMv6T
D
片上调试
Debug
M
支持长乘法
32
位乘
32
位得到
64
位,
32
位的乘加得到
64
位
I Embedded ICE
在线仿真
E
DSP
指令
增加了
DSP
算法处理器指令:
16
位乘加指令,带符号数的加 减法,
双字数据操作,
cache
预取指令
J
Java
加速器
Jazelle
提高
java
代码的运行速度
S
可综合 提供
VHDL
或
Verilog
语言设计文件
ARM
处理器工作状态
ARM
状态,执行
32
位的、字对齐的
ARM
指令 操作数寄存器的状态(位
[0]
)为
0
Thumb
状态,执行
16
位的、半字对齐的
Thumb
指令操作数寄存器的状态(位
[0]
)为
1
处理器模式 说明 备注
用户
(usr)
正常程序工作模式 不能直接切换到其它模式
系统
(sys)
用于支持操作系统的特权任务等(系 统调
用)
与用户模式类似,但具有可以直接切换 到其
它模式等特权
快中断
(fiq)
支持高速数据传输及通道处理
FIQ
异常响应时进入此模式
中断
(irq)
用于通用中断处理
IRQ
异常响应时进入此模式
管理
(svc)
操作系统保护代码 系统复位和软件中断响应时进入此模式
中止
(abt)
用于支持虚拟内存和
/
或存储器保护 访问无效的地址空间时会进入此模式
未疋义
(und)
支持硬件协处理器的软件仿真 未疋义指令异常响应时进入此模式
内部寄存器
31
个通用
32
位寄存器;
6
个状态寄存器。
R0
〜
R13
为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构 作为特殊用途,
并且可用于任何使用通用寄存器的指令。
R0
〜
R7
为未分组的寄存器,对应
于相同的
32
位物理寄存器。
R8
〜
R14
为分组寄存器。它们所对应的物理寄存器取决于当前 的处理器模式,
几乎所有允许使用通用寄存器的指令都允许使用分组寄存器。
R8
〜
R12
有
两个分组的物理寄存器。一个用于除
FIQ
模式之外的所有寄存器模式,另一个用于
FIQ
模
式。这样在发生
FIQ
中断后,可以加速
FIQ
的处理速度。寄存器
R13
、
R14
分别有
6
个分 组的物理寄存
器。一个用于用户和系统模式,其余
5
个分别用于
5
种异常模式。
R13
堆栈指针(
SP
)。在
ARM
指令集当中,没有以特殊方式使用
R13
的指令或其它功能,
只是习惯上都这样使用
R14
链接寄存器(
LR
)在每种模式下,模式自身的
R14
版本用于保存子程序返回地址,当
发生异常时,将
R14
对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定 偏移量)。
R15
为程序计数器(
PC
),指向正在取指的地址。
莫别
垂克垂在:'二峯
丰的老称
吾馍式下实賊呵共尋希
寧理
屮止 耒更文
程序计
叫)
R0
Rl(aS) Rl
R2(a3}
他
R3
R4(vl) R4
R5(v2) R5
R6(v3) R6
R^-4)
RS(v5) Rfi RS fiq*
R9(SBj® R9 KS.fiq*
RKXSL
A
?)
RIO
Rn(H»
:
v3) Rll
R120P) R12 IU2 fkl*
RLXSP]
RU R13 svc*
R13 imd *
RB
卫
i
Rl4(Lfy R14 R14 sw* R14 it •
R14^md*
R14 uq* R14 fiq *
R15
RI6(CPSR) CPSR
SPSR
无
&PSR.abt
SPSJi abt
SPSR.uDd
SPSRjrn SPSR fiq
R14
寄存器与异常
异常类型 偏移
数据中止
8
「
PC=ADDR+12
,返回当前指令
未定义
0
PC=ADDR+8
,返回下一条指令
软中断
0
PC=ADDR+8
,返回下一条指令
取指异常
4
「
PC=ADDR+8
,返回当前指令
IRQ/FIQ 4
PC=ADDR+12
,返回下一条指令
寄存器
CPSR
为程序状态寄存器,在异常模式中,另外一个寄存器“ 程 序 状 态 保 存 寄 存 器
(
SPSR
)”可以被访问。每种异常都有自己的
SPSR
,在因为异常事件而进入异常时它保存
CPSR
的当前值,异常退出时可通过它恢复
CPSR
。
CPSR
寄存器的格式
31 30 29 28 27 26
N
Z C
V
保留 控制位
」模式位
—状态位
—F1Q 蔡止
条件代码标志
IRQ 蔡止
N
:运算结果的最高位。对于有符号二进制补码,结果为负数时
N=1
,为正数或零时
N=0
;
Z
:指令结果为
0
时
Z=1
(通常表示比较结果“相等”),否则
Z=0
;
C
:当进行加法运算最高位产生进位时
C=1
,否则
C=0
。当进行减法运算最高位产生借位时
C=0
,否则
C=1
。对于结合移位操作的非加法
/
减法指令,
C
为从最高位最后移出的值,其它 指令
C
通常不变;
V
:当进行加法
/
减法运算,并且发生有符号溢出时
V=1
,否则
V=0
,其它指令
V
通常不变。
立即寻址 操作数直接通过指令给出,数据包含在
32
位指令编码中,以
#
为前缀。
0x, 0b, 0d
分别对应
16
进制、
2
进制和
10
进制 例:
MOV R1
,
#0x56000000
寄存器寻址把寄存器中的数
值作为操作数,指令执行时直接取出寄存器值进行操作。
寄存器内容并不变化 例:
MOV R2, R3 ;R2 JR3 ;R3
中的内容赋给
R2
寄存器移位寻址 操作数由寄存器的值做相应移位而得到。 移位的方式在指令中以助记符的
形式给出
,
而移位的位数可用立即数或寄存器寻址方式表示。寄存器内容并不变化
例:
MOV R0
,
R1
,
LSL R3
;
R1 <<= R3 R0 = R1
5
种位移操作:
LSL/ASL
逻辑
/
算术左移,寄存器中字的低位空出位补
0
LSR
逻辑右移,寄存器中字的高位空出位补
0
ASR
算术右移,移位过程中保持符号位不变,即若源操作数为正数,则字的高位空出位补
0
, 否则补
1
ROR
循环右移,由字的低位移出位填入字的高位空出位
RRX
带扩展的循环右移,操作数右移一位高位空出位用原
C
标志值填充;
寄存器间接寻址 寄存器的内容为操作数的地址指针,用
[]
标示。操作数存放在存储单元中
例:
LDR R0
,
[R1]
变址寻址 将基址寄存器的内容与指令中给出的偏移量
(
不超过
4KB)
相加,形成操作数的有
效地址变址寻址包括基址加偏移和基址加索引寻址两种方式
基址加偏移一前索引寻址
LDR R0
,
[R1
, #
4]
;
R0 J[R1
+
4]
基址加偏移一带自动索引的前索引寻址
LDR R0
,
[R1
, #
4]
! ;
R0 J[R1
+
4]
、
R1J R1
+
4
基址加偏移—后索引寻址
LDR R0
,
[R1]
, #
4
;
R0J[R1]
、
R1J R1
+
4
基址加索引寻址
LDR R0
,
[R1
,
R2]
;
R0 J[R1
+
R2]
相对寻址 由程序计数器
PC
提供基准地址,指令中的地址码字段作为偏移量,两者相加后 得到的地址
即为操作数的有效地址
BL SUBRI
;调用至
U SUBRI
子程序
SUBR1
…
;BL
使用了相对寻址方式
多寄存器寻址一条指令可以完成多个寄存器值的传送。这种寻址方式可以一次对多个寄存
器寻址,最多可传送
16
个寄存器。
LDMIA R1! , {R2-R4 , R5} ; R2J [R1] , R3 J [R1 + 4], R4J [R1 + 8], R5 J [R1 + 12]
堆栈寻址 堆栈是一个按特定顺序进行存取的存储区,操作顺序为 “后进先出”。堆栈寻址
是隐含的,它使用一个专门的寄存器
(
堆栈指针
)
指向一块存储区域
(
堆栈
)
,指针所指向的存
储单元即是堆栈的栈顶。存储器堆栈可分为两种:
向上生长:向高地址方向生长,称为递增堆栈 向下生长:向低地址方向生长,递减堆栈
满堆栈 堆栈指针指向最后压入的堆栈的有效数据项
空堆栈 堆栈指针指向下一个待压入数据的空位置
溢出标志
进位或借位扩展
零
运算结果符号位
堆栈寻址命令 包括
LDMFA/STMFA
、
LDMEA/STMEA
、
LDMFD/STMFD
、
LDMED/STMED
。
LDM
和
STM
表示多寄存器寻址,即一次可传送多个寄存器值。
LDM
: 一次装载多个,这里用来出栈。
STM
: 一次存储多个,这里用来入栈。
剩余23页未读,继续阅读
资源评论
hhappy0123456789
- 粉丝: 62
- 资源: 5万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 办公效率:PDF-图片互转工具
- 一天的风格化规范化当时法国是
- 编译原理:正规式转NFA(有穷自动机)
- 通过 Navicat 备份文件读取连接信息和解析密码
- Linux下开箱即用的C++单元测试demo示例,public成员函数单元测试
- 连接Redis服务器 在使用Redis之前,首先需要使用redis-cli工具连接到Redis服务器 redis-cli是Re
- 连接Redis服务器 在使用Redis之前,首先需要使用redis-cli工具连接到Redis服务器 redis-cli是Red
- 连接Redis服务器 在使用Redis之前,首先需要使用redis-cli工具连接到Redis服务器 redis-cli是Red
- redis命令实践 详细教程
- redis命令实践 详细教程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功