Using MCAL of S32K14x & Compiler abstraction for MCAL Fault Injection tests

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Using MCAL of S32K14x & Compiler abstraction for MCAL Fault Injection tests

769件の閲覧回数
Zhai
Contributor I

I am using the MCAL of S32K14x, but I found that some macros in the core code are not defined, such as "MCAL_FAULT_INJECTION_POINT(T_WDG_INJ_TG_0)" used in the "Wdg_ChannelTrigger" function in the wdg module. "T_WDG_INJ_TG_0" cannot find its definition. By searching through the entire file, I found that "MCAL_FAULT_INJECTION_POINT(lable)" is defined in the Mcal.h file, Used to perform Compiler abstraction for MCAL Fault Injection tests. Can you tell me what "Compiler abstraction for MCAL Fault Injection tests "means and where" T_WDG_INJ_TG_0 "is defined.

 

The relevant code is as follows:

LOCAL_INLINE FUNC(void, WDG_CODE) Wdg_ChannelTrigger(CONST(Wdg_IPW_InstanceType, WDG_CONST) Wdg_Instance)
{
    VAR(uint32, AUTOMATIC) u32TempTimeout;
#if (WDG_VALIDATE_GLOBAL_CALL == STD_ON)
    VAR(Std_ReturnType, AUTOMATIC) valid;

    valid = Wdg_ChannelValidateGlobalCall(WDG_TRIGGER_ID, Wdg_Instance);
    if ((Std_ReturnType)E_OK == valid)
    {
#endif /* (WDG_VALIDATE_GLOBAL_CALL == STD_ON */
        SchM_Enter_Wdg_WDG_EXCLUSIVE_AREA_00();

        if( Wdg_au32Timeout[Wdg_Instance] < Wdg_au32GptPeriod[Wdg_Instance])
        {
            MCAL_FAULT_INJECTION_POINT(T_WDG_INJ_TG_0);
            SchM_Exit_Wdg_WDG_EXCLUSIVE_AREA_00();
            Gpt_StopTimer(Wdg_apConfigPtr[Wdg_Instance]->Wdg_TimerChannel);
        }
        else
        {
            u32TempTimeout = Wdg_au32Timeout[Wdg_Instance] - Wdg_au32GptPeriod[Wdg_Instance];
            Wdg_au32Timeout[Wdg_Instance] = u32TempTimeout;
            SchM_Exit_Wdg_WDG_EXCLUSIVE_AREA_00();          
            Wdg_IPW_Trigger(Wdg_Instance);
        }
#if (WDG_VALIDATE_GLOBAL_CALL == STD_ON)
    }
    Wdg_ChannelEndValidateGlobalCall(valid, Wdg_Instance);
#endif /* (WDG_VALIDATE_GLOBAL_CALL == STD_ON */
}
 
 
 
 
#ifdef MCAL_ENABLE_FAULT_INJECTION
#define MCAL_PUT_IN_QUOTES(x) #x
#define MCAL_FAULT_INJECTION_POINT(label) ASM_KEYWORD(MCAL_PUT_IN_QUOTES(label:))
#else
#define MCAL_FAULT_INJECTION_POINT(label)
#endif
0 件の賞賛
返信
5 返答(返信)

700件の閲覧回数
Nhi_Nguyen
NXP Employee
NXP Employee

Hi @Zhai ,

Purpose of fault injection tests is to validate requirements coming from driver FMEA, requirements for error handling not testable only with use of driver function calls or increasing code coverage by activating code paths not reachable without fault creation.

Nhi_Nguyen_0-1699411755952.png

So, T_WDG_INJ_TG_0 is defined in the cmm file that created by tester.

MCAL_FAULT_INJECTION_POINT macro expansion needs to be enabled by –d MCAL_ENABLE_FAULT_INJECTION option defined only in makefiles for fault injection tests, i.e. by default preprocessor does not include them in the code.

Best regards,

Nhi

0 件の賞賛
返信

683件の閲覧回数
Zhai
Contributor I
Thank you for your answer, I want to know which document the screenshot in your reply comes from, I want to read it, but I don't seem to find it in the MCAL code package of S32K14x
0 件の賞賛
返信

645件の閲覧回数
Nhi_Nguyen
NXP Employee
NXP Employee

Hi @Zhai ,

I found it in internal link of NXP. So, I don't know how to share with you. But, if you have any question relate to this, please let me know, I'll try to find it.

Best regards,

Nhi

0 件の賞賛
返信

629件の閲覧回数
Zhai
Contributor I
Thank you.I would like to know if fault injection tests are required; Where the test should be performed; If you want to do this test, what is the phenomenon after the T_WDG_INJ_TG_0 command is defined and executed, and how can I see the phenomenon.
0 件の賞賛
返信

522件の閲覧回数
Nhi_Nguyen
NXP Employee
NXP Employee

Hi Zhai,

This is an example about fault injection test:

Nhi_Nguyen_0-1701931637891.png

It changes variable's value that hard to create to set value of that variable.

Best regards,

Nhi

0 件の賞賛
返信