I just wanted to make a comment about SPI buss contention.
I've had a lot of trouble with this in the past with Rduinos, as some of the 3rd party libraries don't properly release the SPI buss after using it. However, with AVR, it's usually easy to fix, by simply adding a patch to guarantee that all device CS lines are pulled high before any device tries to use the SPI buss.
However, I am proceeding to get the OV7670 camera system working with my Teensy3.1 board [ARM processor]. It is all working fine with the mega1284 chip now [OV7670, SPI RAM, and ST7735 1.8" SPI Color LCD], but it's very slow.
On switching over to the Teensy3.1 however, there are "extremely" serious SPI buss contention problems. The Teensy guy has pushed the ST7735 library [a patched version of Adafruit_ST7735] so far towards speed-optimization that it won't allow my SPI RAM chips to play on the same buss [T3.1 only has 1 SPI port]. So, I am currently reworking the SPI libraries that he patched for the ARM chip.
Clearly, the Teensy guy is a one-man army and appears to be completely overloaded, but here you're all working as a big team - luckily. So my suggestion is that while you guys are developing and optimizing SPI code using interrupts, DMA, etc for fast ILI9341 and ST7735 display updates, that you also pay "special attention" to allowing other devices to use the same SPI buss when it's their turn.
So far with the T3.1, the only way I can see to do this is to completely undo the SPI peripheral setup back to the reset condition when the SPI RAM chips use the buss, and then reconfigure it again to the optimized setup to use the LCD. Big PITA. Once you lock in FIFO loading, interrupts, and automatic toggling of CS,DC lines, you're kind of stuck. I imagine I'll have to use double-buffering of the data ....
OV7670 image data [256KB] -> SPI RAM -> smallish ARM RAM-buffer -> LCD
Back and forth, back and forth SPI reconfiguration, with the last 3 steps repeated in a loop. And I'm sure I'll have an even worse problem when I try the ILI9341 LCD.
Even in the Rduino world, people are burned by this problem every day, but it's a lot worse here.
EDIT:
A further note - the Teensy libraries have next to zero useful commenting, so it's a trial to figure out what many functions are supposed to even do. I hope you guys do better commenting, since this whole thing is for the wider dissemination.