MPC5748 generates IOVR1 error

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

MPC5748 generates IOVR1 error

486 Views
wenfengyao
Contributor II

All packets with 16 ids CAN be sent, ok, and an IOVR1 error will be reported at 17. The interval between sending each ID is 100ms. Each ID uses a different messagebox.

wenfengyao_0-1676858667293.jpeg

After the For loop, run again and immediately enter the IOVR1 handle

wenfengyao_1-1676858712476.jpeg

How do I locate and analyze the IOVR1 error?

0 Kudos
3 Replies

473 Views
PetrS
NXP TechSupport
NXP TechSupport

Hi,

Instruction Fetch Error report in this case means that there was bus termination error during fetching of instruction. MCSRR0 shows address 0x02DE015A which is unimplemented address space. This leads to machine check exception IVOR1 and IF in MCSR is set.
- Check if size of stack is sufficient. 
- Try to disable both instruction and data cache to confirm that this is not related to some coherency issues.
- If it is possible, try to disable unnecessary features/functions in your code to make the project as simple as possible. If it helps, then enable the functions one by one to see what makes the difference.

BR, Petr

 

0 Kudos

464 Views
wenfengyao
Contributor II

- Check if size of stack is sufficient. 

  • Stack adequate, no overflow


- Try to disable both instruction and data cache to confirm that this is not related to some coherency issues.

  • The cache function is not enabled and is not used


- If it is possible, try to disable unnecessary features/functions in your code to make the project as simple as possible. If it helps, then enable the functions one by one to see what makes the difference.

  • Disable code found I2C initialization function I2C_DRV_MasterInit masked, there will be no feedback issues. At the same time, I did a test, open I2C initialization function I2C_DRV_MasterInit, and mask all applications that use I2C function, there will still be the problem of feedback.

The following is the i2c initialization code

/****************************************************************************

*      Macro Definitions

*****************************************************************************/

#define    IICHAL_CHANNEL_MAX_NUM        1u

/*****************************************************************************************

*      Internal Variable Definitions

******************************************************************************************/

i2c_master_state_t i2c1MasterState;

 

/*****************************************************************************************

*      Global Variable Definitions

******************************************************************************************/

const uint32                                              IicInstanceConfig [IICHAL_CHANNEL_MAX_NUM] =

{

        INST_I2C1,

};

 

const i2c_master_user_config_t*           IicUserConfig [IICHAL_CHANNEL_MAX_NUM] =

{

        &i2c1_MasterConfig0,

};

 

const i2c_master_state_t*                       IicMasterConfig [IICHAL_CHANNEL_MAX_NUM] =

{

        &i2c1MasterState,

};

 

Std_ReturnType IicHal_MasterInit(IicHal_IdType Id)

{

#if(IICHAL_DEBUG_1 == STD_ON)

        if(Id < IICHAL_CHANNEL_MAX_NUM)

#endif

        {

        if( I2C_DRV_MasterInit( IicInstanceConfig[Id],IicUserConfig[Id],IicMasterConfig[Id] ) == STATUS_SUCCESS )

                 return      ERR_FLAG_OK;

        }

        return      ERR_FLAG_FAULT;

}

Tags (1)
0 Kudos

451 Views
PetrS
NXP TechSupport
NXP TechSupport

Hi,

so try to step through IicHal_MasterInit inside functions within debugger and try to locate the line when it goes away.

BR, Petr

0 Kudos