Cortex M3学习笔记 01 名词定义,Cortex M3结构,数据存储,指令执行方式,一些概念的理解.docVIP

Cortex M3学习笔记 01 名词定义,Cortex M3结构,数据存储,指令执行方式,一些概念的理解.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Arm Cortex M3学习笔记 01 名词定义,Cortex M3结构,数据存储,指令执行方式,一些概念的理解 顺便鄙视一下文库,上次传个《51单片机 串口频率 学习笔记》笔记竟然审核了一个月…… 本人权且看书自学,全文为本人对书本的理解,把书上的废话过滤掉,讲些实实在在的东西。有错误的地方,就给百度文库这个发布笔的记账号“ihsgnoliab”发消息吧,有兴趣的朋友一起学习交流。作者:DX。(注:还是菜鸟,学习中,想把工作的技术水平提高些) 名词定义 MMU:内存管理单元,Memory Management Unit; DSP:数字信号处理,Digital Signal Process; PDA:个人数字助理,Personal Digital Assistance; SoC:片上系统,System On Chip; EMPU:嵌入式微处理器,Embedded Microprocessor Unit; MCU:嵌入式微控制器,Microcontroller Unit; MPU:存储器保护单元,Memory Protect Unit; EDSP:嵌入式DSP处理器,Embedded Digital Signal Processor; OS:操作系统,Operating System; RTOS:实时操作系统,Real Time Operating System; RISC:精简指令集计算机; CISC;复杂指令集计算机; I-Code:指令总线; D-Code:数据总线; 常见的嵌入式操作系统 uClinux:发音“you see linux”; WinCE:微软的; VxWorks:美国WindRiver公司1983年,实时操作系统。 uC/OS-II:公开代码的操作系统,1992年问世。 Cortex M3处理器体系结构 ARM简介 Cortex A:应用处理器,Application; Cortex R:实时处理器,Real Time; Cortex M:微处理,Micro; ARM公司为了表示的指令集结构特性,分别为其以版本号用v1~v7表示; 例如: ARM7使用的是ARMv4的指令集; ARM9使用的是ARMv5的指令集; ARM11使用的是ARMv6的指令集; ARM Cortex M3 使用的ARMv7的指令集; ARM Cortex M3,问世于2006年,低成本,小管脚数目,具有极高运算能力和中断响应能力的处理器内核。 使用Thumb-2指令集,16位指令与32位指令并存。 她提供了:指令总线(I-Code);数据总线(D-Code); 存储器 数据的存储,以4个字节为一个字(那么2个字节就是半字): 字节 半字对齐 字对齐 地址 0x4002 0x4004 0x4004 0x4008 0x4006 0x400C 0x4008 0x4010 地址特征 Bit0=0 其他位为任意值 Bit0=0,Bit1=0 其他位为任意值 因为是thumb-2指令,获取指令一般都是16位,属于“半字对齐”的,所以取地址也是按照“半字对齐”来获取。 数据中的指令,如果出现一个32位的指令,那么根据上面的地址,会出现错位的情况,那么处理器将耗费大量时间解决对齐问题,对执行效率影响较大。下面会说明内核是怎么解决这个问题的。 指令执行 有指令总线获取指令; 分为3个阶段:1.取指令;2.译码;3.执行; 注意:一个阶段只能执行一条指令! 推想一下,如同流水线一样,那么可以在每个阶段,执行一条指令,这样可以“同时”处理3条指令,只不过她们在不同的处理阶段罢了,如图: 时间周期→ —→———→——→——→——→——→ 指令地址↓ T1 T2 T3 T4 T5 T6 指令1 N-4 取指 译码 执行 指令2 N 取指 译码 执行 指令3 N+4 取指 译码 执行 指令4 N+8 取指 译码 执行 …… …… 取指 译码 …… …… 取指 就像火车进站一样…… Cortex M3 可以一次取出2条指令,这两条指令未必就能“对齐”,如图从存储器中获得32位指令: 例如: 32位指令A=A1+A2;32位指令B=B1+B2; 32位指令C=C1+C2;16位指令D; 指令存储器地址 字节 3 2 1 0 N A1 N+4 B1 A2 N+8 C1 B2 N+0xC D C2 那么既然指令都是“对齐”获取的,而指令的放置出现了“非对齐”现象的时候,那么就需要一个“指令缓冲区”来解决这个问题: 指令缓冲区 (指令C1) ↓ 指令 → 取指令 (指令C2和D) → 译码 (指令B) → 执行 (指令A) 系统框

文档评论(0)

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

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

1亿VIP精品文档

相关文档