这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » [分享]LPC2000存储器寻址

共1条 1/1 1 跳转至

[分享]LPC2000存储器寻址

菜鸟
2006-11-28 06:38:18     打赏

128k/256 flash, 支持jtag/isp下载 , 支持iap.

16k sram.support 8/16/32 bit r/w.

lpc2210/2212/2214支持外接4bank,每个空间16MB.

每个外设空间固定规格是16k.所有外设寄存器都是按32位边界设计的。

flash 0x0--0x20000 128k.

sram 0x4000 0000 --0x4000 1fff.

8k--0x80000000 bootblock.

只有试图执行指令时,才可能发生取指中止/数据中止异常。

因为中断地址为0x0开始段,复位启动也在0x0这个位置开始,因此支持地址映射是必要的。

boot装载程序模式 --复位就会执行,把boot block中断向量映射到0x0。

用户flash模式 --由boot代码软件激活 --当存储中有一个有效的用户程序标志并boot装载
未被执行的时候。不做重新映射,位于flash存储底部。
0x0--0x1c的数据累加为0---有效用户程序标志,-利用0x14 4个保留字节满足要求。


用户ram模式 --用户代码可以把0x4000 0000 ram空间映射到 0x0.

用户外部模式 复位boot1/boot0 决定/ 1:1 --正常内部flash启动。
其它组合8/16/32外部flash启动。

启动代码-汇编代码--做c语言的准备工作。
包括向量表定义,堆栈初始化,系统变量初始化,中断系统初始化,i/o初始化,外围初始化,地址
重映射等操作。
code32
area vectors,code,readonly
reset
ldr pc, ResetAddr
ldr pc, UndefinedAddr
...
dcd 0xb9205f80 ; 用ldr的好处是所有的中断表代码都是固定的,与实际矢量地址无关,因此用这个数保证0x0--0x1c累加为0。
ldr pc,[pc,#-0xff0] ;这是跳转到VicVectAdr.
ldr pc,FIQ_Addr
ResetAddr DCD ResetInit
UndefinedAddr DCD Undefined
...

ResetInit
..
BL InitStack
BL TargetResetInit
BL __main ; ads 's startup ,then call the c code's main function.




关键词: 分享     LPC2000     存储器     寻址    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]