My technical reference is the "TMS570LS31x/21x 16/32-Bit RISC Flash Microcontroller" manual.
I am in the process of trying to validate my implementation of the I/O Multiplexing and Control Module (IOMM) error handling. According to section 4.4.3 of the technical referenece an Address Error (occurs when there is a read or a write access to an un-implemented memory location) within the IOMM should generate an error signal that is mapped to the Error Signaling Module.
However, after executing some special code that generates an address error I notice that the "FAULT_STATUS_REG" changes to 0x000000A0. This confirmed that the error is being detected, but the associated ESM Status Register pin is not being asserted. After some debugging I realized that the write to the "ERR_ENABLE_REG" during my initialization routine was not modifying the register values. Here is a snippet of my code to initialize the Error Status Handling:
IOMM_Init(void){
IOMMREG->ERR_ENABLE_REG= 0x00000003; /* Enable Address and Protection Error Signaling */
ESMREGS->EPENACLR4 = 0x00000020; /* Disable the automatic nError Pin response */
ESMREGS->INTENASET4 = 0x00000020; /* Enable IOMM - Mux Config Error ESM Interrupts (Map to ESML) */
ESMREGS->INTLVLCLR4 = 0x00000020; /* Map to ESML */
I have two questions:
1) Any thoughts as to why the value of the Error Enable Register is still 0x00000000 after executing my init routine?
2) Is the Error Enable Register they only setting that would prevent the IOMM Address Error from generating an error signal within the ESM?