Hi.
I have noticed a problem with reading any address content in range
of memory mapped i2c-2 channel (0x4819c000 - 0x4819d000). In order to localize this issue I have modified one of the bare
metal examples from am335x StarterWare.
Actually what I do is:
125 /* Initialize console for communication with the Host Machine */
126 ConsoleUtilsInit();
127
128 /* Select the console type based on compile time check */
129 ConsoleUtilsSetType(CONSOLE_UART);
130
131 /* Enable IRQ in CPSR */
132 IntMasterIRQEnable();
133
134 /* Configures AINTC to generate interrupt */
135 I2CAINTCConfigure();
136
137 unsigned long pa = 0x4818C000;
138 ConsoleUtilsPrintf("addr %x\n", pa);
139 ConsoleUtilsPrintf("read %x\n", *((volatile unsigned long *)pa));
140 pa = 0x4819C000;
141 ConsoleUtilsPrintf("addr %x\n", pa);
142 ConsoleUtilsPrintf("read %x\n", *((volatile unsigned long *)pa));
What I see is
## Starting application at 0x80000000 ...
addr 4818c000
read 50461100
addr 4819c000
Looks like because exceptions are not configured it just hangs. When I tried MMU based code
with configured exceptions read from that addresses in range of 0x4819c000 - 0x4819d000 it
gives me data abort exception. Why?