一段Remap的代码,请大家来看看

[复制链接]
 楼主| williamt 发表于 2007-3-1 14:56 | 显示全部楼层 |阅读模式
;&nbsp;&nbsp;&nbsp;&nbsp;Configure&nbsp;the&nbsp;System&nbsp;Manger&nbsp;to&nbsp;remap&nbsp;the&nbsp;flash<br /><br />;&nbsp;The&nbsp;Memory&nbsp;Bank&nbsp;Control&nbsp;Registers&nbsp;must&nbsp;be&nbsp;set&nbsp;using&nbsp;store&nbsp;multpiles<br />;&nbsp;Set&nbsp;up&nbsp;a&nbsp;stack&nbsp;in&nbsp;internal&nbsp;sram&nbsp;to&nbsp;preserve&nbsp;the&nbsp;original&nbsp;register&nbsp;contents<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r2,&nbsp;=remap_temp<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;r1,&nbsp;pc<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;r3,&nbsp;=remap_EndSysMapJump<br />remap_temp<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;lr,&nbsp;#0<br />&nbsp;&nbsp;&nbsp;&nbsp;CMP&nbsp;&nbsp;&nbsp;&nbsp;r2,&nbsp;r1<br />&nbsp;&nbsp;&nbsp;&nbsp;LDRGT&nbsp;&nbsp;&nbsp;&nbsp;lr,&nbsp;=ROM_Start;ROM_Start=0x7F000000,remap后,ROM的地址&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;SUB&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;r3,&nbsp;r2<br />&nbsp;&nbsp;&nbsp;&nbsp;ADD&nbsp;&nbsp;&nbsp;&nbsp;r1,&nbsp;r1,&nbsp;r3<br />&nbsp;&nbsp;&nbsp;&nbsp;ADD&nbsp;&nbsp;&nbsp;&nbsp;lr,&nbsp;lr,&nbsp;r1<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />;&nbsp;Load&nbsp;in&nbsp;the&nbsp;target&nbsp;values&nbsp;into&nbsp;the&nbsp;control&nbsp;registers<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADRL&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;remap_SystemInitData<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDMIA&nbsp;&nbsp;&nbsp;r0,&nbsp;{r1-r6}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;=EBI_Ctrl<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />;&nbsp;Now&nbsp;run&nbsp;critical&nbsp;jump&nbsp;code<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STMIA&nbsp;&nbsp;&nbsp;r0,&nbsp;{r1-r6}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;pc,&nbsp;lr<br />remap_EndSysMapJump<br /><br />remap_SystemInitData<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Default&nbsp;sdram&nbsp;configuration<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;0x000530C0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;EBICON&nbsp;:&nbsp;not&nbsp;need&nbsp;to&nbsp;change.<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;0xFE040080&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;ROMCON(Flash)&nbsp;-Unknown&nbsp;type:0xFE000FF0,&nbsp;A29LV800:&nbsp;0xFE020080,&nbsp;W28J160:&nbsp;0xFE030080<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;0x000090E4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;SDCONF0(SDRAM)&nbsp;-&nbsp;8M(2Mx32):&nbsp;0x000090E3,&nbsp;4M(1Mx16x2):0x00009062,&nbsp;16M(4Mx16x2):0x000090E4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;0x020090E4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;SDCONF1&nbsp;-&nbsp;The&nbsp;same&nbsp;as&nbsp;SDCONF0&nbsp;with&nbsp;proper&nbsp;base&nbsp;address&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;0x0000014B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;SDTIME0&nbsp;-&nbsp;not&nbsp;need&nbsp;to&nbsp;change<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;&nbsp;&nbsp;&nbsp;0x0000014B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;SDTIME1&nbsp;-&nbsp;not&nbsp;need&nbsp;to&nbsp;change<br />&nbsp;&nbsp;&nbsp;&nbsp;DCB&nbsp;&quot;@SYSTEM_INIT_CFG&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;A&nbsp;key&nbsp;word&nbsp;for&nbsp;future&nbsp;useage<br />&nbsp;&nbsp;&nbsp;&nbsp;ALIGN
Swd21ic 发表于 2007-3-1 19:44 | 显示全部楼层

~~~

重映射的概念我还是很模糊啊。.<br />强人能解释下吗
阿南 发表于 2007-3-1 19:56 | 显示全部楼层

重映射,你可以理解成一段内存的内容整体复制到另一段内存

  
Swd21ic 发表于 2007-3-1 21:08 | 显示全部楼层

~~~

比如我把0x00002000的内容映射到0x00000000<br />那我从0x00000000读的内容就是0x00002000的.<br />但是我可以使用0x00002000来访问<br />
computer00 发表于 2007-3-1 21:53 | 显示全部楼层

不仅仅是复制,根本就是连在了一起。

不管是读还是写,访问两个地址是等价的了。
 楼主| williamt 发表于 2007-3-2 13:36 | 显示全部楼层

Remap

其实Remap,存储器本身没有没有变化,只是他的访问地址发生了变化<br />仔细阅读上面的程序:<br />原来Flash的起始地址是0x0000&nbsp;0000<br />通过设置ROMCON的值0xFE04&nbsp;0080的高13位,作为Flash的基地址<br />将Flash的基地址设为0x7F00&nbsp;0000<br />同样原来SDRAM的起始地址不是0x0000&nbsp;0000,通过SDCONF0将SDRAM的起始地址设置为0x0000&nbsp;0000
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

41

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部