Example S32K312 HARDFAULT Handling Interrupt DS3.5 RTD300

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Example S32K312 HARDFAULT Handling Interrupt DS3.5 RTD300

Example S32K312 HARDFAULT Handling Interrupt DS3.5 RTD300

*******************************************************************************

The purpose of this demo application is to present a usage of the
Hardfault handling for the S32K3xx MCU.

------------------------------------------------------------------------------
* Test HW: S32K3X2EVB-Q172
* MCU: S32K312
* Compiler: S32DS3.5
* SDK release: RTD 3.0.0
* Debugger: PE micro
* Target: internal_FLASH
********************************************************************************

An example on S32K312:

Read an unimplemented memory (0x80000):

 

volatile uint32_t read = *((uint32_t*)0x00080000);


Hardfault will occur :--

Dinesh_Guleria_7-1707886997375.pngDinesh_Guleria_7-1707886997375.png

 

Dinesh_Guleria_8-1707887021604.pngDinesh_Guleria_8-1707887021604.pngDinesh_Guleria_0-1707887578380.pngDinesh_Guleria_0-1707887578380.png

 



Read Stack pointer when the HARDFAULT occur :--
SP = 0x2000ffd0

Dinesh_Guleria_0-1707886133591.pngDinesh_Guleria_0-1707886133591.png



Go to this memory location , 0x2000ffd0 :--

Dinesh_Guleria_1-1707886185039.pngDinesh_Guleria_1-1707886185039.png

 

Dinesh_Guleria_2-1707886314115.pngDinesh_Guleria_2-1707886314115.png

 



When the program enters an exception handler, the stack frame is pushed onto the stack including the program counter value of the fault instruction. 
At exception entry, the processor saves R0 R3, R12, LR, PC and PSR on the stack.

Dinesh_Guleria_3-1707886498124.pngDinesh_Guleria_3-1707886498124.png


hardfault occurred at, 0x00400e48, this is how to decode the address :--

Dinesh_Guleria_5-1707886661636.pngDinesh_Guleria_5-1707886661636.png

 

Dinesh_Guleria_2-1707886314115.pngDinesh_Guleria_2-1707886314115.png


Now How to reach this address 0x00400e48, using disassembly window :--
This is same place in main() function :--
volatile uint32_t read = *((uint32_t*)0x00080000);

Dinesh_Guleria_6-1707886853788.pngDinesh_Guleria_6-1707886853788.png

 

Attachments
%3CLINGO-SUB%20id%3D%22lingo-sub-1806259%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EExample%20S32K312%20HARDFAULT%20Handling%20Interrupt%20DS3.5%20RTD300%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1806259%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%0A%3CP%3E*******************************************************************************%3C%2FP%3E%0A%3CP%3EThe%20purpose%20of%20this%20demo%20application%20is%20to%20present%20a%20usage%20of%20the%3CBR%20%2F%3EHardfault%20handling%20for%20the%20S32K3xx%20MCU.%3C%2FP%3E%0A%3CP%3E------------------------------------------------------------------------------%3CBR%20%2F%3E*%20Test%20HW%3A%20S32K3X2EVB-Q172%3CBR%20%2F%3E*%20MCU%3A%20S32K312%3CBR%20%2F%3E*%20Compiler%3A%20S32DS3.5%3CBR%20%2F%3E*%20SDK%20release%3A%20RTD%203.0.0%3CBR%20%2F%3E*%20Debugger%3A%20PE%20micro%3CBR%20%2F%3E*%20Target%3A%20internal_FLASH%3CBR%20%2F%3E********************************************************************************%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%0A%3CP%3EAn%20example%20on%20S32K312%3A%3C%2FP%3E%0A%3CP%3ERead%20an%20unimplemented%20memory%20(0x80000)%3A%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CPRE%20class%3D%22lia-code-sample%20%20language-c%22%3E%3CCODE%3Evolatile%20uint32_t%20read%20%3D%20*((uint32_t*)0x00080000)%3B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%3CBR%20%2F%3EHardfault%20will%20occur%20%3A--%3C%2FP%3E%0A%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Dinesh_Guleria_7-1707886997375.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Dinesh_Guleria_7-1707886997375.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F263051iCDA6BFC48786E909%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Dinesh_Guleria_7-1707886997375.png%22%20alt%3D%22Dinesh_Guleria_7-1707886997375.png%22%20%2F%3E%3Cspan%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3EDinesh_Guleria_7-1707886997375.png%3C%2Fspan%3E%3C%2Fspan%3E%3C%2FSPAN%3E%0A%3CBR%20%2F%3E%0A%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Dinesh_Guleria_8-1707887021604.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Dinesh_Guleria_8-1707887021604.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F263052iEFA726197F80B6F1%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Dinesh_Guleria_8-1707887021604.png%22%20alt%3D%22Dinesh_Guleria_8-1707887021604.png%22%20%2F%3E%3Cspan%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3EDinesh_Guleria_8-1707887021604.png%3C%2Fspan%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Dinesh_Guleria_0-1707887578380.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Dinesh_Guleria_0-1707887578380.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F263053i2A41F2EA479EDD4C%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Dinesh_Guleria_0-1707887578380.png%22%20alt%3D%22Dinesh_Guleria_0-1707887578380.png%22%20%2F%3E%3Cspan%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3EDinesh_Guleria_0-1707887578380.png%3C%2Fspan%3E%3C%2Fspan%3E%3C%2FSPAN%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%3CBR%20%2F%3E%3CBR%20%2F%3ERead%20Stack%20pointer%20when%20the%20HARDFAULT%20occur%20%3A--%3CBR%20%2F%3ESP%20%3D%26nbsp%3B0x2000ffd0%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%0A%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Dinesh_Guleria_0-1707886133591.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Dinesh_Guleria_0-1707886133591.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F263040i3BFF4DE133F09889%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Dinesh_Guleria_0-1707886133591.png%22%20alt%3D%22Dinesh_Guleria_0-1707886133591.png%22%20%2F%3E%3Cspan%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3EDinesh_Guleria_0-1707886133591.png%3C%2Fspan%3E%3C%2Fspan%3E%3C%2FSPAN%3E%0A%3CP%3E%3CBR%20%2F%3E%3CBR%20%2F%3EGo%20to%20this%20memory%20location%20%2C%200x2000ffd0%20%3A--%3C%2FP%3E%0A%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Dinesh_Guleria_1-1707886185039.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Dinesh_Guleria_1-1707886185039.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F263041iDB0DD26DE64DBA32%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Dinesh_Guleria_1-1707886185039.png%22%20alt%3D%22Dinesh_Guleria_1-1707886185039.png%22%20%2F%3E%3Cspan%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3EDinesh_Guleria_1-1707886185039.png%3C%2Fspan%3E%3C%2Fspan%3E%3C%2FSPAN%3E%0A%3CBR%20%2F%3E%0A%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Dinesh_Guleria_2-1707886314115.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Dinesh_Guleria_2-1707886314115.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F263042i64921E725750383A%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Dinesh_Guleria_2-1707886314115.png%22%20alt%3D%22Dinesh_Guleria_2-1707886314115.png%22%20%2F%3E%3Cspan%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3EDinesh_Guleria_2-1707886314115.png%3C%2Fspan%3E%3C%2Fspan%3E%3C%2FSPAN%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3EWhen%20the%20program%20enters%20an%20exception%20handler%2C%20the%20stack%20frame%20is%20pushed%20onto%20the%20stack%20including%20the%20program%20counter%20value%20of%20the%20fault%20instruction.%26nbsp%3B%3CBR%20%2F%3EAt%20exception%20entry%2C%20the%20processor%20saves%20R0%20R3%2C%20R12%2C%20LR%2C%20PC%20and%20PSR%20on%20the%20stack.%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Dinesh_Guleria_3-1707886498124.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Dinesh_Guleria_3-1707886498124.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F263043i706E8C50157D3FA6%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Dinesh_Guleria_3-1707886498124.png%22%20alt%3D%22Dinesh_Guleria_3-1707886498124.png%22%20%2F%3E%3Cspan%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3EDinesh_Guleria_3-1707886498124.png%3C%2Fspan%3E%3C%2Fspan%3E%3C%2FSPAN%3E%0A%3CP%3E%3CBR%20%2F%3Ehardfault%20occurred%20at%2C%26nbsp%3B0x00400e48%2C%20this%20is%20how%20to%20decode%20the%20address%20%3A--%3C%2FP%3E%0A%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Dinesh_Guleria_5-1707886661636.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Dinesh_Guleria_5-1707886661636.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F263046i35FBCE00EFE4A3E2%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Dinesh_Guleria_5-1707886661636.png%22%20alt%3D%22Dinesh_Guleria_5-1707886661636.png%22%20%2F%3E%3Cspan%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3EDinesh_Guleria_5-1707886661636.png%3C%2Fspan%3E%3C%2Fspan%3E%3C%2FSPAN%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%3CSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Dinesh_Guleria_2-1707886314115.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Dinesh_Guleria_2-1707886314115.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F263042i64921E725750383A%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Dinesh_Guleria_2-1707886314115.png%22%20alt%3D%22Dinesh_Guleria_2-1707886314115.png%22%20%2F%3E%3Cspan%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3EDinesh_Guleria_2-1707886314115.png%3C%2Fspan%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3CBR%20%2F%3ENow%20How%20to%20reach%20this%20address%200x00400e48%2C%20using%20disassembly%20window%20%3A--%3CBR%20%2F%3EThis%20is%20same%20place%20in%20main()%20function%20%3A--%3CBR%20%2F%3Evolatile%20uint32_t%20read%20%3D%20*((uint32_t*)0x00080000)%3B%3C%2FP%3E%0A%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Dinesh_Guleria_6-1707886853788.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Dinesh_Guleria_6-1707886853788.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F263049i8A38554C0DBC4FC8%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Dinesh_Guleria_6-1707886853788.png%22%20alt%3D%22Dinesh_Guleria_6-1707886853788.png%22%20%2F%3E%3Cspan%20class%3D%22lia-inline-image-caption%22%20onclick%3D%22event.preventDefault()%3B%22%3EDinesh_Guleria_6-1707886853788.png%3C%2Fspan%3E%3C%2Fspan%3E%3C%2FSPAN%3E%0A%3CBR%20%2F%3E%0A%3C%2FLINGO-BODY%3E
No ratings
Version history
Last update:
‎02-13-2024 10:13 PM
Updated by: