Engineering:UDOO

From HandWiki

UDOO is a single-board computer with an integrated Arduino Due compatible microcontroller, designed for computer science education, the world of Makers and the Internet of Things.

The product was launched on Kickstarter in April 2013, reaching wide consensus. "The product line involves three single board computers – UDOO QUAD/DUAL (2013), UDOO NEO (2015), UDOO X86 (2016) – that differ over various aspects, plus the UDOO BLU and the set of UDOO BRICKS."[1]

UDOO is a development platform that merges a Dual or Quad Core ARM Freescale Cortex-A9 i.MX 6 CPU, that can run Linux or Android operating systems, and an Arduino Due compatible board with a dedicated ARM Atmel SAM3X8E CPU.

UDOO is a joint effort of AIDILAB srl and SECO USA Inc, from an idea of Antonio Rizzo, Maurizio Caporali and Daniele Conti, born in collaboration with a multidisciplinary team of researchers with expertise in interaction design, embedded systems, sensor networks and cognitive science.

History

Kickstarter campaign

The UDOO project was launched on Kickstarter on April 9, 2013 by AidiLab — a Siena University startup — and SECO - an embedded computing firm - and reached the goal of $27,000 in about 40 hours.[2][3] The goal was well exceeded as 4,172 backers pledged $641,614.[4]

Hardware

The UDOO board is equipped with two CPUs. The Freescale i.MX 6 is an ARM Cortex A9 processor based on ARM v7 instruction set. Next generation graphics and high-definition video are central in the i.MX 6 series. The i.MX 6 series supports up to 1080p60 video playback, enabling exceptional high-quality videos with low power consumption for devices playing high-definition content. The 3D graphics engine in the top of the line i.MX 6 Quad and i.MX 6 Dual processors are capable of providing up to 200 Mt/s, which enables ultra-vivid, realistic graphics critical for multimedia. These applications combine the power of the main cores with the until-now-untapped potential of the 3D engine to perform computational tasks.

Otherwise Atmel SAM3X implements real-time computing and allows full compatibility with Arduino Due prototyping board. With this solution UDOO can be used like an Arduino Due microcontroller and programmed in the same way.

They are both stand-alone with different clocks and no shared memory. They both process their tasks asynchronously without any kind of emulation.

They do however share some communication channels:

  • a UART Serial (used with Linux)
  • a USB OTG Bus (used with Android)
  • all the digital pins of the external Arduino pinout.

Processors

The i.MX 6 Dual/6 Quad application processors are the latest additions of Freescale Semiconductor to a growing family of multimedia-focused products offering high performance processing optimized for lowest power consumption. The i.MX 6 Dual/6 Quad processors feature Freescale's advanced implementation of the ARM Cortex-A9 core, which can be interfaced with DDR3-1066, LV-DDR3-1066 and LPDDR2-1066 (single and dual channel) DRAM memory devices.

Freescale i.MX 6

The i.MX 6[5] Dual/6 Quad Processor is based on the ARM Cortex A9 MPCore Platform, which has the following features:

  • ARM Cortex A9 MPCore Dual or Quad core CPU configurations (with TrustZone)
  • Symmetric CPU configuration where each CPU includes:
    • 32 Kbyte L1 Instruction Cache
    • 32 Kbyte L1 Data Cache
    • Private Timer and Watchdog
    • Cortex-A9 NEON MPE (Media Processing Engine) Co-processor.

The ARM Cortex A9 MPCore complex includes:

  • General Interrupt Controller (GIC) with 128 interrupt support
  • Global Timer
  • Snoop Control Unit (SCU)
  • 1 Megabyte unified L2 cache shared by all CPU cores (Dual or Quad)
  • Two Master AXI (64-bit) bus interfaces output of L2 cache
  • NEON MPE coprocessor

The i.MX 6 Quad processor makes use of dedicated Hardware accelerators in order to meet the targeted multimedia performance. The use of HW accelerators is a key factor inobtaining high performance at low power consumption numbers, while keeping the CPU core relatively free to perform other tasks.

The i.MX 6 Quad processor incorporates the following hardware accelerators:

  • VPU Video Processing Unit
  • Two IPUv3H — Image Processing Unit (version 3H)
  • GPU3Dv4 — 3D/2D Graphics Processing Unit (OpenGL ES 2.0), version 4
  • GPU2Dv2 — 2D Graphics Processing Unit (BitBlt).
  • GPU VG — OpenVG 1.1 Graphics Processing Unit
  • ASRC — Asynchronous Sample Rate Converter

Miscellaneous IPs and interfaces:

  • Three SSI that support I2S/AC97, up to 1.4 Mbit/s each
  • Enhanced Serial Audio Interface (ESAI), up to 1.4 Mbit/s each channel
  • Five UART, up to 4.0 Mbit/s each
  • RS232 interface
  • 9-bit RS485 multidrop mode
  • One of the five supports 8-wire (uart1) while the other four support 4-wire.
  • Five eCSPI (Enhanced CSPI).
  • Three I2C, supports 400 kbit/s
  • Gigabit Ethernet Controller (IEEE1588 compliant), 1Gbit/s/10/100 Mbit/s
  • Four Pulse Width Modulators (PWM)
  • System JTAG Controller (SJC)
  • GPIO with interrupt capabilities
  • 8x8 Key Pad Port (KPP)
  • Sony Philips Digital Interface (SPDIF), Rx and Tx
  • Two Controller Area Network (FlexCAN), 1 Mbit/s each
  • Two Watchdog timers (WDOG)
  • Audio MUX (AUDMUX)
Atmel SAM3X

Atmel’s SAM3X/A series is a member of a family of Flash microcontrollers based on the high performance 32-bit ARM Cortex-M3 RISC processor. It operates at a maximum speed of 84 MHz and features up to 512 Kbytes of Flash and up to 100 Kbytes of SRAM. The peripheral set includes a High Speed USB Host and Device port with embedded transceiver, an Ethernet MAC, 2x CANs, a High Speed MCI for SDIO/SD/MMC, an External Bus Interface with NAND Flash controller, 5x UARTs, 2x TWIs, 4x SPIs, as well as 1 PWM timer, 9x general-purpose 32- bit timers, an RTC, a 12-bit ADC and a 12-bit DAC. The SAM3X/A series is ready for capacitive touch thanks to the QTouch library, offering an easyway to implement buttons, wheels and sliders. The SAM3X/A architecture is specifically designed to sustain high speed data transfers. It includes a multi-layer bus matrix as well as multiple SRAM banks, PDC and DMA channels that enable it to run tasks in parallel and maximize data throughput. It operates from 1.62V to 3.6V and is available in 100- and 144-pin QFP and LFBGA packages. The SAM3X/A devices are particularly well suited for networking applications: industrial and home/building automation, gateways.

Processor connectivity

The Freescale i.MX 6 and the Atmel SAM3X are connected through a UART Serial Port embedded on the board. It works exactly like an Arduino connected to an external computer with a USB cable. The SAM3X and Linux communicate on a two way channel, exchanging messages with a tested baudrate of 115200.

This serial connection is also accessible from the external pins 0 and 1 of the Arduino compatible pinout. The SAM3X programming port is accessible in the same way as Arduino Due: via a USB-to-serial converter or directly on the external pinout. The serial UART is connected to the iMX 6 pins KEYROW0 and KEYCOL0. On the SAM3X side it is connected to pins URXD and UTXD. The shared serial is also available through the micro-USB plug CN6. By removing the J18 jumper, you can communicate on the same channel, which now becomes shared.

Memory

UDOO uses 4 Micron MT41J256M16RE-15E RAM modules (2Gbit for each module) for a total of 1GByte. The clock frequency is 400mhz for UDOO Dual and 528mhz for UDOO Quad.

The memory system consists of the following levels:

  • Level 1 Cache - 32KB Instruction, 32KB Data cache per each core.
  • Level 2 Cache - Unified instruction and data (1MByte)
  • On-Chip Memory
  • Boot ROM, including HAB (96 KB)
  • Internal multimedia / shared, fast access RAM (256KByte)
  • Secure/non-secure RAM (16 KB)

Networking

Ethernet

The MAC-NET core, in conjunction with a 10/100/1000 MAC, implements layer 3 network acceleration functions. These functions are designed to accelerate the processing of various common networking protocols, such as IP, TCP, UDP, and ICMP, providing wire speed services to client applications. UDOO uses KSZ9031RNX Ethernet transceiver. It is a completely integrated triple-speed (10BASE-T/100BASE-TX/1000BASE-T) Ethernet physical layer transceiver for transmission and reception of data on standard CAT-5 unshielded twisted pair (UTP) cable. The KSZ9031RNX provides the Reduced Gigabit Media Independent Interface (RGMII) for direct connection to RGMII MACs in Gigabit Ethernet processors and switches for data transfer at 10/100/1000 Mbit/s. The KSZ9031RNX reduces board costs and simplifies board layout by using on-chip termination resistors for the four differential pairs and by integrating an LDO controller to drive a low-cost MOSFET to supply the 1.2V core.

Wi-Fi Module

GWF-3M08 is a WLAN module supporting IEEE 802. 11 b/g/n standards with 6-pin connector supporting USB 2.0 /1.1 interface. This is a small form factor and low cost compact WLAN module designed for the wireless connectivity of products with embedded system. This module operates in 2.4 GHz ISM frequency band, it applies a highly integrated MAC/BBP and RF single chip RT5370 with 150Mbit/s PHY rate supporting. This module can be built-in other embedded applications such as IP Camera, IP set top box, GPS, Internet radio apparatus, it can be directly soldered on a main PCB.

Features:

  • 802.11b: 1, 2, 5.5, 11Mbit/s; 802.11g: 6, 9, 12, 24, 36, 48, 54Mbit/s
  • 802.11n: (20 MHz) MCS0-7, Support up to 72Mbit/s (40 MHz) MCS0-7, support up to 150Mbit/s
  • OFDM, Peak rate 150Mbit/s, Peak throughput 90Mbit/s.
  • Security support for 64/128 WEP, WPA, WPA2, TKIP, AES
  • Operates in 2.4 GHz frequency bands. Power Management
  • WPS and TX external control, WiFi direct supported

Peripherials and connectors

Front connectors and ports:

  • Speakers jack 3.5mm
  • Mic jack 3.5mm
  • USB 2.0 Host x2 type A
  • 10/100/Gigabit Ethernet RJ-45 connector
  • HDMI connector
  • USB Client microUSBconnector
  • i.MX 6 / SAM3X serial microUSB connector
  • RESET button
  • WAKE-UP button

Up-side connectors and ports:

  • CSI Camera port
  • eSATA port (UDOO quad only)
  • LVDS connector
  • Power-on LED
  • Alternative DC-IN connector
  • SAM3X SPI pins
  • USB WiFi module connector
  • Extra USB 2.0 Host port
  • Real Time Clock External Battery (3 Volts)
  • SD Reader
  • SAM3X JTAG header

Multimedia

GPU

Summary of features in the GPU3D includes:

  • OpenGL ES 2.0 compliance, including extensions; OpenGL ES 1.1; OpenVG 1.1
  • IEEE 32-bit floating-point pipeline
  • Ultra-threaded, unified vertex and fragment shaders
  • Low bandwidth at both high and low data rates
  • Low CPU loading
  • Up to 12 programmable elements per vertex
  • Dependent texture operation with high-performance
  • Alpha blending
  • Depth and stencil compare
  • Support for 8 fragment shader simultaneous textures
  • Support for 4 vertex shader simultaneous textures
  • Point sampling, bi-linear sampling, tri-linear filtering, and cubic textures
  • Resolve and fast clear
  • 8k x 8k texture size and 8k x 8k rendering target
  • GPU2D has the following features:
  • Bit BLT & stretch BLT
  • Rectangle fill and clear
  • Line drawing
  • High performance stretch and shrink
  • Mono expansion for text rendering
  • ROP2, ROP3, and ROP4
  • Alpha blending including Java 2 Porter-Duff compositing blending rules
  • Support rendering size of 32Kx32K
  • 90/180/270 degree rotation
  • Transparency by monochrome mask, chroma key, or pattern mask
  • Color space conversion between YUV and RGB
  • High quality image scaling, using up to 9x9 separable filter
LVDS panels

UDOO provides one of the two i.MX 6 LVDS outputs to the external pinout. This input is used to communicate RGB data and controls to external LCD displays with LVDS interface, or through LVDS receivers.

The LVDS port may be used as one single-channel output.

USB OTG - Android Accessory Mode

When you boot Android, the OTG BUS is switched to connect to the SAM3X; therefore, the connection is between the two processors. If you plug a USB cable to CN3 it doesn’t work since it is disconnected.

With this setup, the i.MX 6 can communicate with the SAM3X using the Android ADK protocol. To do this you must program the SAM3X with a sketch which includes specific libraries and installs an app on Android configured to use the ADK protocol.

Specifications

Summary

UDOO is based on a Dual or Quad core ARM cortex-A9 CPU delivering great performance on both Android and Linux OS, and a dedicated ARM processor for the GPIO. The specifications [6] are:

  • Freescale i.MX 6 ARM Cortex-A9 CPU Dual/Quad core at 1 GHz
  • Integrated GPU: each processor provides three separate accelerators for 2D, OpenGL® ES2.0 3D and OpenVG
  • Atmel SAM3X8E ARM Cortex-M3 CPU (same as Arduino Due)
  • RAM DDR3 1GB
  • 76 fully available GPIO
  • Arduino-compatible R3 1.0 pinout
  • HDMI and LVDS + Touch (7'' and 15'')
  • Ethernet RJ45 (10/100/1000 MBit)
  • WiFi module
  • Micro USB and Micro USB OTG
  • USB type A (x2) plus a supplementary USB key and a supplementary USB connector (requires a specific wire)
  • I/O analog audio
  • SATA (Quad-Core version only)
  • CSI Camera connection
  • Micro SD (boot device)
  • 6V to 18v power supply and external battery connector

Accessories

The available accessories[7] are:

  • MIPI 5 MP Camera module
  • MIPI 5 MP IR Camera module
  • Kit LCD 7" Touch
  • Kit LCD 15.6" Touch
  • Kit LCD 15.6"
  • Starter Kit (Cables Kit + Power Supply + Micro SD)
  • Cables Kit
  • Power Supply

Software

The Udoo board comes with two micro SD card (optional) with Android and Ubuntu Linux installed.

Development

Applications

See also

References

External links