第15天时将u-boot.bin文件烧录到Norflash上没有正常启动,考虑到tq2440.h文件中的CONFIG_SYS_TEXT_BASE 值时0x33FC0000,我们将其修改为0,毕竟这个是绝对地址。
#define CONFIG_SYS_TEXT_BASE 0
修改、编译、烧录后运行:
结果还是不能运行,这是什么原因呢?
将bootstrap.bin文件重新烧录到Norflash中,将u-boot.bin烧录到SDRAM的0x33fc0000位置,运行也不成功。
将CONFIG_SYS_TEXT_BASE 恢复为0x33fc0000
#define CONFIG_SYS_TEXT_BASE 0x33FC0000
修改、编译、烧录后运行是可以的。这就很奇怪了,为什么讲u-boot.bin烧录到Norflash上为什么不能运行呢?
原来是前面定义了CONFIG_SKIP_LOWLEVEL_INIT宏,跳过了cpu_init_crit,在arch/arm/cpu/arm920t/start.S 文件中如下部分,注释说明仅仅是在reboot是才会进行sys-critical初始化,当从RAM中启动时,不进行sys-critical初始化。
/*
* we do sys-critical inits only at r