Hi<br>&nbsp;&nbsp;&nbsp; i am new to uboot,<br>&nbsp;&nbsp;&nbsp; I am porting uboot to lpc2220 on my board,and when run at env_relocate() in start_armboot(void), i get sometrouble.<br><br>/**** code from lib_arm/board.c&nbsp; ***/<br>void env_relocate (void)
<br>{<br>&nbsp;&nbsp;&nbsp; DEBUGF (&quot;%s[%d] offset = 0x%lx\n&quot;, __FUNCTION__,__LINE__,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; gd-&gt;reloc_off);<br><br>#ifdef CONFIG_AMIGAONEG3SE<br>&nbsp;&nbsp;&nbsp; enable_nvram();<br>#endif<br><br>#ifdef ENV_IS_EMBEDDED<br>&nbsp;&nbsp;&nbsp; /*<br>
&nbsp;&nbsp;&nbsp; &nbsp;* The environment buffer is embedded with the text segment,<br>&nbsp;&nbsp;&nbsp; &nbsp;* just relocate the environment pointer<br>&nbsp;&nbsp;&nbsp; &nbsp;*/<br>&nbsp;&nbsp;&nbsp; env_ptr = (env_t *)((ulong)env_ptr + gd-&gt;reloc_off);<br>&nbsp;&nbsp;&nbsp; DEBUGF (&quot;%s[%d] embedded ENV at %p\n&quot;, __FUNCTION__,__LINE__,env_ptr);
<br>#else<br>&nbsp;&nbsp;&nbsp; /*<br>&nbsp;&nbsp;&nbsp; &nbsp;* We must allocate a buffer for the environment<br>&nbsp;&nbsp;&nbsp; &nbsp;*/<br>&nbsp;&nbsp;&nbsp; env_ptr = (env_t *)malloc (CFG_ENV_SIZE);<br>&nbsp;&nbsp;&nbsp; DEBUGF (&quot;%s[%d] malloced ENV at %p\n&quot;, __FUNCTION__,__LINE__,env_ptr);
<br>#endif<br>/* ******&nbsp;&nbsp; code end&nbsp;&nbsp; *******/<br><br>after the code &quot;env_ptr = (env_t *)malloc (CFG_ENV_SIZE)&quot;&nbsp; the&nbsp; env_ptr is 0x0;<br>i change the toolchain from arm-linux to arm-elf and the return value is also 0x0,so what should i do if i want to initial for malloc,
<br>and I don&#39;t know why we call mem_malloc_init,<br><br>/********&nbsp; code from lib_arm/borad.c&nbsp;&nbsp; ***/<br>static ulong mem_malloc_start = 0;<br>
static ulong mem_malloc_end = 0;<br>
static ulong mem_malloc_brk = 0;<br>
<br>
static<br>
void mem_malloc_init (ulong dest_addr)<br>
{<br>
&nbsp;&nbsp;&nbsp; mem_malloc_start = dest_addr;<br>
&nbsp;&nbsp;&nbsp; mem_malloc_end = dest_addr + CFG_MALLOC_LEN;<br>
&nbsp;&nbsp;&nbsp; mem_malloc_brk = mem_malloc_start;<br>
<br>
&nbsp;&nbsp;&nbsp; memset ((void *) mem_malloc_start, 0,<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mem_malloc_end - mem_malloc_start);<br>
}<br>
/********* **/<br><br>the variables are all static, does it have any relation with malloc();<br>and I find there is a function malloc_bin_reloc in dlmalloc.c , and the change the &quot;static mbinptr av_[NAV * 2 + 2] &quot; with the gd-&gt;reloc_off,what i should set the gd-&gt;reloc_off if there are something relation,the code below
<br><br>/***** code from common/dlmalloc.c&nbsp; ****/<br>void malloc_bin_reloc (void)<br>{<br>&nbsp;&nbsp;&nbsp; unsigned long *p = (unsigned long *)(&amp;av_[2]);<br>&nbsp;&nbsp;&nbsp; int i;<br>&nbsp;&nbsp;&nbsp; for (i=2; i&lt;(sizeof(av_)/sizeof(mbinptr)); ++i) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; *p++ += gd-&gt;reloc_off;<br>&nbsp;&nbsp;&nbsp; }<br>}<br>/***** code end ****/<br><br>looking for some help,thanks<br><br>&nbsp;<br>