Other Parts Discussed in Thread: HALCOGEN
Hi all,
I have a problem with the emifGetConfigValue function. I am reading in my software every 100ms the emif configuration register (else case). The activation of the 100ms is implemented via interrupt.
The software is working fine but after houres (1 up to 4h) a got a data abort.
In the data abort situation I read out the following infos:
LR Register (Stackpointer)
seteDataFaultAddress = _SL_Get_DataFault_Address();
seteDataFaultStatus = _SL_Get_DataFault_Status();
Both the stack pointer and the fault address are showing to one of the emif Register (red marked).
void emifGetConfigValue(emif_config_reg_t *config_reg, config_value_type_t type)
{
if (type == InitialValue)
{
config_reg->CONFIG_AWCC = EMIF_AWCC_CONFIGVALUE;
config_reg->CONFIG_SDCR = EMIF_SDCR_CONFIGVALUE;
config_reg->CONFIG_SDRCR = EMIF_SDRCR_CONFIGVALUE;
config_reg->CONFIG_CE2CFG = EMIF_CE2CFG_CONFIGVALUE;
config_reg->CONFIG_CE3CFG = EMIF_CE3CFG_CONFIGVALUE;
config_reg->CONFIG_CE4CFG = EMIF_CE4CFG_CONFIGVALUE;
config_reg->CONFIG_CE5CFG = EMIF_CE5CFG_CONFIGVALUE;
config_reg->CONFIG_SDTIMR = EMIF_SDTIMR_CONFIGVALUE;
config_reg->CONFIG_SDSRETR = EMIF_SDSRETR_CONFIGVALUE;
config_reg->CONFIG_INTMSK = EMIF_INTMSK_CONFIGVALUE;
config_reg->CONFIG_PMCR = EMIF_PMCR_CONFIGVALUE;
}
else
{
/*SAFETYMCUSW 134 S MR:12.2 <APPROVED> "LDRA Tool issue" */
config_reg->CONFIG_AWCC = emifREG->AWCC;
config_reg->CONFIG_SDCR = emifREG->SDCR;
config_reg->CONFIG_SDRCR = emifREG->SDRCR ;
config_reg->CONFIG_CE2CFG = emifREG->CE2CFG;
config_reg->CONFIG_CE3CFG = emifREG->CE3CFG;
config_reg->CONFIG_CE4CFG = emifREG->CE4CFG;
config_reg->CONFIG_CE5CFG = emifREG->CE5CFG;
config_reg->CONFIG_SDTIMR = emifREG->SDTIMR;
config_reg->CONFIG_SDSRETR = emifREG->SDSRETR;
config_reg->CONFIG_INTMSK = emifREG->INTMSK;
config_reg->CONFIG_PMCR = emifREG->PMCR;
}
}
My EMIF Clock frequency is 10MHz and I use the default settings from HalCoGen but I implemented a MAX_EXT_WAIT of 100.
Do you have any ideas ?
Best regards
Lars