用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

在MPC555中实现从RAM的快速引导

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 22:39:32
4

# /* BR2=0x0400003 RAM基址 0X400000

32位口大小 */

lis r5 0x40

ori r5 r5 0x0003

lis r4 BR2@ha

stw r5 BR2@lr4

# /* 拷贝内部Flash 到外部RAM */

li r60x0

lis r40x40

ori r4r40x0000

lis r50xfff0

ori r5r50x0

loop 1

lhzx r7r6r5

sthx r7r6r4

addi r6r60x2

li r80xb00

cmp r6r8

bne loop 1

# /* 使CS2的片选区无效 */

# /* BR2=0x0400003 基本寄存器2 */

lis r5 0xfff0

ori r5 r5 0x0000

lis r4 BR2@ha

stw r5 BR2@lr4

# /* 双重映射使能 */

# /* DMOR=0xFFF00000 片选双重映射区

大小 256k */javascript:window.open(this.src);" style="cursor:pointer;"/>

lis r5 0x7000

ori r5 r5 0x0000

lis r4 OR2@ha

stw r5 OR2@lr4

# /* DMBR=0x0400003 双重映射区基址

0X0 32位口大小 */

lis r5 0x0

ori r5 r5 0x0005

lis r4 BR2@ha

stw r5 BR2@lr4

ba INT Initialize

3.2 复制法

对于与MPC500同系列中的MPC561和MPC562等芯片,由于微处理器内部没有ROM,所以必须外扩ROM。在这种情况下,可以把程序烧录到外部ROM,然后在上电时再把程序从外部ROM拷贝到外部RAM中,从而使程序能够在外部RAM中运行。以MPC555为例的流程图如图2所示。

在这种方法中,程序仅在重新配置存储区前运行在外部ROM,而在重新配置存储区后运行在外部RAM中,因此提高了程序的运行速度。该方法在操作时,首先把程序用仿真器烧录到外部FALSH,入口地址为0xfff00000,然后脱机运行。本例中,外部FLASH是16位总线,外部RAM是32位总线。下面以MPC555为例给出具体程序代码。

INT Vectors

/* 系统复位 */

.skip 0x0100-.-INT Vectors

start

# /* 设置RAM 和 ROM 存储区 */

# /*OR2=0xFFF00000片选RAM 大小 1M*/

lis r5 0xfff0

ori r5 r5 0x0000

lis r4 OR2@ha

stw r5 OR2@lr4

# /* BR2=0x0400003 RAM基址 0X400000

32位口大小 */

lis r5 0x40

ori r5 r5 0x0003

lis r4 BR2@ha

stw r5 BR2@lr4

# /*OR0=0Xfff80000片选FLASH 大小 512k*/

lis r5 0xfff8

ori r5 r5 0x0000

lis r4 OR2@ha

stw r5 OR2@lr4

# /* BR0=0xfff00803 RAM基址 0Xfff00000

16位口大小 */

lis r5 0xfff0

ori r5 r5 0x0803

lis r4 BR2@ha

stw r5 BR2@lr4

# /* 拷贝外部Flash到外部RAM */

li r60x0

lis r40x40

ori r4r40x0000

lis r50xfff0

ori r5r50x0

loop 1

lhzx r7r6r5

sthx r7r6r4

addi r6r60x2

li r80xb00

cmp r6r8

bne loop_1

# /* 重新分配存储区 */

# /* BR0=0x600803 */

lis r5 0x60

ori r5 r5 0x0803

lis r4 BR0@ha

stw r5 BR0@lr4

# /* OR0=0xFFf80000 片选flash 512k

1个时钟等周期 */

lis r5 0xfff8

ori r5 r5 0x0003

lis r4 OR0@ha

stw r5 OR0@lr4

# /* OR2=0xFFF00000 片选RAM 1M */

lis r5 0xfff0

ori r5 r5 0x0000

lis r4 OR2@ha

stw r5 OR2@lr4

# /* BR2=0xfff00003 基址 0Xfff00000

32位口大小 */

lis r5 0xfff0

ori r5 r5 0x0003

lis r4 BR2@ha

stw r5 BR2@lr4

ba INT_Initialize

4 结束语

笔者对文中所介绍的以MPC555为例对从RAM快速引导运行的两种实现方法进行了测试对比。结果证明:程序在RAM中的运行速度比在FLASH中提高了1倍多,因而程序运行速度得到了很大提高。



上一页  [1] [2] 

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:3,187.50000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号