03 Oct 2013: 2nd revision, more hardware confirmed working

Status update at the PCB page). The 3-axis sensor has been confirmed as being a 2-axis MXC6225 sensor, and, through a small python program that opens the /dev/mxc622x entry and carries out a couple of ioctls, confirmed as working. Also the address of the I2C EEPROM has been confirmed (and the elinux.org EOMA68 specification updated accordingly). The reason for updating the specification is because the mistake was made in reading the AT24C64 datasheet: there is no point having a specification where the EEPROM's I2C address is impossible to match, with an address where there are simply no EEPROMs available on the market.

For USB, a mistake has been discovered in the schematics: there is a 1.5k pull-up resistor missing from the USBDP line. Currently there is a resistor precariously perched on top of the STM32F, wired between a USB cable that's soldered directly to the STM32F pins. The libopencm3 usbhid example was then uploaded, and the STM32F responded by turning into a mouse.

Next up was apalmer's audio patches to libopencm3, along with some gratefully-received demo code. libopencm3 as it stands does not have ISOCHRONOUS usb, nor proper support for USB attributes and descriptors: apalmer's patch adds this capability (USB IN only). The code was compiled and demonstrated as successfully working, by being able to record an (accidentally) reversed sine-wave which was generated by DMA reads off of the STM32F.

All in all this is extremely good progress. The challenging parts are going to be the speakers, microphone and the camera. The microphone should be reasonably straightforward: read the ADC and output it as data. Speakers: last time they were tried, the amplifier IC was overloaded - some care has to be taken here. The camera is quite involved: it needs to be powered up carefully (by programming the AXP209 to output 2.8V), then the Camera can be programmed over I2C. After that the Master Clock can be enabled at around 15mhz, and then data read back in a very fast interrupt handler and stored for transfer over USB. This is where it will get... interesting...