We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello,
I'm using a lpc1766 and made a very simple program to debug a hardfault exception.
After initiallisation the main routine is called where a array is allocated using the library function malloc().
When the malloc function is called a "bus fault" exception arises which ends up in a "hard fault" exception. In the hard fault exception handler I can read the exception registers using the debugger "fault reports" dialog.
When I double click on the topmost entry of the callstack it jumps to the following instruction: 0x00000280 4605 MOV r5,r0
Can somenone tell me why my code ends up in hardfault exception?
Below is the function in C and assembly.
void *alloc_ram(uint16 size) { void *ram; __disable_irq(); ram = malloc(size); __enable_irq(); return(ram); } 32: { 33: void *ram; 34: 0x00000274 B570 PUSH {r4-r6,lr} 0x00000276 4604 MOV r4,r0 35: __disable_irq(); 36: 0x00000278 B672 CPSID I 37: ram = malloc(size); 38: 0x0000027A 4620 MOV r0,r4 0x0000027C F000F840 BL.W malloc (0x00000300) 0x00000280 4605 MOV r5,r0 39: __enable_irq(); 40: