This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM3358: Program crashes on read from I2C address

Part Number: AM3358


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?