STM32CubeIde HardFault その18 Stackの最後の位置+1に書き込めるようにしてみる。
STM32F429ZITX_FLASH.ld
STACKの最後に+1した領域に、値を書きにいっているため、HardFaultになっているのでは?と思った。
リンカのファイルを以下のように変更して、最後の位置+1に書き込んでも問題ないようにしてみた。 すると、HardFaultがでなくなった。
/* Highest address of the user mode stack */ /*_estack = 0x20030000;*/ /* end of "RAM" Ram type memory */ _estack = 0x20020000; /* end of "RAM" Ram type memory */ _Min_Heap_Size = 0x100 ; /* required amount of heap */ _Min_Stack_Size = 0x100 ; /* required amount of stack */ /* Memories definition */ MEMORY { FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 2048K CCMRAM (rwx) : ORIGIN = 0x10000000, LENGTH = 64K /* RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 192K */ RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 128K }
こうすると、1KByte無駄にするだけですむ。
/* Highest address of the user mode stack */ /*_estack = 0x20030000;*/ /* end of "RAM" Ram type memory */ /*_estack = 0x20020000;*/ /* end of "RAM" Ram type memory */ _estack = 0x2002FC00; /* end of "RAM" Ram type memory */ _Min_Heap_Size = 0x100 ; /* required amount of heap */ _Min_Stack_Size = 0x100 ; /* required amount of stack */ /* Memories definition */ MEMORY { FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 2048K CCMRAM (rwx) : ORIGIN = 0x10000000, LENGTH = 64K /* RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 192K */ /* RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 128K*/ RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 191K }