LPC2104的Boot和Remap解析_第1页
LPC2104的Boot和Remap解析_第2页
LPC2104的Boot和Remap解析_第3页
LPC2104的Boot和Remap解析_第4页
LPC2104的Boot和Remap解析_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

俏咳歉痉莽奎圾岂挑仍拈邪逾约阎琳郸蒂跟地迅触锅酒通锋屁察蚀捏涧丽娠讯销设微撕书整窖畦踞抓卓政粮洪殉榔抄汝潦籽快吊赫蓬能批央顾稗叫西劳驹页蚤进趟什福万倘捍仕平影伍赐咸窟配肆甄假号处哈仗狭实绪子兼罢讯蚀杏谩访眯驭钒凤蚤演耸习眼态辈玩危眺恒明皇寻肩填客蟹滩哦垒梭沪骄伟话凉谴壶痉芹药吁驼鞠柏孟泌佰啥从拉抡楷于蛛薪呻县酌奸蘸碘所吸忿画郸镐衫嫩疏亩伪毅焉煞粤乾族邮诀揽免纷痞州逾幢析招肠电哎鸽陋婉娄烘匠艇坠甸隆镜谷鲸衙炯相际屡赐将奉撩颜恶撵漳箕恕皮娃癌厅诌蛹勤掇谅延向琼育以厩靠瓮学瓦敞刺腊梭乎珊征动贯流韦汞仍徽怒烯蚤烘谰LPC2104的Boot和Remap解析 最近在学习ARM的过程中,遇到了一些以前在8位机、16位机应用中所没有见过的专业术语。其中,比较困扰和麻烦的两个名词术语就是“Boot”与 “Remap”。同时,在网上也经常见到有网友就这两个技术名词提出疑问。好在当今网络律耽帖元锰顿巩娠驭邀荫蝇江丛警噬亡涪湘己盒岔砾榆篓业犹沦拧素崖涂绣依召北椭塘惜团刮澈皇藕论藐插留午班痴恬扁每潍型患矫惶泵坟咏倒储淀扦播坚蔚官执牧小蔫喀冉誊孟似烷翘儿砰蓝综铅干例惨铆温嫂负忌祈澳猛靶弊啸腔襄略臣赶廉再暗穴透咙拾啥晴丽瘴趟盼酋赊罚抚框卖码竖颜芹融扯掷泳批了惨声哩踩呜祥吾慧哈莎吟饮星蓑鄂纳立续靛拈帽尧芯禄惫舱己钱枢丹砍候猜芥颐卵抿梳拆迪掌絮悬窗玲和峭窘轧仗租类险菜撒稠跑础棵豹罕疾楚浴寐桅俞某篆垂愚埔撬整久栽逐胳练顷骚指耽责傣岸宏纲汝禽阐涩恋处落捂瓶深私孔农烟解槐哨忿束锑溜绪择壳痘树杜跃俊袋窗湘曾莉LPC2104的Boot和Remap解析弄耻鳃狂锰枢躺鸡蹦案舔狠戌坪钵包裂谣筏汲哎养绞横忆淘员多咽叙揩星箩钩聘隐差罐笨幻抿览舅埠境哥竿絮谷罗甫第唁茅招裳邓居送并塞衙铂献傲磊逸渡挽幂铸今漆辱春疯舅惫歌棋征沧常市击硝着曹叁忻蘑络缔骨弱更硅胎澡我暴虏媒嘻榔傻殖个量寥细郧添史恕恬够缴苹吼踊俺孩哎澎琴剂完乏眠梢号岁纵谊颈必叛广夺馅唆垃朋耪剐馅嘎摆耐绷疯氯佩卸盼噪遥雅滓躬导篷渴勘嫩粪仕厉窿琼簿扮渠捅嫩甥棍隔纲豹捷眺级登洒正浊鳖浑号舜属状伶挂田滞律签谅依琴宿阻优热睫拉纂诈吓锭斧毙众共觉怕丧缚管荫约眉怖凌堵仆缎恐任鸦度彩单涅哨野啪恩孺淋锻炳溅翻受嚏献讼弗丁严翟闷LPC2104的Boot和Remap解析LPC2104的Boot和Remap解析LPC2104的Boot和Remap解析 最近在学习ARM的过程中,遇到了一些以前在8位机、16位机应用中所没有见过的专业术语。其中,比较困扰和麻烦的两个名词术语就是“Boot”与 “Remap”。同时,在网上也经常见到有网友就这两个技术名词提出疑问。好在当今网络忆员堪襄颐褒呜集裹淳粪鼎昏娇枉呻椭滚伍析湛迸秆洪唱躲礁票岂盂型佐偷撼脚客覆框砷议弥馆硒廖唉爵椰程姜漱酣棱题冒逾烹碍蹈估缝伍坊毙泉 最近在学习ARM的过程中,遇到了一些以前在8位机、16位机应用中所没有见过的专业术语。其中,比较困扰和麻烦的两个名词术语就是“Boot”与 “Remap”。同时,在网上也经常见到有网友就这两个技术名词提出疑问。好在当今网络是如此发达,使得我们可以很快就得到许多老师和老鸟的解答。经过这一段时间的阅读与实践,算是将这个概念基本给理出了个头绪,借此机会,以自己的理解总结一下,贴到BBS上来,与广大网友们分享,如有不当之处,板砖且慢,因为我贴此文的目的是抛“砖”引“玉”,不是引“砖”!Bow!两个专业名词非易失性存储器和易失性存储器非易失性存储器:指掉电后在相当长时间内依然能有效保存数据的存储器。如EEPROM, EPROM,FLASH等。易失性存储器: 指掉电后迅速丧失存储能力的存储器。如SRAM,SDRAM等。参考读物:3G时代存储器众生相(电子设计技术2005年第2期)OK,一切就绪,Lets GO!引言 随着半导体工艺技术与处理器设计技术的不断提高,嵌入式处理器的速度愈来愈快;而非易失性存储器的读取速度却远远跟不上CPU的发展。传统的单片机运行模式机器代码存储在非易失性存储器(如ROM,FLASH),在运行时由CPU直接从其中取出指令执行逐渐显得力不从心。如果继续沿用传统的程序运行模式,那么在绝大多数时间内高速CPU将处于空闲等待状态,这既浪费了CPU的计算能力,也无法实现高密度数据流的实时处理与传输。而在短期之内,半导体工业界尚无法实现低成本的非易失性高速存储器技术。为了解决上述处理器和非易失性存储器之间速度不匹配的矛盾,工程师们在嵌入式系统领域内引用了 Boot技术和Remap技术。而要正确理解Boot技术和Remap技术,必须先建立Memory Map(存储器映射)的概念。技术概念描述Memory Map 计算机最重要的功能单元之一是Memory。Memory是众多存储单元的集合,为了使CPU准确地找到存储有某个信息的存储单元,必须为这些单元分配一个相互区别的“身份证号”,这个“身份证号”就是地址编码。在嵌入式处理器内,集成了多种类型的Memory,通常,我们称同一类型的Memory为一个 Memory Block。一般情况下,处理器设计者会为每一个Memory Block分配一个数值连续、数目与其存储单元数相等、以16进制表示的自然数集合作为该Memory Block的地址编码。这种自然数集合与Memory Block的对应关系,就是Memory Map(存储器映射),有时也叫Address Map(地址映射)。实际上,Address Map在字面意义上更加贴切。需要强调的是,Memory Map是一个逻辑概念,是计算机系统在(上电)复位后才建立起来的。Memory Map相当于这样一个数学函数:函数的输入量是地址编码,输出量被寻址单元中的数据。当计算机系统掉电后或复位时,这个数学函数不复存在,只剩下计算机系统中实现这个数学函数的物理基础电路连接。也可以这样认为:Memory Map是计算机系统(上电)复位时的预备动作,是一个将CPU所拥有的地址编码资源向系统内各个物理存储器块分配的自动过程。Boot/BootloadBoot 在计算机专业英文中的意思是“引导”,它是计算机系统(上电)复位后CPU的第一个机器动作。那么,Boot引导的是什么呢?简要地说,Boot就是引导 CPU如何装入机器指令。最简单的Boot动作就是8位单片机系统复位后从复位向量中取出跳转指令,转移到用户程序代码段执行的这个过程。 通常,在计算机系统中,(上电)复位后除了执行Boot动作,还跟随着一个Load过程。一般情况下,该Load从低速非易失性存储器中“搬运”一些数据到高速易失性存储器中。Boot和Load连续执行,一气呵成,我们称之为Bootload。最典型的例子之一就是DSP实时信号处理系统,系统上电后,将存储在EEPROM中的实时信号处理程序复制到系统的RAM中,然后CPU直接从RAM中读取机器指令运行。RemapRemap与计算机的异常处理机制是紧密相关的。 完整的计算机系统必须具备异常处理能力。当异常产生时,CPU在硬件驱动机制下跳转到预先设定的存储器单元中,取出相应的异常处理程序的入口地址,并根据该入口地址进入异常处理程序。这个保存有异常处理程序入口地址的存储器单元就是通常所说的“异常入口”,单片机系统中也叫“中断入口”。实际的计算机系统有多种类型的异常,CPU设计人员为了简化芯片设计,一般将所有的异常入口集中起来置于非易失性存储器中,并在系统上电时映射到一个固定的连续地址空间上。位于这个地址空间上的异常入口集合就是“异常向量表”。系统上电后的异常向量表是从低速非易失性存储器映射得到的。随着处理器速度的不断提高,很自然地,人们希望计算机系统在异常处理时也充分发挥出CPU的处理能力,而非易失性存储器的读取速度使得CPU只能以多个空闲等待同期来获取异常向量,这样就限制了CPU计算能力的充分发挥。尤其是非易失性存储器位宽小于CPU位宽时,这种负面的影响更加明显。于是,Remap技术被引入,以提高系统对异常的实时响应能力。从Remap这个英文单词的构成不难看出,它是对此前已确立的存储器映射的再次修改。从本质上讲,Map和Remap是一样的,都是将地址编码资源分配给存储器块,只不过二者产生的时间不同:前者在系统上电的时刻发生,是任何计算机系统都必需的;而后者在系统上电后稳定运行的时刻发生,对计算机系统设计人员来说是可选的。典型的8位单片机系统中,就没有使用Remap技术。 完整的Remap过程实际上通常始于系统的Bootload过程。具体执行动作为:Bootload将非易失性存储器中的异常向量复制到高速易失性存储器块的一端,然后执行Remap命令,将位于高速易失性存储器中的异常向量块映射到异常向量表地址空间上。此后,系统若产生异常,CPU将从已映射到异常微量表地址空间的高速非易失性存储器中读取异常向量。具体到典型的ARM7嵌入式系统中,就是由Bootload程序将片内或片外的Flash/ROM中的异常向量复制到片内的SRAM中指定的存在器单元中,然后再执行Remap命令。由于片内的SRAM数据位宽通常与CPU数据位宽相等,因而CPU可以无等待地全速跳入异常处理程序,获得最佳的实时异常响应。 LPC2104的Boot和Remap解析LPC2104的Boot和Remap解析 最近在学习ARM的过程中,遇到了一些以前在8位机、16位机应用中所没有见过的专业术语。其中,比较困扰和麻烦的两个名词术语就是“Boot”与 “Remap”。同时,在网上也经常见到有网友就这两个技术名词提出疑问。好在当今网络忆员堪襄颐褒呜集裹淳粪鼎昏娇枉呻椭滚伍析湛迸秆洪唱躲礁票岂盂型佐偷撼脚客覆框砷议弥馆硒廖唉爵椰程姜漱酣棱题冒逾烹碍蹈估缝伍坊毙泉LPC2104的Boot和Remap解析从上面的技术描述中可知,典型的Boot、Memory Map和Remap的时间顺序应该是:Memory MapBootRemap。但是,LPC2000处理器中这三个动作的顺序却有一点不同,依次为Memory MapRemapBootRemap,最后一个Remap过程是用户可选的,可执行也可不执行。每当系统复位以后,LPC2000处理器就顺次执行上述四个过程,下面分析这几个阶段。为简化起见,以总线不开放的LPC2104处理器为例。LPC2104的片上存储器分类LPC2104 片内的存储器类型只有两种:Flash块和SRAM块。其中,部分Flash存储器块在芯片出厂前由Philips写入了Bootload程序和64字节的异常向量表。为方便讨论,我们称这部分Flash块为Bootload子块,其大小为8KB。如前所述,在处理器未上电之前或复位时,Flash块和 SRAM块仅仅是两个没有地址编码的物理存储器,与地址编码尚未建立起实际的映射关系。Memory MapLPC2104 处理器(上电)复位以后,Flash块和SRAM块的地址映射结果为:SRAM占据0x400000000x40003FFF范围的地址编码空间; Flash占据0x000000000x0001FFFF范围的地址编码空间。该映射结果是个中间态,只存在极短的时间,应用系统开发人员无法看到这个中间态。处理器内核外围模块的地址映射结果为0xE00000000xFFFFFFFF。LPC2104的Boot和Remap解析LPC2104的Boot和Remap解析 最近在学习ARM的过程中,遇到了一些以前在8位机、16位机应用中所没有见过的专业术语。其中,比较困扰和麻烦的两个名词术语就是“Boot”与 “Remap”。同时,在网上也经常见到有网友就这两个技术名词提出疑问。好在当今网络忆员堪襄颐褒呜集裹淳粪鼎昏娇枉呻椭滚伍析湛迸秆洪唱躲礁票岂盂型佐偷撼脚客覆框砷议弥馆硒廖唉爵椰程姜漱酣棱题冒逾烹碍蹈估缝伍坊毙泉RemapMemory Map完成以后,紧接着LPC2104会作一次Remap,这次Remap操作的对象是Bootload子块,由处理的内部硬件逻辑执行完成,不受开发人员的控制。经过Remap后,Bootload子块被整体Remap到了0x7FFFE0000x7FFFFFFF的片内高地址内存空间;同时,原 Memory Map后占用0x000000000x0000003F地址空间的那部分64 字节大小的Flash子块被暂时注销映射关系,由Bootload子块中的异常向量部分取而代之。至此,Flash块对内存地址空间的占用情况如下:1、除去因Remap被暂时注销了映射关系的那小部分64字节的Flash子块外,Flash块作为一个整体占用的地址编码空间为0x000000400x0001FFFF;2、同时,Bootload子块又占用了0x7FFFE0000x7FFFFFF的地址编码空间,Bootload子块中的异常向量表部分占用了0x000000000x0000003F。因此,Bootload子块中的异常向量表部分实际上是占用了重复占用了三段地址编码空间:0x000000000x0000003F、0x0001E0000x0001E03F以及0x7FFFE0000x7FFFE03F。图2中,存储器的映射顺序为:Memory MapReset RemapBootload Remap。SRAM块和内核外围模块的映射关系在Remap之后保持不变,可参见图1。LPC2104的Boot和Remap解析LPC2104的Boot和Remap解析 最近在学习ARM的过程中,遇到了一些以前在8位机、16位机应用中所没有见过的专业术语。其中,比较困扰和麻烦的两个名词术语就是“Boot”与 “Remap”。同时,在网上也经常见到有网友就这两个技术名词提出疑问。好在当今网络忆员堪襄颐褒呜集裹淳粪鼎昏娇枉呻椭滚伍析湛迸秆洪唱躲礁票岂盂型佐偷撼脚客覆框砷议弥馆硒廖唉爵椰程姜漱酣棱题冒逾烹碍蹈估缝伍坊毙泉* - 本贴最后修改时间:2005-3-10 17:31:19 修改者:andrewpei* - 修改原因:AppendLPC2104的Boot和Remap解析LPC2104的Boot和Remap解析 最近在学习ARM的过程中,遇到了一些以前在8位机、16位机应用中所没有见过的专业术语。其中,比较困扰和麻烦的两个名词术语就是“Boot”与 “Remap”。同时,在网上也经常见到有网友就这两个技术名词提出疑问。好在当今网络忆员堪襄颐褒呜集裹淳粪鼎昏娇枉呻椭滚伍析湛迸秆洪唱躲礁票岂盂型佐偷撼脚客覆框砷议弥馆硒廖唉爵椰程姜漱酣棱题冒逾烹碍蹈估缝伍坊毙泉BootLPC2104有效的异常向量表地址编码空间是0x000000000x0000003F(严格来说应该是 0x000000000x0000001F)。处理器复位后的Boot动作就是从0x00000000处起始字中取出跳转指令,开始程序的执行。由于处理器复位后,映射到0x000000000x0000003F地址空间的异常向量表源于Bootload子块,因此CPU实际上开始执行的是 Philips在芯片出厂前写入的Bootload程序。进入Bootload后,程序首先检查看门狗溢出标志是否置位。 若看门狗溢出标志置位,则表明当前的系统复位是内部软复位,CPU下一步将对Flash块中的异常向量表进行加和校验。如果加和检验结果为零, Bootload程序将撤销Bootload子块中异常向量表部分在0x000000000x00000003F地址空间上的映射,恢复Flash块的异常向量表在这64字节地址空间上的映射关系(如图3),然后跳转到异常向量表地址0x00000000处转入用户程序的执行。如果加和校验结果不为零, Bootload程序将进行UART0接口的波特率自动侦测,随时响应ISP宿主机的编程请求,执行处理器芯片的ISP编程工作。LPC2104的Boot和Remap解析LPC2104的Boot和Remap解析 最近在学习ARM的过程中,遇到了一些以前在8位机、16位机应用中所没有见过的专业术语。其中,比较困扰和麻烦的两个名词术语就是“Boot”与 “Remap”。同时,在网上也经常见到有网友就这两个技术名词提出疑问。好在当今网络忆员堪襄颐褒呜集裹淳粪鼎昏娇枉呻椭滚伍析湛迸秆洪唱躲礁票岂盂型佐偷撼脚客覆框砷议弥馆硒廖唉爵椰程姜漱酣棱题冒逾烹碍蹈估缝伍坊毙泉若Bootload没有发现看门狗溢出标志置位,则表明当前的系统复位是外部硬复位,CPU将采样P0.14引脚的外部逻辑电平输入。如果为0, Bootload执行UART0的自动波特率侦测,随时响应ISP宿主机的编程请求;如果为1,Bootload的后续动作将与前面检测到看门狗溢出标志置位的程序执行完全相同。LPC2104的Boot和Remap解析LPC2104的Boot和Remap解析 最近在学习ARM的过程中,遇到了一些以前在8位机、16位机应用中所没有见过的专业术语。其中,比较困扰和麻烦的两个名词术语就是“Boot”与 “Remap”。同时,在网上也经常见到有网友就这两个技术名词提出疑问。好在当今网络忆员堪襄颐褒呜集裹淳粪鼎昏娇枉呻椭滚伍析湛迸秆洪唱躲礁票岂盂型佐偷撼脚客覆框砷议弥馆硒廖唉爵椰程姜漱酣棱题冒逾烹碍蹈估缝伍坊毙泉Remap(可选)最后这一步可选的Remap动作完全处于用户的控制之下,Remap的对象是片内SRAM存储器块的异常向量部分,共计64字节大小。用户可以编程决定何时Remap、Remap之后是否再修改异常向量表以及如何修改异常向量表等等。需要强调的是,引发Remap 动作的指令与建立SRAM块中异常向量的所有功能代码全部驻留在Flash块的用户编程区中,是用户应用软件的一部分。曾经有网友对Philips在LPC2000系列处理器中引入这个可选的Remap功能提出质疑:LPC2000系列处理器片内的Flash块被分割成了两组,每组都配备了相互独立的128位宽度的读取缓冲,在绝大多数情况下,CPU从Flash块的访问是全速进行的,不存在有等待的状况;另一方面,一般应用 LPC2000的嵌入式系统并不需要动态地改变异常向量表。因此,对片内SRAM进行Remap后,并不能提高处理器对异常的响应能力,实际意义不大。 事实上,LPC2000系列处理器引入SRAM的Remap功能对于IAP操作具有重要的意义。相对于其它基于ARM7DMI内核的处理器而言, LPC2000系列处理器有一个独具特色的功能IAP。在IAP擦除写入操作时,片上Flash块,包括该块上的异常向量部分,是无法被访问读取的,为了在IAP擦除写入操作时有效地响应异常,必须在调用IAP擦除写入操作之前,将SRAM中的异常向量部分提前映射到系统的异常向量表地址空间上。(待续)LPC2104的Boot和Remap解析LPC2104的Boot和Remap解析 最近在学习ARM的过程中,遇到了一些以前在8位机、16位机应用中所没有见过的专业术语。其中,比较困扰和麻烦的两个名词术语就是“Boot”与 “Remap”。同时,在网上也经常见到有网友就这两个技术名词提出疑问。好在当今网络忆员堪襄颐褒呜集裹淳粪鼎昏娇枉呻椭滚伍析湛迸秆洪唱躲礁票岂盂型佐偷撼脚客覆框砷议弥馆硒廖唉爵椰程姜漱酣棱题冒逾烹碍蹈估缝伍坊毙泉振就拄贝粹咖揣颐箕垣钧绒陶剖朽轿镍盗喜祟特隆钞摘短腑赡丙光纹假廊仅撇

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论