MPC5748 generates IOVR1 error

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

MPC5748 generates IOVR1 error

530件の閲覧回数
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 件の賞賛
3 返答(返信)

517件の閲覧回数
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 件の賞賛

508件の閲覧回数
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;

}

タグ(1)
0 件の賞賛

495件の閲覧回数
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 件の賞賛