This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM625: Custom design - Troubleshooting a no boot issue

Part Number: AM625
Other Parts Discussed in Thread: TPS65219

Hello,

  I recently received my first batch of boards based. I based the design around spar001, and use a TPS65219 PMIC.  I've had a few hardware issues I was able to resolve getting the PMIC up, and now the processor is starting to boot and I see the initial boot messages on the serial console.  
But after a moment, the boot hangs ,and all I see is this:


U-Boot SPL 2025.01-00746-g25c84747e21d-dirty (Feb 13 2026 - 19:19:50 +0000)
SYSFW ABI: 4.0 (firmware rev 0x000b '11.2.5--v11.02.05 (Fancy Rat)')
Set clock rates for '/a53@0', CPU: 1250MHz at Speed Grade 'T'
SPL initial stack usage: 13424 bytes

After getting into the u-boot code, I discovered the hang is in mem_malloc_init(). The config option is set: 

SYS_MALLOC_CLEAR_ON_INIT   

void mem_malloc_init(ulong start, ulong size)
{
  mem_malloc_start = (ulong)map_sysmem(start, size);
  mem_malloc_end = mem_malloc_start + size;
  mem_malloc_brk = mem_malloc_start;

#ifdef CONFIG_SYS_MALLOC_DEFAULT_TO_INIT
  malloc_init();
#endif

printf("using memory 0x%x-0x%x for malloc()\n", (unsigned int)mem_malloc_start, (unsigned int)mem_malloc_end);

#if CONFIG_IS_ENABLED(SYS_MALLOC_CLEAR_ON_INIT)
  memset((void *)mem_malloc_start, 0x0, size);
#endif
}
 
The bolded memset() function call hangs indefinitely.  
 
I added some additional and debugging to this function and found that it always hangs around the 8K marker.

SPL initial stack usage: 13424 bytes
using memory 0x84000000-0x85000000 for malloc()
malloc size is: 16777216
clearing chunk: 0x84000000-0x840003ff (1024 bytes)
clearing chunk: 0x84000400-0x840007ff (1024 bytes)
clearing chunk: 0x84000800-0x84000bff (1024 bytes)
clearing chunk: 0x84000c00-0x84000fff (1024 bytes)
clearing chunk: 0x84001000-0x840013ff (1024 bytes)
clearing chunk: 0x84001400-0x840017ff (1024 bytes)
clearing chunk: 0x84001800-0x84001bff (1024 bytes)
clearing chunk: 0x84001c00-0x84001fff (1024 bytes)
I know I could change 
SYS_MALLOC_CLEAR_ON_INIT, but I think this would eventually show itself as an issue later on, so I'd like to understand why it won't memset this memory.  
 
My DDR4 chipset is MT40A1G16TB-062E_IT_F.

Thank you!