Monday, October 6, 2014

Introduction to RIoTboard

I have this board for some months, finally decided to put some technical notes about the RIoTboard's peripherals and interfaces.

Main components:
- CPU: i.MX6 Solo @ 800 MHz, 512K L2 cache, 32K+32K I&D cache
- RAM: 1 GiB DDR3 @ 400 MHz (800 MT/s), 32-bit, single rank

- USDHC2: SD card (J6)
- USDHC3: MicroSD card (J7)

- UART1: Connected to OpenSDA debugger
- UART2: 3.3V serial console (J18)
- UART3: Expansion port (J13)
- UART4: Expansion port (J13)
- UART5: Expansion port (J13)
- I2C1: PMIC, audio codec
- I2C3: LVDS DDC, Expansion port (J13)
- I2C4: CSI, Parallel camera, Expansion port (J13)
- SPI1: Connected to OpenSDA debugger
- SPI2: Expansion port (J13)
- SPI3: Expansion port (J13)
- USB 2.0 OTG: OTG port (J11), the board can boot from this interface
- USB 2.0 Host: uses internal USB-hub to provide 4x host ports with over-current protection
- Ethernet: 10/100/1000 Gigabit ethernet (PHY address 0x04)
- Audio: I2S integrated audio codec with MIC preamp and HP amp, supports sample-rates 8-96 KHz, supports master-slave clocking, full-duplex mode. Beware that the SGTL5000 doesn't respond at all to I2C communication if the master clock is not running.
- HDMI: HDMI connector (J3) - the only port that has ESD-protection
- LVDS0: LVDS connector (J2)
- CSI: MIPI serial camera (J8)
- Parallel camera: Not sure whether this is MIPI-compliant (J9)
- JTAG: Debug interface with non-standard connector (J10), you can easily wire standard 20-pin ARM JTAG connector here

Boot sources:
They are selected by 8-way micro-switch SW1. Here's a list of some common boot configurations:

[00 xxxxxx] - Boot from fuses (Note: fuses are not programmed by default!)
[01 xxxxxx] - Boot from OTG (can be used with MFGtool for Windows or imx_boot for Linux)
[10 xxxxxx] - Internal boot (boots according to BOOT_CFG pins)
[11 xxxxxx] - Reserved

Here are all usable combinations (imho) for the Internal Boot:
[10 10X010] - MicroSD card (J7), normal boot, 1 delay cells, 1-bit, port = USDHC3
[10 10X110] - MicroSD card (J7), normal boot, 1 delay cells, 4-bit, port = USDHC3
[10 10X001] - SD card (J6), normal boot, 1 delay cells, 1-bit, port = USDHC2
[10 10X101] - SD card (J6), normal boot, 1 delay cells, 4-bit, port = USDHC2
[10 110011] - eMMC NAND, normal boot, 1-bit SDR, port = USDHC4
[10 110111] - eMMC NAND, normal boot, 4-bit SDR, port = USDHC4

Orient the PCB so that the imx6 is at the top side, and SW1 is bottom side. 0 means low switch position, 1 means high switch position.

The board has a pretty modern and fast Cortex-A9 CPU (if you have used Cortex-A8 boards in the past, you'll feel the difference instantly), and also the CPU is probably the single best documented modern ARM Cortex-A9 in the commercial world. The board has also good amount of system memory, flexible on-board audio, lots of connectivity and display options, low power consumption. All this can be yours for a price which is definitely in range of home experimenters (it currently retails for 70.49E at Farnell, which is about 89$ USD). Btw, the board was designed and manufactured by Embest Technologies, and I think they've done a great job with this design. As of today, Embest is acquired by Farnell.

All interfaces (except HDMI) are missing ESD protection (TVS diodes are not soldered, even if they're shown on the schematic). Taking into account that this board is intended to be attached to zillions of user devices, peripherals and what-not, for me this is a serious failure. Congratulations, you-re just about to fry 70 euro.

No comments:

Post a Comment