- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LPC2000系列ARM存储器寻址
LPC2000系列ARM存储器寻址
nbsp;nbsp;nbsp;nbsp; 一个具体应用可能存在的物理存储器 nbsp;nbsp;nbsp;nbsp; 不同芯片内部存储器分布 nbsp;nbsp;nbsp;nbsp; 片内Flash编程方法:
nbsp;nbsp;nbsp;nbsp; (1).通过内置JTAG接口;(2).通过在系统编程(ISP),使用UART0通信;(3).通过在应用编程(IAP);
nbsp;nbsp;nbsp;nbsp; 片外Flash编程方法(LPC2200):
nbsp;nbsp;nbsp;nbsp; 在CPU上运行一个装载程序(Loader,一般由用户编写),该程序通过串口接收要烧写的数据,然后擦除编程Flash。
nbsp;nbsp;nbsp;nbsp; 片内SRAM的写操作
nbsp;nbsp;nbsp;nbsp; SRAM控制器包含一个回写缓冲区,它总是保存着软件发送到SRAM的最后一个字数据。该数据只有在软件请求下一次写操作时才写入SRAM。如果发生芯片复位,实际的SRAM内容将不会反映最近一次的写操作。
nbsp;nbsp;nbsp;nbsp; 存储器映射基本概念
nbsp;nbsp;nbsp;nbsp; ARM处理器产生的地址叫虚拟地址,把这个虚拟地址按照某种规则转换到另一个物理地址去的方法称为地址映射。这个物理地址表示了被访问的存储器的位置。它是一个地址范围,该范围内可以写入程序代码。
nbsp;nbsp;nbsp;nbsp; 通过地址映射的方法将各存储器分配到特定的地址范围后,这时用户所看见的存储器分布为存储器映射。
nbsp;nbsp;nbsp;nbsp; 芯片复位后用户看见的地址空间
nbsp;nbsp;nbsp;nbsp; AHB和VPB
nbsp;nbsp;nbsp;nbsp; AHB(先进的高性能总线)和VPB(VLSI外设总线)外设区域都为2M字节,可各分配128个外设。每个外设空间的规格都为16K字节,这样就简化了每个外设的地址译码。
nbsp;nbsp;nbsp;nbsp; 注意:AHB和VPB外设区域中不管是字还是半字,都是一次性访问。例如不可能对一个字寄存器的最高字节执行单独的读或写操作
nbsp;nbsp;nbsp;nbsp; 外设存储器映射
nbsp;nbsp;nbsp;nbsp; AHB外设映射 nbsp;nbsp;nbsp;nbsp; Boot lock的映射地址安排 nbsp;nbsp;nbsp;nbsp; 存储器重新映射
nbsp;nbsp;nbsp;nbsp; 存储器重新映射是将复位后用户所见的存储器中部分区域,再次映射到其它的地址上。
nbsp;nbsp;nbsp;nbsp; 对于Philips的LPC系列ARM微控制器,存储器重新映射区域一共为64字节,分别为异常向量区(32字节)和紧随其后的32字节。存储器重新映射的方法允许在不同模式下处理中断,重新映射的存储器区域在地址00x0000003F处。存储器重新映射的控制见“存储器映射控制”小节。
nbsp;nbsp;nbsp;nbsp; 使用存储器重新映射的原因
nbsp;nbsp;nbsp;nbsp; (1)使Flash存储器中的FIQ处理程序不必考虑因为重新映射所导致的存储器边界问题
nbsp;nbsp;nbsp;nbsp; (2)用来处理代码空间中段边界仲裁的SRAM和Boot Block向量的使用大大减少
nbsp;nbsp;nbsp;nbsp; (3)为超过单字转移指令范围的跳转提供空间来保存常量
nbsp;nbsp;nbsp;nbsp; 预取指中止和数据中止异常
nbsp;nbsp;nbsp;nbsp; 如果试图访问一个保留地址或未分配区域的地址,ARM处理器将产生预取指中止或数据中止异常。
nbsp;nbsp;nbsp;nbsp; 注意:
nbsp;nbsp;nbsp;nbsp; 只有在试图执行从非法地址取指的指令时,ARM才会将预取指中止标志与相关的指令(没有意义的指令)一起保存到流水线并对中止进行处理。当代码在非常靠近存储器边界执行时,防止了由预取指所导致的意外中止。
nbsp;nbsp;nbsp;nbsp; 预取指中止和数据中止异常举例
nbsp;nbsp;nbsp;nbsp; 异常向量表
nbsp;nbsp;nbsp;nbsp; 对于每一个异常事件,都有一个与之相对应的处理程序,它们是关联在一起的,并以一张一维表的格式
文档评论(0)