Part Number: MSPM0G3518
Other Parts Discussed in Thread: LP-MSPM0G3519
Hello,
I am currently implementing ISO-26262 hardware safety mechanisms on the MSPM0G351x using an AUTOSAR architecture.
I have successfully configured and enabled the MCLK Monitor (Dead Clock Check) but am struggling to perform a software-induced fault injection to validate the hardware's reaction.
Configuration:
MCLK Source: SYSOSC (32 MHz).
LFCLK Source: LFOSC (32 kHz).
Monitor Enable: I have verified via the debugger that the MCLKDEADCHK bit in the SYSCTL->SOCLOCK.MCLKCFG register is successfully set to 1 during initialization.
I need to intentionally halt the MCLK (force it to 0 Hz) during runtime to verify that the hardware detects the dead clock (within 1 to 12 LFCLK cycles) and triggers the safety reaction.
Tests Attempted (Fault Injection):
I have attempted to starve the MCLK using the following methods, but neither triggered the hardware monitor:
1- Switching MCLK to a disabled source: I attempted to set USEHSCLK = 1 in the MCLKCFG register while the SYSPLL was disabled.
Result: The hardware monitor did not fire. Instead, the CPU kept running (likely at a fallback frequency or the glitch-free mux prevented the switch), and my software-based Frequency Clock Counter (FCC) caught the frequency drift.
2- Disabling the active oscillator: I attempted to forcefully disable SYSOSC by writing to SYSCTL->SOCLOCK.SYSOSCCFG.
Result: No reaction from the hardware. The CPU continued running normally, likely because the hardware protects the active clock source from being disabled.
Questions:
1- Fault Injection Method: What is the recommended software method to intentionally starve the MCLK or bypass the glitch-free mux on the MSPM0G351x to successfully trigger the MCLK Dead Clock Monitor for safety validation?
2- Hardware Reaction: The Technical Reference Manual states, "An MCLK fault is always considered fatal to the system and generates a BOOTRST". Is there any configuration available (perhaps via SYSCFG or NONMASKINT) to route this fault to an NMI or standard interrupt instead of a hard BOOTRST, or is the BOOTRST reaction strictly hardwired?
Thank you for your guidance.
