arm(lpc22xx)存储器寻址

发布者:郑哥最新更新时间:2016-07-20 来源: eefocus关键字:arm  lpc22xx  存储器寻址 手机看文章 扫描二维码
随时随地手机看文章
 LPC2220/2230/2290没有内部FLASH

片内FLASH

LPC2000系列ARM的片内FLASH通过128位宽度的总线与ARM内核相连,具有很高的速度,加上后面要介绍的存储器加速功能,可以使程序直接在FLASH上运行,而不需要象其它公同的ARM微控制器一样把程序复制到RAM中运行

对处内FLASH的编程有三种方法来实现

(1)使用JTAG仿真/调试,通过芯片的JTAG接口下载程序

(2)使用在系统编程技术(ISP),通过UART0接口下载程序

(3)使用在应用编程技术(IAP)使用这种方式,可以实现用户程序运行时对FLASH进行擦除/编程,这样就为数据存储和现场固件的升级都带来极大的灵活性.

片内静态RAM

LPC2000系列ARM的片内RAM为静态的RAM,它可以用作代码和数据的存储.

片外存储器

CPU外部扩展连接的存储器芯片称为片外存储器.它们都具有数据线、地址线和控制线。(LPC2100系列不存在这种总线接口:所以只能通过I/O口的模拟总线时序来操作片外存储器,或者使用I2C、SPI等串行接口来连片外存储器)

LPC2200系列ARM微控制器具备符合ARM公司的外部存储器接口,通过它可以连接8位、16位或32位的片外存储器。最多可以扩展4个BAND 的存储器组,每存储器组寻址范围最大为16M。实际庆用中,使用16位总线宽度的存储器可以获得较好的性价比

片外存储器的读写

对于外扩的SRAM存储器只需要一条LDR(STR)指令就可以进行读写操作。

对于外扩的FLASH(NOR型),可以使用LDR指令读取数据,但是不能使用STR指令直接写数据,需要根据FLASH芯片写操作时序进行控制,实现FLASH的擦除编程。如果需要将程序代码烧写到FLASH芯片内,则需要在CPU内运行一个装载程序Loder程序.

存储器映射

给存储器分配地址的过程称为存储器映射。

存储器的重映射:有部分存储器单元可以出现在不同听地址上

注意:这个重映射不是将对映射单元内容的复制,而只是将多个地址指向了同一个存储单元,这个效果是通过芯片内部的"存储器管理部件"实现的.

引导块(Boot Block)及其得映射

BOOT BLOCK是芯片设计厂家在LPC2000系列ARM内部固定的一段代码,用户无法对其修改或删除.代码在芯片复位后首先运行.其功能为 判断运行哪个存储器上的程序\检查用户代码是否有效\判断芯片是否加密\芯片的在应用编程以及在系统编程.

BOOT BLOCK占用了片内FLASH的空间(除LPC2138的BOOT BLOCK不占用FLASH空间),其大小为8KB..但由于各个芯片内部FLASH的空间不同所以BOOT BLOCK的位置也有所不同.,而BOOT BLOCK中的有一些程序是可以被用户所调用的,为了增加用户代码的可移植性则将BOOT BLOCK 程序得映射在内部存储器的最高位置!即接近2G(0x80000000)的地方

注意:部分器件内部虽然没有用户FLASH空间,但是它们仍然存在BOOT BLOCK ,并且复位后首先运行.

***************************************************************************

LPC2000系列ARM芯片启动过程LPC2000处理器启动过程是:Memory Map--Remap--Boot--Remap四步。以LPC2292为例:片内Flash的最高8kB在芯片出厂前写入了Bootload程序和64字节的中断向量表,这是启动过程中重要的内容。

 1.Memory Map(不受控制)LPC2292上电复位后,Flash和SRAM映射:SRAM占据0x40000000~0x40003FFF;Flash占据0x0~0x0003FFFF。此过程不受开发人员控制。 Memory Map是一个逻辑概念,是计算机系统在(上电)复位后才建立起来的。Memory Map相当于这样一个数学函数:函数的输入量是地址编码,输出量被寻址单元中的数据。当计算机系统掉电后或复位时,这个数学函数不复存在,只剩下计算机系统中实现这个数学函数的物理基础——电路连接。也可以这样认为:Memory Map是计算机系统(上电)复位时的预备动作,是一个将CPU所拥有的地址编码资源向系统内各个物理存储器块分配的自动过程。

2.Remap(不受控制)Boot Block被整体Remap到了0x7fffe000~0x7fffffff。同时,0x0~0x3f的64字节中断向量区被暂时注销映射关系,由Boot Block中的中断向量代替。此过程不受开发人员控制。此时地址空间分配: 除去Remap暂时注销映射关系的64字节,Flash整体占用0x40~0x3ffff。 Boot Block占用0x7fffe000~0x7fffffff,Boot Block中断向量表占用0x0~0x3f。 事实上,Boot Block中断向量表占用了三段地址编码空间:0x0~0x3f,0x3e000~0x3e03f,0x7fffe000~0x7fffe03f。

