I' ve been using Gumstix overo boards since 4 years now to run my blimp robots. It did an awesome job and I must thanks all the developpers from Gumstix for their great work.
I was using the Korebot2, from Kteam, which is based on a Verdex XL6P board runing a kernel 2.6 with Angstrom distribution.
I now switched to an Overo Firestorm board, running 3.2.1-linaro-omap developer image. At first everything seems to work perfectly out of the box : wifi, ntp, i2c-3, ADC... but running my main program (recompiled for the new board and OS) on the robots always makes the I2C bus crash!
I have 14 sensors on the bus (for example 8 sonars), each connected through a bus buffer du to the long distance from the master. I checked my pullup resistors, and, as the datasheet required, they are all at 330Ohms. I use a custom-made expansion board connected to a Pinto-TH one, on which I put a level shifter.
If I use my old board, without any modification to the robot bus and circuits, it works just perfect, but when I run it on the new device, syslog shows a lot of 'omap_i2c.3: controller timed out' until it crashes and then shows 'omap_i2c.3: timeout waiting for bus ready'. I saw that others experienced issue with the driver (kernel patch), but I shouldn't even get any timeout at first.
To test the bus out of my program I run at prompt: i2c-detect -y -r 3, and get the timeouts again.
Any suggestion to help me with that? I hope I made it clear and gave you guys enough info to understand it all.
I just wonder if anybody ever utilized the Cortex-M3 subsystem in the
OMAP4430 SoC. I could imagine to offload some real-time tasks to these
cores which would be normally done by an external microcontroller.
Well, switching in boot command the I2C speed to 100kHz seems to do it for now... I guess this was the default speed of the verdex i2c driver I was using... and my pull-up res. and capacitance were set accordingly.