I have a SYS/BIOS project that starts up OK & a Task is created and run OK.
The first thing the Task does is to read the MAC address using the function EVMMACAddrGet()
In this function the first line is this:
macAddr[0] = (HWREG(SOC_CONTROL_REGS + CONTROL_MAC_ID_LO(addrIdx)) >> 8) & 0xFF;
When the H/W address is read (via the macro HWREG) a Data Abort Exception occurs.
I have tried other code & any H/W read using HWREG seems to cause a Data Abort Exception.
The Physical address of the register it is attempting to read is 0x44E10630.
If I use the Memory Bowser in Code Composer to inspect this address, all memory locations show up as ????????and a red message appears in the Console saying: "CortxA8: Trouble Reading Memory Block at 0x44e10630 on Page 0 of Length 0x1e0: (Error -1064 @ 0x6567206F) Attempted to access an unknown or invalid register. Confirm the register is valid and accessible, and retry the operation. (Emulation package 5.1.232.0)"
It seems that this memory is not visible to the CPU for some reason. Possible reasons I can think of are
(1) MMU or memory configuration not correct,
(2) Another type of .cfg file error.
(3) A dip switch setting on the EVM board not set correctly (unlikely as other non SYS/BIOS example project run OK).
(4) Using incorrect Hardware Register mapping file (i.e. the define for SOC_CONTROL_REGS or CONTROL_MAC_ID_LO are wrong for this processor type).
(5) ???
Can anyone spot which of these might be the cause, or offer another explanation, and how to fix this problem?
Thanks,
Declan Traill