ARM9学习笔记.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

liudao + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档