3.Boot(不受控制)复位后Boot运作就是从0x0处起始字中取出跳转指令,开始程序的执行。由于Boot Block中断向量映射到0x0,CPU实际执行的是Boot Block内的程序。然后,程序首先检查看门狗溢出标志,置位表明系统内部软复位。再检查BOOT1和BOOT0是不是都为1,如果不是,则CPU从片外BANK0(0x80000000)执行用户代码,如果BOOT1和BOOT0是都为1,则CPU将对内部Flash中的中断向量表进行加和校验,检查用户代码是否有效,如果结果为0,Bootload程序将撤消Boot Block中断向量表在0x0~0x3f地址空间的映射,恢复Flash中断向量表在这64字节地址空间的映射,然后跳转到地址0x00处转入用户程序的执行。如果加和校验结果不为0,Bootload程序将进行UART0接口的波特率自动侦测,随时响应ISP宿主机的编程请求,执行ISP编程工作。若Bootload没有发现看门狗溢出标志置位,则表明当前系统是外部硬复位,CPU将采样P0.14引脚外部逻辑电平输入。如为0,Bootload执行UART0的自动波特率侦测,随时响应ISP宿主机的编程请求,执行ISP编程工作;如为1,Bootload的后续运作将与前面检测到看门狗溢出标志置位的程序执行完全相同。 这部分复位流程具体可参见《ARM嵌入式基础教程(上)》

4.Remap(可以控制)Remap的对象是片内SRAM存储器的异常向量部分。用户可编程决定何时Remap,Remap后是否再修改中断向量表等等。引发Remap运作指令与建立SRAM块中异常向量的所有功能代码全部驻留在Flash块的用户编程区中,是用户软件的一部分。另:此Remap对IAP操作有重要意义。  整个过程存储器变化如下:1.Memory Map(不受控制)芯片上电复位后,CPU给各个物理存储器块分配地址编码资源。这时不存在多个地址对应同一个物理内存的现象。2.Remap(不受控制)在执行了Memory Map 后,Boot Block整体被Remap到了0x7fffe000~0x7fffffff,也就是将地址空间0x7fffe000~0x7fffffff用来表示Boot Block同一段物理内存。同时,0x0~0x3f的64字节中断向量区被暂时注销映射关系(因为在判断用户代码存在于哪个存储空间之前,能存放异常向量表的存储空间有两个,一个在片内flash的0x00-0x3f,另个在片内flash的顶端即bootblock区,所以在同一时间,二者只能有一个起作用。),由Boot Block中的中断向量代替。这时Boot Block中断向量表占用了三段地址编码空间:0x0~0x3f,0x3e000~0x3e03f,0x7fffe000~0x7fffe03f,即这三段地址编码空间都指向bootblock中的中断向量表。3与4同上所述。

关键字:arm  lpc22xx  存储器寻址 引用地址:arm(lpc22xx)存储器寻址

上一篇:对ARM7 LPC2210的Bootloader源码分析
下一篇:关于ARM汇编中字符串表达式及运算符总结

推荐阅读最新更新时间:2024-03-16 15:01

ARM基础:ARM中“字”的长度
/ 参考: 说明:ARM基础:ARM中 字 的长度。 / (这里不讨论一个 汉字 代表两个 字节 的问题,这个差点都干扰我了都) 在学习汇编时用到了LDRH R2, ;将存储器地址为R1的半字数据读入寄存器R2,并将R2的高16位清零。 以前没有听过字这个这个概念,就很纠结。就引起了我弄清 字 的长度的好奇心。字到底有多少个字节,这是一个很晦涩的问题,都特别是这样的解释: 在计算机领域, 对于某种特定的计算机设计而言,字是用于表示其自然的数据单位的术语。在这个特定计算机中,字是其用来一次性处理事务的一个固定长度的位(bit)组。一个字的位数(即字长)是计算机系统结构中的一个重要特性。
[单片机]
<font color='red'>ARM</font>基础:<font color='red'>ARM</font>中“字”的长度
ARM初始化Stack
1. 简介 ARM有7种运行Mode,每一种Mode的堆栈指针寄存器(SP)都是独立的。 所以,对于程序中需要用的每一种处理器模式,都要给SP定义一个堆栈地址。 初始化流程为: 修改状态寄存器内的状态位,使处理器切换到需要的模式 给SP赋值。 注意: 不要切换到User模式进行该模式下的堆栈设置,因为进入User模式后就不能再操作CPSR返回到其他模式了。 =============================== 先定义各种模式对应的CPSR寄存器M 的值,该值决定了进入何种模式,可参考相关数据手册。 Mode_USR EQU 0x10 Mode_FIQ EQU 0
[单片机]
<font color='red'>ARM</font>初始化Stack
出售25%ARM股份 软银这是要做什么?
  北京时间3月8日消息,据外媒报道,知情人士称,在主要投资者想要将芯片厂商 ARM 控股纳入他们的投资组合后,软银 集团计划将 ARM 的25%股份出售给一家科技基金。该基金由软银 与沙特联合创建。下面就随安防电子小编一起来了解一下相关内容吧。   知情人士称, 软银 将以80亿美元出售这部分 ARM 股份。这笔交易并不属于软银此前承诺向愿景基金(Vision Fund)投资250亿美元的一部分。   软银创始人孙正义(Masayoshi Son)正与沙特、阿布扎比穆巴达拉发展公司以及其他投资者建立一只规模为1000亿美元的投资基金,该基金将会使得孙正义成为全球最大的科技投资者之一。软银在去年9月斥资320亿美元收购
