这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 急!PowerPC从flash高地址更改至低地址启动问题

共6条 1/1 1 跳转至

急!PowerPC从flash高地址更改至低地址启动问题

菜鸟
2007-09-26 09:47:10     打赏

我的系统是PowerPC 866, 16M Flash, 32M SDRAM.复位时硬件从数据总线上获取hard reset configurationword,我只需要将bootrom.bin烧写在0xFFF00100的地址上便可以启动.
config.h中的配置如下:
#define LOCAL_MEM_LOCAL_ADRS 0x00000000 /* Base of RAM */
#define LOCAL_MEM_SIZE  0x02000000  /* 32 Mbyte memory available */
#define ROM_BASE_ADRS 0xFF000000  /* base address of ROM */
#define ROM_TEXT_ADRS 0xFFF00100  /* ROM_BASE_ADRS + 0x100 */
#define ROM_SIZE  0x01000000 /* ROM space */

上述配置是将程序烧在FLASH高地址上启动.我现在想把程序放在低地址上启动,也就是0xFF000100.于是我首先想到了更改HRCW.

HRCW中有两个字和启动地址有关:HRCW[IIP]控制异常向量表的初始位置,两种情况0xFFF00100或0x00000100.HRCW[ISB]指示IMMR寄存器的初始值,四种情况0x00000000. 0x00F00000. 0xFF000000. 0xFFF00000.高地址启动时HRCW[IIP]=0xFFF00100, HRCW[ISB]=0xFF000000. 为了能在低地址启动我修改了HRCW[IIP]=0x00000100,并将config.h中的ROM_TEXT_ADRS改为0xFF000100,烧入到0xFF000100无法启动.

请教一下各位PowerPC的更改启动地址是不是更改HRCW[IIP]位?HRCW[ISB]位对它有影响吗?那我要如何配置我的config.h文件.望达人解答啊!




关键词: PowerPC     flash     高地址     地址     更改         

菜鸟
2007-10-08 18:11:53     打赏
2楼

我照着做了一下,还不行,感觉程序没起来!CPU不停的在复位


菜鸟
2007-10-10 13:33:28     打赏
3楼
BR相应的值应该改掉了,程序里用的是宏定义

菜鸟
2007-10-31 10:23:42     打赏
4楼

marker兄你说的方式应该是对,我的程序似乎能启动,只是中间一些初始化出错了。我现在也正在出差,不好调试。等回去好好试试。


菜鸟
2008-06-30 18:15:56     打赏
5楼
deepinbsp,按照我1楼发的配置方式,我将程序烧到0xff000100, bdi2000 用go 0xff000100指令无法启动,PC停在0xff0001e4。通过调试我确定程序出错的地址在OR0配置的地方。我按照你的方法,加入代码,go 0xff000100真的可以启动。
但是我拔掉BDI2000, 复位,程序又无法启动了,一直在复位,这是什么原因?
硬件复位控制字HRCW[IIP]=0x00000100    HRCW[ISB]=10(D7,D8)

菜鸟
2008-07-03 15:55:11     打赏
6楼

终于成功了,我将
#define LOCAL_MEM_LOCAL_ADRS 0x00000000 /* Base of RAM */
#define LOCAL_MEM_SIZE  0x02000000  /* 32 Mbyte memory available */
#define ROM_BASE_ADRS 0xFF000000  /* base address of ROM */
#define ROM_TEXT_ADRS 0xFF000100  /* ROM_BASE_ADRS + 0x100 */
#define ROM_SIZE  0x01000000 /* ROM space */
改成
#define LOCAL_MEM_LOCAL_ADRS 0x00000000 /* Base of RAM */
#define LOCAL_MEM_SIZE  0x02000000  /* 32 Mbyte memory available */
#define ROM_BASE_ADRS 0xFE000000  /* base address of ROM */
#define ROM_TEXT_ADRS 0xFE000100  /* ROM_BASE_ADRS + 0x100 */
#define ROM_SIZE  0x01000000 /* ROM space */
就可以成功启动。不知什么原因啊?

看看这个帖子,历时近10个月,太感谢大家了!

共6条 1/1 1 跳转至

回复

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