This must be wrong, the address 0x20000000 is used directly at memory pool address compare:
uint_32 _bsp_enable_card(void)
...
/* Memory splitter - prevent accessing both ram banks in one instruction */
_mem_alloc_at(0, (void*)0x20000000);
pointer _lwmem_alloc_at_internal(
/* [IN] the size of the memory block */ _mem_size requested_size,
/* [IN] the addr of the memory block */ pointer requested_addr,
...
if ((uchar_ptr)block_ptr + LWMEM_MIN_MEMORY_STORAGE_SIZE <=
(uchar_ptr)requested_addr - sizeof(LWMEM_BLOCK_STRUCT) &&
(uchar_ptr)block_ptr + block_size >=
(uchar_ptr)requested_addr - sizeof(LWMEM_BLOCK_STRUCT) + requested_size) {
/* request fits into this block */
block_ptr has value 0x200011b0
requested_addr 0x20000000
Don't understand why 0x2000000 is used for compare.
Probably tried to separate RAM-regions [1FFF8000..1FFFFFFF] and [0x20000000..0x20007FFF].
If fails and function returns with "no memory".
map shows:
1FFF8000 1FFF8000 000013D0 .main_application_bss ram
20000000 0000D15C 00000820 .main_application_data start_of_ram0
20000820 20000820 00000000 .kernel_data start_of_ram0
20007FF0 20007FF0 00000000 .end_of_kernel_data end_of_kd
20007A00 20007A00 00000000 .boot_stack bstack
20007BFF 20007BFF 00000000 .end_of_boot_stack end_bstack
20007BFF 0000D97C 00000018 .romp end_bstack
File version:
* $FileName: lwm_alli.c$
* $Version : 3.6.16.0$
* $Date : Nov-10-2010$