[安防电子]
利用一个ARM7处理器对无刷电机实施磁场定向控制
电机驱动能效不论提高多少,都会节省大量的电能,这就是市场对先进的电机控制算法的兴趣日浓的部分原因。三相无刷电机主要指是交流感应异步电机和永磁同步电机。这些电机以能效高、可靠性高、维护成本低、产品成本低和静音工作而著称。感应电机已在水泵或风扇等工业应用中得到广泛应用,并正在与永磁同步电机一起充斥家电、空调、汽车或伺服驱动器等市场。推动三相无刷电机发展的主要原因有:电子元器件的价格降低,实现复杂的控制策略以克服本身较差的动态性能成为可能。 以异步电机为例。简单的设计需要给定子施加三个120°相移的正弦波电压,这些绕组的排列方式能够产生一种旋转磁通量。利用变压器效应,这个磁通量在转子笼内感应出一股电流,然后产生转子磁通量。就是这两种磁通
[应用]
ARM调查显示:机器人将帮助而不是取代人类
新闻摘要: · 61%的受访者认为人工智能将促进社会发展,只有22%的受访者认为将带来负面变化 · 未来的工作:30%的受访者认为对就业的影响是人工智能的最大缺点,并表示建筑、包裹递送和运输将受到最大的影响 · 健康医疗:57%的受访者愿意接受由人工智能医生进行的眼睛检查;41%的受访者不介意由人工智能医生进行脑部手术 · :55%的受访者表示,如果无人驾驶的事故率低于人类驾驶得到证实,他们愿意信任无人驾驶汽车,而有70%的受访者预计在未来十年内信任 2017年6月28日,中国上海—— 根据资助的一项对全球近4000名消费者进行的独立调查显示,仅有少数消费者认为人工智能会导致机器人失控并取代人类就业。考虑
[机器人]
ARM一本万利赚钱术 inside20亿颗“芯”脏
ARM(AdvancedRISC Machines,伦敦证交所代码ARM)是一家英国电子公司,它是全球第一大半导体行业知识产权供应商。尽管名头很大,但是很少有人知道这家公司,而且听起来似乎与我们毫不相干。 但是其实ARM几乎存在于每个现代人的身边,有点像是武侠小说里的武林高手,练就一番绝世武技,能够如影随形般地现身任何地方。现在,ARM占据了全球数码相机、MP3、蓝牙、游戏机、打印机等产品芯片约75%的市场。而在手机市场上,ARM更是毫无疑问的老大——GSM手机中有85%以上的手机芯片是基于ARM的,而CDMA市场上更是高达99%。这几乎是让IT产业软硬件老大微软、英特尔都羡慕的数字。 ARM创立于1990年,年
[焦点新闻]
微软确定与ARM合作,欲控制硬件领域
   据12月6日消息,有关人士透露,微软近期确定了ARM平台Windows开发(WOA)的下游合作伙伴,被邀请的台湾制造商在该项目中只扮演了小角色。 据称,微软将让三大ARM处理器制造商Nvidia、高通和 德州仪器 挑选两家笔记本电脑制造商合作,其中一家为主要合作商,另一家为次要合作商,取决于制造商对技术资源的投入多少。 业内人士认为,这意味着微软也开始控制硬件领域。 高通选择了三星和索尼, 德州仪器 选择了东芝和三星,Nvidia选择则了联想和宏碁,以上制造商中,三星、东芝和联想为主要合作伙伴。 同时,2011年Nvidia Tegra系列的最大客户、全球第五大笔记本制造商华硕在此次项目中被冷落。 消息源
[工业控制]
三星宣布与 Arm 合作,以 GAA 代工技术优化下一代 Cortex-X CPU 内核
2 月 20 日消息,三星电子旗下芯片代工部门宣布与 Arm 合作,共同开发、优化下一代 Cortex-X 核心。据介绍,此次合作涉及通过使用 Arm 最新 Cortex-X 设计和三星 GAA 工艺,旨在提升 CPU 性能和能效表现。 也就是说,Arm 下一代 Cortex-X 系列 CPU 架构将针对三星电子的 Gate-All-Around(GAA)芯片制造技术进行优化,这意味着基于下一代 Cortex-X 系列架构的 CPU 在使用三星 2nm 和 3nm GAA 工艺制造时可获得进一步优化,从而提供更高的性能和更低的功耗。 IT之家查询相关资料获悉,GAA 是目前业界公认的下一代技术,相比 FinFET 进一步改进了半导
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved