This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VL-Q1: Can&Gptimer

Part Number: TDA4VL-Q1


Tool/software:

Dear Ti,

I am using Gptimer to control CAN transmission. I just want to send messages (Classical CAN) every 20 ms infinitely, so I copy sample code of Gpt directory to initialize. The patch is the files I have modified.

However, I don't know why the transmission always stopped after send 89 times and then it will send 3 times of 001 ID trace (CAN sent messages), after that the process just like stopped. When I click stop on ccs, it only showed like the screenshot, I don't know what it means, how can I know where in the code the program is running? 

ps. all modified under directory of "ti_J721S\ti-processor-sdk-rtos-j721s2-evm-10_01_00_04", CAN_LOOPBACK_ENABLE in Can_Cfg.h set to STD_OFF

patch:

diff --git a/mcusw/build/Rules.make b/mcusw/build/Rules.make
index 5714bd26..eb70dd1d 100644
--- a/mcusw/build/Rules.make
+++ b/mcusw/build/Rules.make
@@ -130,7 +130,7 @@ endif
 export device_family
 # Default Build Profile
 # Supported Values: debug | release
-export BUILD_PROFILE ?= release
+export BUILD_PROFILE ?= debug
 
 # Default Build Variant
 # Supported Values: precompile | linktime | postbuild
diff --git a/mcusw/mcal_drv/mcal/Can/src/Can.c b/mcusw/mcal_drv/mcal/Can/src/Can.c
index 662163a2..b512d08e 100755
--- a/mcusw/mcal_drv/mcal/Can/src/Can.c
+++ b/mcusw/mcal_drv/mcal/Can/src/Can.c
@@ -427,6 +427,10 @@ FUNC(Std_ReturnType, CAN_CODE) Can_Write(
                     Can_DriverObj.canController[MsgCntrlr].canTxStatus[msgObjIndx]
                                                                             = 1U;
                 }
+                else
+                {
+                    status = E_NOT_OK;
+                }
             }
             /* CAN_CoverageGap_31: Dynamic coverage for the below 'else' statement is not
              * covered.The 'else' statement is added as an additional safety
diff --git a/mcusw/mcal_drv/mcal/Can/src/Can_Mcan.c b/mcusw/mcal_drv/mcal/Can/src/Can_Mcan.c
index d4f48472..cedb1f00 100644
--- a/mcusw/mcal_drv/mcal/Can/src/Can_Mcan.c
+++ b/mcusw/mcal_drv/mcal/Can/src/Can_Mcan.c
@@ -1806,7 +1806,7 @@ static void Can_mcanInit(MCAN_InitParams *initParams,
 
     baseAddr =  canControllerCfg_PC->CntrAddr;
     /* Initialize MCAN Init params */
-    initParams->fdMode          = (uint32)MCAN_CCCR_FDOE_ENABLE;
+    initParams->fdMode          = (uint32)MCAN_CCCR_FDOE_DISABLE;
     if((boolean)TRUE ==
         canControllerCfg->DefaultBaud->BaudFdRateConfig.BrsSwitch)
     {
diff --git a/mcusw/mcal_drv/mcal/examples/Can/CanApp.c b/mcusw/mcal_drv/mcal/examples/Can/CanApp.c
index f23bfc42..d93028d0 100644
--- a/mcusw/mcal_drv/mcal/examples/Can/CanApp.c
+++ b/mcusw/mcal_drv/mcal/examples/Can/CanApp.c
@@ -83,14 +83,21 @@ static void CanApp_LoopbackTest(void);
 #if (STD_ON == CAN_SAFETY_DIAGNOSTIC)
 static void CanApp_SafetyApiTest(void);
 #endif
+static void AppUtils_delay(uint32 count);
 
 /* ========================================================================== */
 /*                            Global Variables                                */
 /* ========================================================================== */
 uint32                      CanApp_TestPassed = E_OK;
+uint8                       hth = 0U;
+Std_ReturnType       status = E_OK;
+uint32  GptApp_DemoStatus = E_OK;
+
 /**< Variable used for Demo status */
 Can_PduType                 CanApp_Pdu, CanApp_Pdu1;
 Can_PduType                 CanApp_Pdu2, CanApp_Pdu3, CanApp_Pdu4, CanApp_Pdu5;
+volatile uint32  GptApp_NotifiedForInstFlag = 0xFFFF;
+extern volatile uint8 GptApp_WakeupSrcDetFlag;
 
 /**< Variables which contains Can PDU data used in Can transmission */
 uint8                       CanApp_InputData[64U] =
@@ -102,6 +109,45 @@ uint8                       CanApp_InputData[64U] =
 0xA6, 0x6A, 0xFF, 0xFF, 0xC6, 0x6C, 0xB6, 0x6B,
 0xA7, 0x7A, 0xFF, 0xFF, 0xC7, 0x7C, 0xB7, 0x7B,
 0xA8, 0x8A, 0xFF, 0xFF, 0xC8, 0x8C, 0xB8, 0x8B};
+
+uint8                txData[8U];
+
+uint8 BCAN_TX_0x3BA_APA1_GetRC(void) {
+    static uint8 cnt = 0;
+    return (cnt++) & 0x0F;
+}
+
+uint8 BCAN_TX_0x3BA_APA1_GetCS(uint8 *data, uint8 roll_count) {
+    uint8 checksum = 0;
+    for (int i = 0; i < 8; i++) {
+        checksum += data[i];
+    }
+    return checksum & 0x0F;
+}
+
+void BCAN_TX_0x3BA_APA1(uint8 *data) {
+    TU_APA1_MSG *obj = (TU_APA1_MSG *)data;
+
+    obj->Bits.APA_V_Rq_EPS_Ctrl  = bcanData.TX.Angle.Valid;
+    obj->Bits.APA_Rq_EPS_Ctrl    = bcanData.TX.Angle.Apply;
+    obj->Bits.APA_Angle_Target_0 = (uint8)(bcanData.TX.Angle.Value >> 8);
+    obj->Bits.APA_Angle_Target_1 = (uint8)(bcanData.TX.Angle.Value & 0xFF);
+    obj->Bits.APA_Roll_Count     = BCAN_TX_0x3BA_APA1_GetRC();
+    obj->Bits.APA_checksum       = BCAN_TX_0x3BA_APA1_GetCS(data, obj->Bits.APA_Roll_Count);
+}
+
+#if defined (SOC_J721E) || (SOC_J7200) || defined (SOC_J721S2) || defined (SOC_J784S4) || defined (SOC_J742S2)
+FUNC(void, GPT_CODE_FAST) GptApp_GptXIsr(uintptr_t GptPtr)
+{
+    GptApp_IsrType gptChIsr = (GptApp_IsrType)GptPtr;
+
+    /* Associated GPT ISR */
+    gptChIsr();
+}
+#endif
+const Gpt_ConfigType  *pCfgPtr = &GptChannelConfigSet;
+extern const struct Gpt_ChannelConfigType_PC_s Gpt_ChannelConfig_PC[GPT_MAX_CHANNELS];
+
 /**< Variable which contains Can SDU data that is transported inside the PDU */
 const Can_PduType    *PduInfo;
 /**< Variable which contains Can PDU data passed during Transmission */
@@ -120,6 +166,7 @@ extern volatile P2CONST(PduInfoType, CANIF_VAR_CLEARED, CANIF_APPL_DATA)
 /* ========================================================================== */
 sint32 main(void)
 {
+    Gpt_Init(pCfgPtr);
     CanApp_TestPassed = E_OK;
 
 #if defined (SOC_AM62X) || defined (SOC_AM62AX) || defined (SOC_AM62DX) || defined (SOC_AM62PX) || defined (SOC_J722S)
@@ -143,9 +190,9 @@ sint32 main(void)
     CanApp_PlatformInit();
 
     CanApp_LoopbackTest();
-#if (STD_ON == CAN_SAFETY_DIAGNOSTIC)
-    CanApp_SafetyApiTest();
-#endif
+// #if (STD_ON == CAN_SAFETY_DIAGNOSTIC)
+//     CanApp_SafetyApiTest();
+// #endif
 
     AppUtils_Printf(MSG_NORMAL,
         "CAN Stack Usage: %d bytes\n", AppUtils_GetStackUsage());
@@ -170,175 +217,121 @@ sint32 main(void)
     return (CanApp_TestPassed);
 }
 
-static void CanApp_LoopbackTest(void)
+void AppUtils_delay (uint32 count)
 {
-    uint32               ctlr_cnt, mask = 0x00000000U, canMaxControllerCnt;
-    uint8                loopCnt = 0U, hth = 0U;
-    Std_ReturnType       status;
-    const Can_ConfigType *Can_ConfigPtr;
-
-#if (STD_ON == CAN_VARIANT_PRE_COMPILE)
-    Can_ConfigPtr = &CAN_INIT_CONFIG_PC;
-#else
-    Can_ConfigPtr = &CanConfigSet;
-#endif
+    volatile uint32 x = count;
+    while (x)
+        x--;
+}
 
-    canMaxControllerCnt = Can_ConfigPtr->CanMaxControllerCount;
-    for (ctlr_cnt = 0U; ctlr_cnt < canMaxControllerCnt;
-        ctlr_cnt++)
+void Gpt_Channel_Notify12(void)
+{
+    // AppUtils_Printf(MSG_NORMAL, "Can_Gpt: GPT Notification received for channel 11 !!!\n");
+    status = Can_Write(hth, PduInfo);
+    if (status != E_OK)
     {
-        /* Set Can frame */
-        CanApp_SetupCanFrame(ctlr_cnt, &hth, &mask);
-
-        /* Set Controller Mode to Start */
-        status = Can_SetControllerMode(
-        CanConfigSet_CanController_List_PC[ctlr_cnt]->ControllerId, CAN_CS_STARTED);
-        if (status != E_OK)
-        {
-            CanApp_TestPassed = E_NOT_OK;
-        }
-
-#if (CAN_LOOPBACK_ENABLE == STD_ON)
-        /* Enable loopback mode in CAN */
-        Can_TestLoopBackModeEnable(
-        CanConfigSet_CanController_List_PC[ctlr_cnt]->ControllerId, 0U);
-#endif
-
-        /* Do Can Write to send the CanApp_InputData on CAN bus */
-        status = Can_Write(hth, PduInfo);
-
-#if defined (SOC_AM62X) || defined (SOC_AM62AX) || defined (SOC_AM62DX) || defined (SOC_AM62PX) || defined (SOC_J722S)
-        Can_MainFunction_Write();
-        for(int cnt=0; cnt<100000;cnt++)
-          {
-                       ;
-          }
-#endif
+        AppUtils_Printf(MSG_NORMAL,
+        "CAN_APP: Error In Can_Write.\n");
+        CanApp_TestPassed = E_NOT_OK;
+    }
+    else
+    {
+        BCAN_TX_0x3BA_APA1(txData);
+    }
+    GptApp_NotifiedForInstFlag = 11U; /* Set it to channel number */
+}
 
-        if (status != E_OK)
-        {
-            AppUtils_Printf(MSG_NORMAL,
-            "CAN_APP: Error In Can_Write.\n");
-            CanApp_TestPassed = E_NOT_OK;
-        }
+void Gpt_Channel_Notify7(void)
+{
+    // AppUtils_Printf(MSG_NORMAL, "Can_Gpt: GPT Notification received for channel 6 !!!\n");
+    status = Can_Write(hth, PduInfo);
+    if (status != E_OK)
+    {
+        AppUtils_Printf(MSG_NORMAL,
+        "CAN_APP: Error In Can_Write.\n");
+        CanApp_TestPassed = E_NOT_OK;
+    }
+    else
+    {
+        BCAN_TX_0x3BA_APA1(txData);
+    }
+    GptApp_NotifiedForInstFlag = 6U; /* Set it to channel number */
+}
 
-        while ((CanIf_TxConfirmationCount != 1U))
-        {
-            /* Wait for Tx Confirmation */
-#if defined (SOC_AM62X) || defined (SOC_AM62AX) || defined (SOC_AM62DX) || defined (SOC_AM62PX) || defined (SOC_J722S)
-            Can_MainFunction_Write();
-            for(int cnt=0; cnt<10000;cnt++)
-            {
-                ;
-            }
-#endif
+void Gpt_Channel_Notify10(void)
+{
+    AppUtils_Printf(MSG_NORMAL, "Can_Gpt: GPT Notification received for channel 9 !!!\n");
+    GptApp_NotifiedForInstFlag = 9U; /* Set it to channel number */
+}
 
-        }
+void Gpt_Channel_Notify16(void)
+{
+    AppUtils_Printf(MSG_NORMAL, "Can_Gpt: GPT Notification received for channel 15 !!!\n");
+    GptApp_NotifiedForInstFlag = 15U; /* Set it to channel number */
+}
 
-#if defined (SOC_AM62X) || defined (SOC_AM62AX) || defined (SOC_AM62DX) || defined (SOC_AM62PX) || defined (SOC_J722S)
-        Can_MainFunction_Read();
+#if defined (SOC_J7200) || defined (SOC_J721S2) || defined (SOC_J784S4) || defined (SOC_J742S2)
+void Gpt_Channel_Notify18(void)
+{
+    AppUtils_Printf(MSG_NORMAL, "Can_Gpt: GPT Notification received for channel 18 !!!\n");
+    GptApp_NotifiedForInstFlag = 17U; /* Set it to channel number */
+}
 #endif
 
-        if (E_OK == CanApp_TestPassed)
-        {
-            if ((1U == CanIf_TxConfirmationCount) &&
-                        (1U == CanIf_RxConfirmationCount))
-            {
-                CanIf_TxConfirmationCount = 0U;
-                CanIf_RxConfirmationCount = 0U;
-            }
-            else
-            {
-                CanApp_TestPassed = E_NOT_OK;
-                break;
-            }
-
-            /* Set Controller Mode to Stop*/
-            status = Can_SetControllerMode(
-                CanConfigSet_CanController_List_PC[ctlr_cnt]->ControllerId,
-                CAN_CS_STOPPED);
-            if (status != E_OK)
-            {
-                CanApp_TestPassed = E_NOT_OK;
-            }
+static void CanApp_LoopbackTest(void)
+{
+    uint32               mask = 0x00000000U, countVal;
+    Gpt_ChannelType        chId;
+
+    bcanData.TX.Angle.Valid = 1;
+    bcanData.TX.Angle.Apply = 1;
+    bcanData.TX.Angle.Value = 0x2328;
+
+    /* Take each channel configuration in configuration set */
+    chId = Gpt_ChannelConfig_PC[1].channelId;
+    /* Set Can frame */
+    CanApp_SetupCanFrame(0, &hth, &mask);
+
+    /* Set Controller Mode to Start */
+    status = Can_SetControllerMode(
+    CanConfigSet_CanController_List_PC[0]->ControllerId, CAN_CS_STARTED);
+    if (status != E_OK)
+    {
+        CanApp_TestPassed = E_NOT_OK;
+    }
 
 #if (CAN_LOOPBACK_ENABLE == STD_ON)
-            Can_TestLoopBackModeDisable(
-            CanConfigSet_CanController_List_PC[ctlr_cnt]->ControllerId, 0U);
+    /* Enable loopback mode in CAN */
+    Can_TestLoopBackModeEnable(
+    CanConfigSet_CanController_List_PC[0]->ControllerId, 0U);
 #endif
 
-            if ((PduInfo->length == CanIf_PduInfoPtr->SduLength) &&
-                (PduInfo->id == (CanIf_Mailbox->CanId | mask)))
-            {
-#if defined (SOC_AM62X) || defined (SOC_AM62AX) || defined (SOC_AM62DX) || defined (SOC_AM62PX) || defined (SOC_J722S)
-                AppUtils_Printf(MSG_NORMAL,
-                "CAN_APP: Message Id Received %x Message Length is %u\t \n",
-                CanIf_Mailbox->CanId, CanIf_PduInfoPtr->SduLength);
-                for (loopCnt = 0U; loopCnt < CanIf_PduInfoPtr->SduLength;
-                        loopCnt++)
-                {
-                    if (CanIf_PduInfoPtr->SduDataPtr[loopCnt] !=
-                        CanApp_InputData[loopCnt])
-                    {
-                        CanApp_TestPassed = E_NOT_OK;
-                        AppUtils_Printf(MSG_NORMAL,
-                        "CAN_APP: Transmitted and Received Data miss-match.\n");
-                        break;
-                    }
-                    else
-                    {
-                        CanApp_TestPassed = E_OK;
-                    }
-                }
-                AppUtils_Printf(MSG_NORMAL,
-                "CAN_APP: Can Controller Instance MCAN %u \
-Internal LoopBack Mode Test Passed\n", ctlr_cnt);
-            }
-            else
-            {
-                CanApp_TestPassed = E_NOT_OK;
-                break;
-            }
-
-#if (CAN_LOOPBACK_ENABLE == STD_ON)
-            Can_TestLoopBackModeDisable(
-            CanConfigSet_CanController_List_PC[ctlr_cnt]->ControllerId, 0U);
-#endif
-            if ((PduInfo->length == CanIf_PduInfoPtr->SduLength) &&
-                (PduInfo->id == (CanIf_Mailbox->CanId | mask)))
-            {
-#endif /* if defined SOC_AM62X) */
+    #if (STD_ON == GPT_ENABLE_DISABLE_NOTIFICATION_API)
+        Gpt_EnableNotification(chId);
+        AppUtils_Printf(MSG_NORMAL, "Can_Gpt: Enabled notification for channel [%d]\n", chId);
+    #endif
+    #if defined (SOC_J721E) || defined (SOC_J7200) || defined (SOC_J721S2)  || defined (SOC_J784S4) || defined (SOC_J742S2)
+        countVal = GPTIMER_COUNT_VALUE_6_SEC_INPUT;
+    #endif
+    AppUtils_Printf(MSG_NORMAL, "Can_Gpt: Started Timer Channel [%d]\n", chId);
 
+    Gpt_StartTimer(chId, countVal);
 
-                AppUtils_Printf(MSG_NORMAL,
-                "CAN_APP: Message Id Received %x Message Length is %u\t \n",
-                CanIf_Mailbox->CanId, CanIf_PduInfoPtr->SduLength);
-                for (loopCnt = 0U; loopCnt < CanIf_PduInfoPtr->SduLength;
-                        loopCnt++)
-                {
-                    if (CanIf_PduInfoPtr->SduDataPtr[loopCnt] !=
-                        CanApp_InputData[loopCnt])
-                    {
-                        CanApp_TestPassed = E_NOT_OK;
-                        AppUtils_Printf(MSG_NORMAL,
-                        "CAN_APP: Transmitted and Received Data miss-match.\n");
-                        break;
-                    }
-                    else
-                    {
-                        CanApp_TestPassed = E_OK;
-                    }
-                }
-                AppUtils_Printf(MSG_NORMAL,
-                  "CAN_APP: Can Controller Instance MCAN %u \
-                  Internal LoopBack Mode Test Passed\n", ctlr_cnt);
-            }
-            else
-            {
-                CanApp_TestPassed = E_NOT_OK;
-                break;
-            }
-        }
+    while(1)
+    {
+        // if (chId == GptApp_NotifiedForInstFlag)
+        // {
+        //     GptApp_NotifiedForInstFlag = 0xFFFF;
+        //     BCAN_TX_0x3BA_APA1(txData);
+
+        //     status = Can_Write(hth, PduInfo);
+        //     if (status != E_OK)
+        //     {
+        //         AppUtils_Printf(MSG_NORMAL,
+        //         "CAN_APP: Error In Can_Write.\n");
+        //         CanApp_TestPassed = E_NOT_OK;
+        //     }
+        // }
     }
 }
 
diff --git a/mcusw/mcal_drv/mcal/examples/Can/soc/j721s2/mcu1_0/CanApp_Startup.c b/mcusw/mcal_drv/mcal/examples/Can/soc/j721s2/mcu1_0/CanApp_Startup.c
index 76b55920..8b3c2f98 100755
--- a/mcusw/mcal_drv/mcal/examples/Can/soc/j721s2/mcu1_0/CanApp_Startup.c
+++ b/mcusw/mcal_drv/mcal/examples/Can/soc/j721s2/mcu1_0/CanApp_Startup.c
@@ -80,11 +80,23 @@ uint32                      CanApp_InstanceSrcId[CAN_MAX_CONTROLLER];
 CanApp_IsrType              CanApp_Isr[CAN_MAX_CONTROLLER];
 /**< Associated ISR */
 uint32                      CanApp_RoutIntNumbers[CAN_MAX_CONTROLLER];
+uint32 GptAppStartup_EnaTimer[APP_GPT_TOTAL_TIMER_COUNT];
+uint32 GptAppStartup_IntNumbers[APP_GPT_TOTAL_TIMER_COUNT];
+uint32 GptAppStartup_TimerSrcId[APP_GPT_TOTAL_TIMER_COUNT];
+uint32 GptAppStartup_RoutIntNumbers[APP_GPT_TOTAL_TIMER_COUNT];
+GptApp_IsrType GptAppStartup_Isr[APP_GPT_TOTAL_TIMER_COUNT];
+static void GptAppStartup_ClearAnyOperationalTimers(void);
+static void GptAppStartup_SetClockSource4Timers(void);
+static void GptAppStartup_InterruptConfig(void);
+
 /**< Store the output interrupt number routed */
 extern Can_PduType          CanApp_Pdu, CanApp_Pdu1;
 extern Can_PduType          CanApp_Pdu2, CanApp_Pdu3, CanApp_Pdu4, CanApp_Pdu5;
 /**< Variable used for copying protocol data unit */
 extern uint8                CanApp_InputData[64U];
+extern uint8                txData[8U];
+extern const struct Gpt_ChannelConfigType_PC_s Gpt_ChannelConfig_PC[GPT_MAX_CHANNELS];
+
 /**< Variables which contains Can PDU data used in Can transmission */
 extern const Can_PduType    *PduInfo;
 /**< Variable which contains Can PDU data passed during Transmission */
@@ -99,6 +111,10 @@ void CanApp_Startup(void)
     Intc_Init();    /* Interrupt handler initialized, here as other functions
                      * can use API's to clear pending interrupts if any
                      */
+    GptAppStartup_ClearAnyOperationalTimers(); /* Clear MCU TIMER 0 only */
+    GptAppStartup_SetClockSource4Timers();
+    GptAppStartup_InterruptConfig();
+
     CanApp_InterruptConfig();
 
     /* Initialize counters, that would be required for timed operations */
@@ -109,10 +125,10 @@ void CanApp_Startup(void)
 
     /* Message for CAN-FD(MCU MCAN0 module) */
     /* Setting Up CAN FD Frame*/
-    CanApp_Pdu.id           = 0xA0 | 0x40000000U;
-    CanApp_Pdu.length       = 64U;
+    CanApp_Pdu.id           = 0x3BA | 0x40000000U;
+    CanApp_Pdu.length       = 8U;
     CanApp_Pdu.swPduHandle  = 1U;
-    CanApp_Pdu.sdu          = &CanApp_InputData[0U];
+    CanApp_Pdu.sdu          = &txData[0U];
 
     /* Message for CAN-FD(MCU MCAN1 module) */
     /* Setting Up CAN FD Extended Frame*/
@@ -132,11 +148,14 @@ void CanApp_Startup(void)
 
 void CanApp_BuildIntList(void)
 {
-    uint32 idx, flag, intNum;
+    uint32 idx, flag, intNum, timerDevId;
     const Can_ConfigType *Can_ConfigPtr;
     CanApp_IsrType pIsrHandler = NULL;
     uint32 canMaxControllerCnt = 0U;
     uint32 canDevId, routIntNum = 0U;
+    const Gpt_ChannelConfigType_PC *pChCfgPtr = NULL;
+    const Gpt_ConfigType  *pCfgPtr = &GptChannelConfigSet;
+
     /*
      * 1. Determine the number of timers used
      * 2. Build valid timer list
@@ -165,6 +184,265 @@ void CanApp_BuildIntList(void)
         CanApp_RoutIntNumbers[idx] = 0U;
     }
 
+    for (idx = 0U; idx < APP_GPT_TOTAL_TIMER_COUNT; idx++)
+    {
+        GptAppStartup_EnaTimer[idx] = 0U;
+        GptAppStartup_IntNumbers[idx] = 0U;
+        GptAppStartup_TimerSrcId[idx] = 0U;
+    }
+
+    for (idx = 0U; idx < pCfgPtr->channelCount; idx++)
+    {
+        pChCfgPtr = &Gpt_ChannelConfig_PC[idx];
+        flag = 0U;
+        routIntNum = 0U;
+        timerDevId = 0U;
+        switch(pChCfgPtr->channelId)
+        {
+#ifdef GptConf_GptChannelConfiguration_MCU_TIMER6
+            case GPT_CH_GPTIMER7:
+                intNum = APP_GPT_MCU_6_INT;
+                pIsrHandler = Gpt_Ch7Isr;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_MCU_TIMER7
+            case GPT_CH_GPTIMER8:
+                intNum = APP_GPT_MCU_7_INT;
+                pIsrHandler = Gpt_Ch8Isr;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_MCU_TIMER8
+            case GPT_CH_GPTIMER9:
+                intNum = APP_GPT_MCU_8_INT;
+                pIsrHandler = Gpt_Ch9Isr;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_MCU_TIMER9
+            case GPT_CH_GPTIMER10:
+                intNum = APP_GPT_MCU_9_INT;
+                pIsrHandler = Gpt_Ch10Isr;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER0
+            case GPT_CH_GPTIMER11:
+                intNum = APP_GPT_0_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_1_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch11Isr;
+                timerDevId = TISCI_DEV_TIMER0;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER1
+            case GPT_CH_GPTIMER12:
+                intNum = APP_GPT_1_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_2_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch12Isr;
+                timerDevId = TISCI_DEV_TIMER1;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER2
+            case GPT_CH_GPTIMER13:
+                intNum = APP_GPT_2_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_3_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch13Isr;
+                timerDevId = TISCI_DEV_TIMER2;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER3
+            case GPT_CH_GPTIMER14:
+                intNum = APP_GPT_3_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_4_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch14Isr;
+                timerDevId = TISCI_DEV_TIMER3;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER4
+            case GPT_CH_GPTIMER15:
+                intNum = APP_GPT_4_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_5_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch15Isr;
+                timerDevId = TISCI_DEV_TIMER4;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER5
+            case GPT_CH_GPTIMER16:
+                intNum = APP_GPT_5_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_6_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch16Isr;
+                timerDevId = TISCI_DEV_TIMER5;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER6
+            case GPT_CH_GPTIMER17:
+                intNum = APP_GPT_6_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_7_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch17Isr;
+                timerDevId = TISCI_DEV_TIMER6;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER7
+            case GPT_CH_GPTIMER18:
+                intNum = APP_GPT_7_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_8_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch18Isr;
+                timerDevId = TISCI_DEV_TIMER7;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER8
+            case GPT_CH_GPTIMER19:
+                intNum = APP_GPT_8_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_9_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch19Isr;
+                timerDevId = TISCI_DEV_TIMER8;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER9
+            case GPT_CH_GPTIMER20:
+                intNum = APP_GPT_9_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_10_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch20Isr;
+                timerDevId = TISCI_DEV_TIMER9;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER10
+            case GPT_CH_GPTIMER21:
+                intNum = APP_GPT_10_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_11_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch21Isr;
+                timerDevId = TISCI_DEV_TIMER10;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER11
+            case GPT_CH_GPTIMER22:
+                intNum = APP_GPT_11_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_12_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch22Isr;
+                timerDevId = TISCI_DEV_TIMER11;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER12
+            case GPT_CH_GPTIMER23:
+                intNum = APP_GPT_12_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_13_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch23Isr;
+                timerDevId = TISCI_DEV_TIMER12;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER13
+            case GPT_CH_GPTIMER24:
+                intNum = APP_GPT_13_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_14_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch24Isr;
+                timerDevId = TISCI_DEV_TIMER13;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER14
+            case GPT_CH_GPTIMER25:
+                intNum = APP_GPT_14_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_15_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch25Isr;
+                timerDevId = TISCI_DEV_TIMER14;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER15
+            case GPT_CH_GPTIMER26:
+                intNum = APP_GPT_15_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_16_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch26Isr;
+                timerDevId = TISCI_DEV_TIMER15;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER16
+            case GPT_CH_GPTIMER27:
+                intNum = APP_GPT_16_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_17_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch27Isr;
+                timerDevId = TISCI_DEV_TIMER16;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER17
+            case GPT_CH_GPTIMER28:
+                intNum = APP_GPT_17_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_18_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch28Isr;
+                timerDevId = TISCI_DEV_TIMER17;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER18
+            case GPT_CH_GPTIMER29:
+                intNum = APP_GPT_18_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_19_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch29Isr;
+                timerDevId = TISCI_DEV_TIMER18;
+                flag = 1U;
+            break;
+#endif
+#ifdef GptConf_GptChannelConfiguration_TIMER19
+            case GPT_CH_GPTIMER30:
+                intNum = APP_GPT_19_INT;
+                routIntNum = INTRTR_CFG_MAIN_DOMAIN_TIMER_20_OUT_INT_NO +
+                                INTRTR_CFG_START_LEVEL_INT_NUMBER;
+                pIsrHandler = Gpt_Ch30Isr;
+                timerDevId = TISCI_DEV_TIMER19;
+                flag = 1U;
+            break;
+#endif
+            default:
+                AppUtils_Printf(MSG_NORMAL, "Can_Gpt: ERROR Interrupt registration is not done for timer ID %d !!!\n", pChCfgPtr->channelId);
+                flag = 0U;
+            break;
+        }
+        if (0U != flag)
+        {
+            GptAppStartup_EnaTimer[pChCfgPtr->channelId] = 1U;
+            GptAppStartup_IntNumbers[pChCfgPtr->channelId] = intNum;
+            GptAppStartup_RoutIntNumbers[pChCfgPtr->channelId] = routIntNum;
+            GptAppStartup_TimerSrcId[pChCfgPtr->channelId] = timerDevId;
+            GptAppStartup_Isr[pChCfgPtr->channelId] = pIsrHandler;
+            flag = 0U;
+        }
+    }
+    
     for (idx = 0U; idx < canMaxControllerCnt; idx++)
     {
         flag = 0U;
@@ -208,6 +486,150 @@ void CanApp_BuildIntList(void)
     return;
 }
 
+static void GptAppStartup_InterruptConfig(void)
+{
+    uint32 idx;
+    OsalRegisterIntrParams_t    intrPrms;
+    OsalInterruptRetCode_e      osalRetVal;
+    HwiP_Handle hwiHandle;
+    struct tisci_msg_rm_irq_set_req     rmIrqReq;
+    struct tisci_msg_rm_irq_set_resp    rmIrqResp;
+    Int32 retVal;
+
+    for (idx = 0U; idx < APP_GPT_TOTAL_TIMER_COUNT; idx++)
+    {
+        if (0U != GptAppStartup_EnaTimer[idx])
+        {
+            if (0U != GptAppStartup_RoutIntNumbers[idx])
+            {
+                /* We will have to use the routed interrupt number
+                    subsequently */
+                GptAppStartup_IntNumbers[idx] = GptAppStartup_RoutIntNumbers[idx];
+
+                /* If the timer is not in MCU domain, the interrupt router will
+                    have to be configured */
+                /* Set the destination interrupt */
+                rmIrqReq.valid_params           = TISCI_MSG_VALUE_RM_DST_ID_VALID;
+                rmIrqReq.valid_params          |= TISCI_MSG_VALUE_RM_DST_HOST_IRQ_VALID;
+                rmIrqReq.src_id                 = GptAppStartup_TimerSrcId[idx];
+                rmIrqReq.global_event           = 0U;
+                rmIrqReq.src_index              = 0U;
+                rmIrqReq.dst_id                 = TISCI_DEV_MCU_R5FSS0_CORE0;
+                rmIrqReq.dst_host_irq           = GptAppStartup_RoutIntNumbers[idx];
+                rmIrqReq.ia_id                  = 0U;
+                rmIrqReq.vint                   = 0U;
+                rmIrqReq.vint_status_bit_index  = 0U;
+                rmIrqReq.secondary_host         = TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST;
+                
+                retVal = Sciclient_rmIrqSet(
+                             &rmIrqReq, &rmIrqResp, APP_SCICLIENT_TIMEOUT);
+                AppUtils_Printf(MSG_NORMAL, "Can_Gpt: rmIrqReq = %d\n",rmIrqReq);
+                // AppUtils_Printf(MSG_NORMAL,APP_NAME ": rmIrqResp = %d\n",rmIrqResp);
+                if(LLD_PASS != retVal)
+                {
+                    AppUtils_Printf(MSG_NORMAL, "Can_Gpt: Error in SciClient Interrupt Params Configuration!!!\n");
+                }
+            }
+            Osal_RegisterInterrupt_initParams(&intrPrms);
+            intrPrms.corepacConfig.arg          = (uintptr_t)GptAppStartup_Isr[idx];
+            intrPrms.corepacConfig.isrRoutine   = &GptApp_GptXIsr;
+            intrPrms.corepacConfig.priority     = 1U;
+            intrPrms.corepacConfig.corepacEventNum = 0U; /* NOT USED ? */
+            intrPrms.corepacConfig.intVecNum    = GptAppStartup_IntNumbers[idx];
+
+            osalRetVal = Osal_RegisterInterrupt(&intrPrms, &hwiHandle);
+            if(OSAL_INT_SUCCESS != osalRetVal)
+            {
+                AppUtils_Printf(MSG_NORMAL, "Can_Gpt: Error in OSAL Interrupt Registration !!!\n");
+                break;
+            }
+        }
+    }
+
+    return;
+}
+
+static void GptAppStartup_SetClockSource4Timers(void)
+{
+#ifdef NOT_YET
+/* The MMR has been fire walled, use SciClient to configure the clock source.
+ *  Use of Sciclient is not demonstrated in MCAL examples at this point
+ */
+
+    uint32 idx;
+
+    /* Un Lock MMR for MCU control MMR */
+    HW_WR_REG32_RAW(
+        (CSL_MCU_CTRL_MMR0_CFG0_BASE + CSL_MCU_CTRL_MMR_CFG0_LOCK0_KICK0),
+        0x68EF3490);
+    HW_WR_REG32_RAW(
+        (CSL_MCU_CTRL_MMR0_CFG0_BASE + CSL_MCU_CTRL_MMR_CFG0_LOCK0_KICK1),
+        0xD172BC5A);
+
+    for (idx = 0U; idx < APP_GPT_TOTAL_TIMER_COUNT; idx++)
+    {
+        if (0U != GptAppStartup_EnaTimer[idx])
+        {
+            if (idx < GPT_CH_GPTIMER5)
+            {
+                /* MCU Timers, 12.5 MHz clock to be sourced */
+                HW_WR_REG32_RAW((CSL_MCU_CTRL_MMR0_CFG0_BASE +
+                                CSL_MCU_CTRL_MMR_CFG0_MCU_TIMER0_CLKSEL +
+                                (idx * 0x04)),
+                                2U);
+            }
+        }
+    }
+
+#endif
+
+    return;
+}
+
+/** \brief Clear MCU TIMER 0 Timer */
+static void GptAppStartup_ClearAnyOperationalTimers(void)
+{
+    /* MCU Timer 0 is turned on by RBL and interrupts are enabled. We would
+     *  require to disable the interrupt and clear MCU timer, to ensure no
+     *  un-expected interrupts are received
+     *  Steps
+     *  1. Disable the interrupt in MCU TIMER 0
+     *  2. Stop the timer
+     *  3. Enable Soft Reset
+     *  4. Reset the timer
+     *  5. Clear the interrupt in VIM of R5F
+     *  6. Reset the clock source
+     */
+    /* Steps 1 to 2 */
+    HW_WR_REG32_RAW((CSL_MCU_TIMER0_CFG_BASE + TIMER_IRQENABLE_CLR),
+                    (TIMER_IRQENABLE_CLR_TCAR_EN_FLAG_MASK  |
+                        TIMER_IRQENABLE_CLR_OVF_EN_FLAG_MASK   |
+                        TIMER_IRQENABLE_CLR_MAT_EN_FLAG_MASK));
+    HW_WR_REG32_RAW((CSL_MCU_TIMER0_CFG_BASE + TIMER_TCLR), 0x0U);
+    /* Steps 3 to 4 */
+    HW_WR_REG32_RAW((CSL_MCU_TIMER0_CFG_BASE + TIMER_TSICR),
+                    TIMER_TSICR_SFT_MASK);
+    HW_WR_REG32_RAW((CSL_MCU_TIMER0_CFG_BASE + TIMER_TIOCP_CFG),
+                    TIMER_TIOCP_CFG_SOFTRESET_MASK);
+
+    /* Step 5 */
+    Intc_IntClrPend(APP_GPT_MCU_0_INT);
+
+    /* Step 6. Reset the clock source also */
+    /* Un Lock */
+    HW_WR_REG32_RAW(
+        (CSL_MCU_CTRL_MMR0_CFG0_BASE + CSL_MCU_CTRL_MMR_CFG0_LOCK0_KICK0),
+        0x68EF3490);
+    HW_WR_REG32_RAW(
+        (CSL_MCU_CTRL_MMR0_CFG0_BASE + CSL_MCU_CTRL_MMR_CFG0_LOCK0_KICK1),
+        0xD172BC5A);
+
+    /* Reset Clock source */
+    HW_WR_REG32_RAW((CSL_MCU_CTRL_MMR0_CFG0_BASE +
+                        CSL_MCU_CTRL_MMR_CFG0_MCU_TIMER0_CLKSEL),
+                    0U /* Reset Value */);
+}
+
 void CanApp_PlatformInit()
 {
     uint32 regVal = 0U;
diff --git a/mcusw/mcal_drv/mcal/examples/Can/soc/j721s2/mcu1_0/CanApp_Startup.h b/mcusw/mcal_drv/mcal/examples/Can/soc/j721s2/mcu1_0/CanApp_Startup.h
index 6686b312..e8f674f3 100755
--- a/mcusw/mcal_drv/mcal/examples/Can/soc/j721s2/mcu1_0/CanApp_Startup.h
+++ b/mcusw/mcal_drv/mcal/examples/Can/soc/j721s2/mcu1_0/CanApp_Startup.h
@@ -75,9 +75,12 @@
 #include "CanIf_Cbk.h"
 #include "EcuM_Cbk.h"
 #include "Dio.h"
+#include "Gpt.h"
 
 #include "app_utils.h"
 
+#include <hw_include/hw_types.h>
+#include <hw_include/lldr_timer.h>
 #include <hw_include/soc.h>
 #include <hw_include/lldr.h>
 #include <hw_include/lld_types.h>
@@ -126,9 +129,81 @@
 #define APP_MCAN_4_INT0         (CSLR_MAIN2MCU_LVL_INTRTR0_IN_MCAN4_MCANSS_MCAN_LVL_INT_0)
 #define APP_MCAN_9_INT0         (CSLR_MAIN2MCU_LVL_INTRTR0_IN_MCAN9_MCANSS_MCAN_LVL_INT_0)
 #define APP_MCAN_11_INT0        (CSLR_MAIN2MCU_LVL_INTRTR0_IN_MCAN11_MCANSS_MCAN_LVL_INT_0)
+#define GPTIMER_COUNT_VALUE_6_SEC_INPUT  (4026530) ///402653
+#define APP_GPT_TOTAL_TIMER_COUNT (30U)
+
+
+#define APP_GPT_MCU_0_INT   (CSLR_MCU_R5FSS0_CORE0_INTR_MCU_TIMER0_INTR_PEND_0)
+#define APP_GPT_MCU_1_INT   (CSLR_MCU_R5FSS0_CORE0_INTR_MCU_TIMER1_INTR_PEND_0)
+#define APP_GPT_MCU_2_INT   (CSLR_MCU_R5FSS0_CORE0_INTR_MCU_TIMER2_INTR_PEND_0)
+#define APP_GPT_MCU_3_INT   (CSLR_MCU_R5FSS0_CORE0_INTR_MCU_TIMER3_INTR_PEND_0)
+#define APP_GPT_MCU_4_INT   (CSLR_MCU_R5FSS0_CORE0_INTR_MCU_TIMER4_INTR_PEND_0)
+#define APP_GPT_MCU_5_INT   (CSLR_MCU_R5FSS0_CORE0_INTR_MCU_TIMER5_INTR_PEND_0)
+#define APP_GPT_MCU_6_INT   (CSLR_MCU_R5FSS0_CORE0_INTR_MCU_TIMER6_INTR_PEND_0)
+#define APP_GPT_MCU_7_INT   (CSLR_MCU_R5FSS0_CORE0_INTR_MCU_TIMER7_INTR_PEND_0)
+#define APP_GPT_MCU_8_INT   (CSLR_MCU_R5FSS0_CORE0_INTR_MCU_TIMER8_INTR_PEND_0)
+#define APP_GPT_MCU_9_INT   (CSLR_MCU_R5FSS0_CORE0_INTR_MCU_TIMER9_INTR_PEND_0)
+#define APP_GPT_0_INT       (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER0_INTR_PEND_0)
+#define APP_GPT_1_INT       (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER1_INTR_PEND_0)
+#define APP_GPT_2_INT       (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER2_INTR_PEND_0)
+#define APP_GPT_3_INT       (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER3_INTR_PEND_0)
+#define APP_GPT_4_INT       (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER4_INTR_PEND_0)
+#define APP_GPT_5_INT       (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER5_INTR_PEND_0)
+#define APP_GPT_6_INT       (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER6_INTR_PEND_0)
+#define APP_GPT_7_INT       (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER7_INTR_PEND_0)
+#define APP_GPT_8_INT       (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER8_INTR_PEND_0)
+#define APP_GPT_9_INT       (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER9_INTR_PEND_0)
+#define APP_GPT_10_INT      (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER10_INTR_PEND_0)
+#define APP_GPT_11_INT      (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER11_INTR_PEND_0)
+#define APP_GPT_12_INT      (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER12_INTR_PEND_0)
+#define APP_GPT_13_INT      (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER13_INTR_PEND_0)
+#define APP_GPT_14_INT      (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER14_INTR_PEND_0)
+#define APP_GPT_15_INT      (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER15_INTR_PEND_0)
+#define APP_GPT_16_INT      (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER16_INTR_PEND_0)
+#define APP_GPT_17_INT      (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER17_INTR_PEND_0)
+#define APP_GPT_18_INT      (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER18_INTR_PEND_0)
+#define APP_GPT_19_INT      (CSLR_MAIN2MCU_LVL_INTRTR0_IN_TIMER19_INTR_PEND_0)
+
+typedef union
+{
+    uint64 U64;
+    uint32 U32[2];
+    uint16 U16[4];
+    uint8 U08[8];
+
+    struct
+    {
+        uint8 APA_Rq_EPS_Ctrl :1;
+        uint8 APA_V_Rq_EPS_Ctrl :1;
+        uint8 ResBits00 :6;
+
+        uint8 APA_Angle_Target_0;
+        uint8 APA_Angle_Target_1;
+        uint8 ResByte3;
+        uint8 ResByte4;
+
+        uint8 APA_checksum :4;
+        uint8 APA_Roll_Count :4;
+
+        uint8 ResByte6;
+        uint8 ResByte7;
+    } Bits;
+
+} TU_APA1_MSG;
+
+struct {
+    struct {
+        struct {
+            uint8 Valid;
+            uint8 Apply;
+            uint16 Value;
+        } Angle;
+    } TX;
+} bcanData;
 
 void CanApp_CanXIsr(uintptr_t CanPtr);
 typedef void (*CanApp_IsrType)(void);
+typedef void (*GptApp_IsrType)(void);
 
 /* ========================================================================== */
 /*              Internal Function Declarations                                */
@@ -143,4 +218,7 @@ void SetupI2CTransfer(I2C_Handle handle,  uint32 slaveAddr,
                       uint8 *writeData, uint32 numWriteBytes,
                       uint8 *readData,  uint32 numReadBytes);
 void CanApp_SetupCanFrame(uint32 ctlr_cnt, uint8 *hth, uint32 *mask);
+#if defined (SOC_J721E) || (SOC_J7200) || (SOC_J721S2) || defined (SOC_J784S4) || defined (SOC_J742S2)
+void GptApp_GptXIsr(uintptr_t GptPtr);
+#endif
 #endif /* CANAPP_STARTUP_H_ */
diff --git a/mcusw/mcal_drv/mcal/examples_config/Can_Demo_Cfg/output/generated/soc/j721s2/mcu1_0/src/Can_Cfg.c b/mcusw/mcal_drv/mcal/examples_config/Can_Demo_Cfg/output/generated/soc/j721s2/mcu1_0/src/Can_Cfg.c
index c24e93e0..e9c47f5f 100644
--- a/mcusw/mcal_drv/mcal/examples_config/Can_Demo_Cfg/output/generated/soc/j721s2/mcu1_0/src/Can_Cfg.c
+++ b/mcusw/mcal_drv/mcal/examples_config/Can_Demo_Cfg/output/generated/soc/j721s2/mcu1_0/src/Can_Cfg.c
@@ -97,13 +97,13 @@
 static Can_BaudConfigType
     CanConfigSet_CanController_0_CanControllerBaudrateConfig_0 =
 {
-    1000U,      /* in Kbps */
+    500U,      /* in Kbps */
     8U,       /* Prop Segement value */
     6U,          /* Phase Segment 1 */
     5U,          /* Phase Segment 2 */
     1U, /* Sync jump width */
     20U, /* Sum of all timing parameters */
-    4U,   /* Controller BRP value for Baud */
+    8U,   /* Controller BRP value for Baud */
 	 /* Data phase Baudrate */
     {
         5000U,     /* in Kbps */
@@ -114,7 +114,7 @@ static Can_BaudConfigType
         5U, /* Sum of all timing parameters */
         4U,   /* Controller BRP value for Baud */
         180U, /* Specifies the Transceiver Delay Compensation Offset in ns */
-        (boolean)TRUE, /* Specifies if the bit rate switching shall be used */
+        (boolean)FALSE, /* Specifies if the bit rate switching shall be used */
     }
 };
 static Can_BaudConfigType
@@ -221,7 +221,7 @@ const struct Can_ControllerStruct_PC
 	CAN_CONTROLLER_INSTANCE_MCU_MCAN0,  /* Controller Instance */
 
 	
-	(boolean)TRUE,  /* CAN FD Mode Enable */
+	(boolean)FALSE,  /* CAN FD Mode Enable */
 };
 const struct Can_ControllerStruct_PC
     CanConfigSet_PC_CanController_1 =
@@ -237,7 +237,7 @@ const struct Can_ControllerStruct_PC
 	CAN_CONTROLLER_INSTANCE_MCU_MCAN1,  /* Controller Instance */
 
 	
-	(boolean)TRUE,  /* CAN FD Mode Enable */
+	(boolean)FALSE,  /* CAN FD Mode Enable */
 };
 const struct Can_ControllerStruct_PC
     CanConfigSet_PC_CanController_2 =
@@ -253,7 +253,7 @@ const struct Can_ControllerStruct_PC
 	CAN_CONTROLLER_INSTANCE_MCAN0,  /* Controller Instance */
 
 	
-	(boolean)TRUE,  /* CAN FD Mode Enable */
+	(boolean)FALSE,  /* CAN FD Mode Enable */
 };
 
 
@@ -350,7 +350,7 @@ static Can_MailboxType
     &CanConfigSet_PC_CanController_0,  /* Controller */	
 	NULL_PTR,  /* List of HW Filter structs */
     0U,   /* Hw Filter Count */
-    204U,   /* Padding value for CAN FD message */
+    0U,   /* Padding value for CAN FD message */
 	(boolean)FALSE,   /* CanHardwareObjectUsesPolling */
 };
 	
@@ -367,7 +367,7 @@ static Can_MailboxType
     &CanConfigSet_PC_CanController_0,  /* Controller */	
 	NULL_PTR,  /* List of HW Filter structs */
     0U,   /* Hw Filter Count */
-    204U,   /* Padding value for CAN FD message */
+    0U,   /* Padding value for CAN FD message */
 	(boolean)FALSE,   /* CanHardwareObjectUsesPolling */
 };
 	
@@ -384,7 +384,7 @@ static Can_MailboxType
     &CanConfigSet_PC_CanController_1,  /* Controller */	
 	NULL_PTR,  /* List of HW Filter structs */
     0U,   /* Hw Filter Count */
-    204U,   /* Padding value for CAN FD message */
+    0U,   /* Padding value for CAN FD message */
 	(boolean)FALSE,   /* CanHardwareObjectUsesPolling */
 };
 		
diff --git a/mcusw/mcal_drv/mcal/examples_config/Gpt_Demo_Cfg/output/generated/soc/j721s2/mcu1_0/src/Gpt_PBcfg.c b/mcusw/mcal_drv/mcal/examples_config/Gpt_Demo_Cfg/output/generated/soc/j721s2/mcu1_0/src/Gpt_PBcfg.c
index 762d7300..70c1cc2e 100644
--- a/mcusw/mcal_drv/mcal/examples_config/Gpt_Demo_Cfg/output/generated/soc/j721s2/mcu1_0/src/Gpt_PBcfg.c
+++ b/mcusw/mcal_drv/mcal/examples_config/Gpt_Demo_Cfg/output/generated/soc/j721s2/mcu1_0/src/Gpt_PBcfg.c
@@ -117,11 +117,11 @@ static CONST(Gpt_ChannelConfigType, GPT_CONFIG_DATA)
 
     [0U] =
     {
-        .channelMode = (GPT_CH_MODE_ONESHOT),
+        .channelMode = (GPT_CH_MODE_CONTINUOUS),
         /**< Gpt Channel Mode */
         .tickValueMax = 0xf0000000U,
         /**< Max Channel Tick Value */
-        .enableWakeupFlag = (uint8) TRUE,
+        .enableWakeupFlag = (uint8) FALSE,
         /**< Wakeup Enable Flag */
         .fnPtrNotifyFunction = Gpt_Channel_Notify12,
         /**< Notification Call Back function */

log:

CAN_APP: Sample Application - STARTS !!!
CAN_APP: Variant - Pre Compile being used !!!
Can_Gpt: rmIrqReq = 2
Can_Gpt: rmIrqReq = 2
Can_Gpt: rmIrqReq = 2
CAN_APP: Successfully Enabled CAN Transceiver MCU MCAN0!!!
CAN_APP: Successfully Enabled CAN Transceiver MCU MCAN1!!!
Can_Gpt: Enabled notification for channel [6]
Can_Gpt: Started Timer Channel [6]

CCS screenshot:

CAN sent message:

Many thanks!!

Alice