- 杂志
 论坛 » 嵌入式系统设计 » RE: 急!PowerPC从flash高地址更改至低地址启动问题
 RE: 急!PowerPC从flash高地址更改至低地址启动问题  发表于 2008-04-02 17:20:53
呢称:deepinbsp
加我为好友
遇到过这个问题,跟片选有关,BR0上电后缺省值与设置的起动地址有关,起动地址为低(0x00000000)时,CS0就配置到0x0的地址上了,这时候PC指针就也是从0x00000100开始的,到了romInit.s里一旦重新配置了BR0,flash就被配置到高地址了,而PC指针还指向低地址,就出exception了。
解决办法挺巧妙的,
1. 在配置BR0之前,先把OR0配置成覆盖4G空间(前面掩地址的位全是0)
2. 用下面的代码把PC指针跳到flash真实地址
bl      sysSetPCtoFlash

sysSetPCtoFlash的实现:
FUNC_BEGIN(sysSetPCtoFlash)
    mfspr r5, lr
    lis   r6, HIADJ (0xfc000000)
    addi  r6, r6, LO (0xfc000000)  
    or    r5,r5,r6
    mtspr lr, r5
    blr                /* return to caller */
FUNC_END(sysSetPCtoFlash)

3.重新配置OR0到正常值。

当然了,flash的片选应该在配其它片选之前配置。
关于我们 | 广告服务 | 企业会员服务 | 新手上路 | 联系我们 | 友情链接
《电子产品世界》杂志社 版权所有 北京东晓国际技术信息咨询有限公司
Copyright ©2002 ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.
京ICP备060382号