LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1080|回复: 0

为什么uboot中malloc返回值为0?

[复制链接]
发表于 2007-4-23 09:30:58 | 显示全部楼层 |阅读模式
小弟最近想把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中什么原因导致这个内存空间不够呢?我觉得不应该啊.

请大家指点一下,谢谢了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表