在MPC555中实现从RAM的快速引导
如果程序被烧录到微处理器的内部ROM,可以通过MPC555的特有功能——双重映射法把内部FLASH的地址映射到外部RAM,以实现快速引导运行。在使能双重映射功能时,内部FLASH区对应的地址不起作用,而映射的外部RAM区地址起作用。
具体操作时,首先把程序烧录到内部FLASH,然后在上电时把程序从内部FLASH拷贝到外部RAM,最后再使能微处理器的双重映射功能。这样,程序就可以在外部RAM中运行了。图1所示是其流程图。具体的程序代码如下:
INTVectors?
/*系统复位*/
.skip0x0100?.INTVectors?
start?
#/*设置RAM和ROM存储区*/
#/*OR2=0xFFF00000片选RAM大小1M*/
lisr5?0xfff0
orir5?r5?0x0000
lisr4?OR2@ha
stwr5?OR2@l?r4?
#/*BR2=0x0400003RAM基址0X400000
32位口大小*/
lisr5?0x40
orir5?r5?0x0003
lisr4?BR2@ha
stwr5?BR2@l?r4?
#/*拷贝内部Flash到外部RAM*/
lir6?0x0
lisr4?0x40
orir4?r4?0x0000
lisr5?0xfff0
orir5?r5?0x0
loop1?
lhzxr7?r6?r5
sthxr7?r6?r4
addir6?r6?0x2
lir8?0xb00
cmpr6?r8
bneloop1
#/*使CS2的片选区无效*/
#/*BR2=0x0400003基本寄存器2*/
lisr5?0xfff0
orir5?r5?0x0000
lisr4?BR2@ha
stwr5?BR2@l?r4?
#/*双重映射使能*/
#/*DMOR=0xFFF00000片选双重映射区
大小256k*/
lisr5?0x7000
orir5?r5?0x0000
lisr4?OR2@ha
stwr5?OR2@l?r4?
#/*DMBR=0x0400003双重映射区基址
0X032位口大小*/
lisr5?0x0
orir5?r5?0x0005
lisr4?BR2@ha
stwr5?BR2@l?r4?
baINTInitialize
…
3.2复制法
对于与MPC500同系列中的MPC561和MPC562等芯片,由于微处理器内部没有ROM,所以必须外扩ROM。在这种情况下,可以把程序烧录到外部ROM,然后在上电时再把程序从外部ROM拷贝到外部RAM中,从而使程序能够在外部RAM中运行。以MPC555为例的流程图如图2所示。
在这种方法中,程序仅在重新配置存储区前运行在外部ROM,而在重新配置存储区后运行在外部RAM中,因此提高了程序的运行速度。该方法在操作时,首先把程序用仿真器烧录到外部FALSH,入口地址为0xfff00000,然后脱机运行。本例中,外部FLASH是16位总线,外部RAM是32位总线。下面以MPC555为例给出具体程序代码。
INTVectors?
/*系统复位*/
.skip0x0100-?.-INTVectors?
start?
#/*设置RAM和ROM存储区*/
#/ 《在MPC555中实现从RAM的快速引导(第2页)》