|
小弟最近想把uboot移植到LPC2210上,但是过程真是艰辛,好不容易让串口有输出了,但是又遇到了怪事.
如下:
U-Boot 1.1.2 (Apr 23 2007 - 08:40:19)
U-Boot code: 81780000 -> 817989E8 BSS: -> 8179D4A0
RAM Configuration:
Bank #0: 81000000 8 MB
Flash: 2 MB
env_relocate[210] offset = 0x0
env_relocate[229] malloced ENV at 00000000
Using default environment
经过printf定位,发现错误应该在env_common.c中
代码如下:
env_ptr = (env_t *)malloc (CFG_ENV_SIZE);
DEBUGF ("%s[%d] malloced ENV at %p\n", __FUNCTION__,__LINE__,env_ptr);
这里用了malloc 返回值是0...应该由此导致后面出现错误,
我在网上查了下,说
1.有可能是编译器的问题,最好用arm-elf,不要用arm-linux,
可是我就是用的arm-elf 啊..
2.编译时不能初始化静态成员变量,导致malloc分配内存出错,出现了一个很大的值
解决办法是,在分配内存函数调用之前,"就进行内存分配函数的初始化",这样可以主动的初始化全局分配的变量,以解决malloc分配内存返回0的问题.
---我不明白这里"调用之前,进行内存分配函数的初始化"这句话的意思.
3.malloc返回0,可能是内存空间不够的问题,
那么在uboot中什么原因导致这个内存空间不够呢?我觉得不应该啊.
请大家指点一下,谢谢了! |
|