请教大家一个问题 我现在nboot中lanch 0x30038000 pc指针也跳转到3003800执行了 但是在跳转到30039000时遇到一个问题我ads跟踪发现 eboot中的寄存器地址都变了,不是我定义的那个地址了??请问下有人遇到过吗??
30039000 [0xe59f03a4] ldr r0,0x300393ac ; = #0x00660073
30039004 [0xe3a01a01] mov r1,#0x1000
30039008 [0xe5801000] str r1,[r0,#0]
3003900c [0xe59f039c] ldr r0,0x300393b0 ; = #0x006c0075
30039010 [0xe3a01020] mov r1,#0x20
30039014 [0xe5801000] str r1,[r0,#0]
30039018 [0xeaffffff] b 0x3003901c
这是eboot代码:
ldr r0,=GPBCON
ldr r1,=0x1000
str r1,[r0]
ldr r0,=GPBDAT
ldr r1,=0x20
str r1,[r0]
这是我在eboot中点灯的代码。按道理GPBCON=0x56000010 GPBDAT=0x56000014!可是现在是#0x00660073
#0x006c0075这两个!请各位大侠帮忙分析什么原因呢??
没人帮我顶呀!自己顶下!各位大侠看看这是什么问题呀??
帮顶!是不是在nboot中对GPIO B做了映射了?楼主是在SDRAM中调试代码吗?0x00660073是什么存储区的地址,FLASH还是RAM?这个时候MMU还没有开吧?
好像弄错了。楼主贴出来的代码显示GPBCON地址=0x300393ac GPBDAT地址=0x300393b0
lz 在 nboot 中 copy eboot 的 size 是多少, 是不是太少了, 还是 copy 有错误.
Paul, Chao @ Techware
首先感谢下楼上几位回复!我这问题好难呀!我感觉自己能力有限了!
dwSector=64*2;//从block:2 page:0开始存放eboot
dwLength=64*3;//一共6个block;block2-7;96K容量;如果eboot文件大于96K,需要修改该代码
dwRAM=0x30038000;//eboot load Start address;把NAND FLASH内容拷贝到0X30038000
TO Paul, Chao 大侠!我的是1g08的nand 我cpoy的大小是64*3 我在开发部上时可以copyeboot并成功运行的。我不知道 这里是不是小了?还请明示!
1. 1g08 有 small page(512bytes/page), 也有 large page(2Kbytes/page), lz 再看看是不是这个地方有设错吧
2. 不然把从 nand copy 到 ram 完後, 把 ram 的内容 dump 出来, 比比看是哪一个地方有问题.
Paul, Chao @ Techware