I have been using iMX6Q for a while now - mostly using a Sabrelite board.
We use Freescale latest LTIB BSP with linux 3.0.35.
My company now have their own custom board which was based on the ARM2 board design, and for the board bring up, the reference linux kernel configuration we used was as well the ARM2 configuration.
During and after the board bring up, we noticed many crashes with varying symptoms, all look like some sort of memory corruption. (Invalid instructions, Page table corruption, etc...). Some unexplained hangs were noted as well.
So far we discovered that these crashes are related to:
1, The rate of hardware interrupts (no matter what was their origin: i2c, mmc, usb) where low rate=LESS crashes, high rate=MORE crashes, very high rate=LESS crashes.
2. A function in the kernel called arch_idle_with_workaround(), in system.c,
We managed to overcome the problem by using a newer revision of the iMX (1.2 or AC), or using the previous silicon (rev1.1) by running enough processes so that the processor won't become "idle" as often.
What puzzles me is why we see these crashes on our board, but not on the Sabrelite (which is of rev 1.0 or rev 1.1)?
I suspect it is one of the following:
1. We have been using the ARM2 linux configuration as reference, so that perhaps we missed kernel updates which are not affecting the ARM2 configuration as it is not a commonly used board.
2. We have a mismatch with our clock configuration between the kernel and the board (i.e. DDR clocks).
Can anyone assist?
Can you suggest other things we should check?
And generally speaking, is it safe to use the linux kernel ARM2 configuration on the new Freescale LTIB releases?
* We have JTAG gear and software (DSTREAM/DS5), but failed to use it so far for debugging the processor on our board.