[U-Boot] u-boot hang after we changed the flash chip

raymond zhao raymond.zhao.uboot at gmail.com
Mon Dec 13 22:49:13 CET 2010


Hi, everyone
I have a AMCC PowerPC 405EX based board. The u-boot version is U-Boot
1.3.2-RELEASE_11. It works fine until we have to change the NOR-Flash chip
from JS28F128P33B85 to JS28F128P33BF70 since the JS28F128P33B85 is obsolete.
I checked the datasheet of these two flash chips, they all support CFI and
we enabled CFI in u-boot. The different is the write buffer size: the old
one has 32 bytes and the new one has 256 bytes. I tracked into the u-boot
with BDI3000. The code fly away in the function i2c_init (CFG_I2C_SPEED,
CFG_I2C_SLAVE), which is called in init_func_i2c:

static int init_func_i2c (void)
{
    puts ("I2C:   ");
    i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
    puts ("ready\n");
    return (0);
}
In debug console: I actually see the out put I2C: . The codes fly away
inside i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE); and never come back to
put("ready\n");

Another interesting thing is when I am in function init_func_i2c, I used bt
full in GDB to check the stack. I get the following:
(gdb) bt full
#0  <signal handler called>
No locals.
#1  0x00000000 in ?? ()
No symbol table info available.
#2  0x00000000 in ?? ()
No symbol table info available.
Previous frame inner to this frame (corrupt stack?)

Does this mean the stack is corrupted? There should have a stack already in
this moment, right?


Does anyone has any idea which direction I should go?

Thanks a lot,

Raymond


More information about the U-Boot mailing list