- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARM9学习笔记
1、嵌入式系统的发展过程
嵌入式微处理器(EMPU)
--单片机(SCM)
--嵌入式微控制器(EMCU)
--数字信号处理器(EDSP)
--嵌入式片上系统(ESOC)
2、ARM体系结构版本及微处理器系列
ARM(Advanced RISC(Reduced Instruction Set Computer) Machines Limited)公司,
采用ARM技术知识产权IP核的微处理器是我盟通常所说的ARM微处理器。
ARM7
ARM9
ARM11
ARM Cortex(采用ARMv7架构)
ARM7和ARM9对比
和ARM7相比,ARM9增加了MMU和Cache。
ARM7采用三级流水线结构的风诺依曼结构,ARM9采用五级流水线哈佛结构。
后缀解释:
T:支持Thumb指令集。
D:支持偏上调试(Debug)。
M:内嵌硬件乘法器(Mutiplier)。
I:支持偏上断点和调试点。
E:支持增强型DSP功能。
J:Java加速器。
S:全合成式。
还在使用ARM指令集(Instruction Set Architecture)有以下版本:
ARMv4
ARMv4T
ARMv5TE
ARMv5TEJ
ARMv6
ARMv7
3、ARM微处理器的工作状态和模式
2种状态
ARM状态
Thumb状态
不同状态,单条指令的存储长度是不同的。ARM状态,一条指令4个字节,Thumb状态下一条指令2个字节。
7种模式
用户模式(Usr)
快速中断模式FIQ()
外部中断模式IRQ(Interrup Requet)
管理模式Supervisor(svc)
数据访问中断模式Abort(abt)
系统模式System(sys)
未定义指令终止模式Undefined
除了用户模式外,其它六种成为非用户模式或者特权模式(privileged mode).出去用户模式和系统模式以外的5种模式成为异常模式(exception mode)。
4、ARM寄存器
ARM处理器含有37个寄存器
31通用寄存器(包括PC,32位)。
未备份寄存器,R0-R7,所有处理器模式下都对应同一个物理寄存器。
备份寄存器,R8-R14,R13和R14对应6个物理寄存器,一个是用户模式和系统模式共用的,其余5个对应5种处理器模式,由CPSR寄存器的M字段(D0-D4)决定。R13常用作堆栈指针q寄存器SP(Stack Pointer Register)。R14成为连接寄存器(LR),也叫返回地址寄存器,存放子程序的返回地址。
程序计数器或指令指针寄存器 PC(Program Register),即R15,ARM所有模式下都指向一个物理寄存器。
6个状态寄存器(32位)。
CPSR(Current Program Status Register) 程序状态寄存器,可以在任何模式下被 访问,7种模式下指向同一个物理寄存器。
SPSR(Saved Program Status Register)程序状态保存寄存器,系统模式或用户模 式下没有SPSR,每种模式对应一个物理寄存器,SPSR常用来当作CPSR的 备份寄存器。
5?、#2_11”,十进制数加“0d”,负数“#-0x1”或“#-1”
每个立即数由一个8位的常数循环右移偶数位得到。循环右移的位数由一个4位二进制的两倍表示。如果立即数记作immediate,8位常数记作immed_8,4位循环右移值记作rotate_imm,则有:immediate=immed_8 循环右移(2*rotate_imm)。
判断一个立即数是否符合8位位图的原则
首先把这个数用2进制表示出来,然后看这个数中“1”的最大间隔是多少,要看两次,一次顺序看,一次循环看,循环看是把16位或32位寄存器的首尾连起来,越过首尾看,两次中如果间隔都大于8(包含首尾的两个1),那这个数肯定是非法的。如果有一次小于等于8则有可能是合法的,可以进行下一步判断。
此时又分为两种情况,
顺序看1的间隔等于8,此时可以看看,这个数最高位1的前面或最低位1的后面是否有偶数个0,只要一种情况下有,这个数就是合法的。
如果循环看1的最大间隔小于等于8,此时可以看看,循环看时,两端得到的间隔个数是否有一个为偶数,如果有一个是偶数,这个数就是合法的。
0x1010 是非合法的 (两次看这个数中“1”的最大间隔大于8)
0x1FA 是非合法的(顺序看这个数中“1”的最大间隔等于8,这个数最高位1的前面或者最低位1的后面没有偶数个0,)
0x7000000E 是合法的
(因为循环看时,两端得到的间隔个数有一个为偶数)
如何判断一个数是否是合法立即数?
首先将这个数转换为32bit16进制形式,例如218=0xDA=0x000000
文档评论(0)