# UDOO

UDOO è un single-board computer integrato a un microcontrollore compatibile con Arduino Due, concepito per l'educazione informatica, il mondo dei Maker e l'Internet of Things.
Il prodotto è stato lanciato su Kickstarter ad aprile 2013 raccogliendo vasto consenso. È disponibile in 3 versioni: UDOO Dual Basic, UDOO Dual, UDOO Quad, rispettivamente al prezzo di $99, $115 e $135.
Il single-board computer UDOO integra un processore ARM Freescale Cortex-A9 i.MX 6 Dual Core o Quad Core, con ottime performance sia su sistema operativo Android che su Linux, e un microcontrollore compatibile con Arduino 2 con un ARM dedicato Atmel SAM3X8E CPU.
UDOO è il risultato di un impegno congiunto di Aidilab srl e SECO USA Inc, in collaborazione con un gruppo di ricerca multidisciplinare con competenze in Interaction Design, tecnologie embedded, sensor network e scienze cognitive.

## Storia

La Campagna Kickstarter
Il progetto è stato lanciato su Kickstarter il 9 aprile 2013 da AidiLab -una start-up dell'Università di Siena- e da SECO - un'azienda produttrice di embedded computers-, ed ha raggiunto l'obbiettivo di 27 000 dollari in circa 40 ore. In 60 giorni di durata della campagna di crowdfunding ha raccolto 641 614 dollari da 4172 finanziatori in tutto il mondo.
UDOO è stato presentato con 12 livelli di offerta a cui era possibile aderire, a partire da 1 dollaro, con il quale si aveva accesso ad update esclusivi circa l'avanzamento del progetto, fino a 318 dollari, con i quali il supporter si aggiudicava una board Dual Core e una board Quad Core, entrambe con Wi-Fi, Ethernet, accessori e software pre-installato. Ciò significa che vi erano scelte adatte a qualunque budget e a qualunque livello di interesse.

## Hardware

UDOO board è equipaggiata con due CPU. Il processore Freescale i.MX 6 è un processore ARM Cortex A9 processor basato su set di istruzioni ARM v7. Grafiche di ultima generazione e video ad alta qualità sono centrale nella serie i.MX 6. La serie i.MX 6 supporta fino a 1080p60 video playback, permettendo eccezionali video ad alta qualità, con ridotto consumo di energia per dispositivo su cui girano contenuti ad alta definizione. Il motore grafico 3d dei processori di fascia alta i.MX 6 Quad e i.MX 6 Dual è capace di fornire fino a 200 Mt/s, la qual cosa permette grafiche molto vivide, realistiche, importanti per il multimedia. Queste applicazioni combinano il potere dei main core con il potenziale, non sfruttato sinora, del motore grafico 3d per eseguire compiti computazionali.
Atmel SAM3X implementa il real-time computing e permette piena compatibilità con la board di prototipazione rapida Arduino Due. In questo modo UDOO può essere usato come un Arduino Due e programmato allo stesso modo. Sono entrambi reciprocamente indipendenti, con clock differenti e nessuna memoria condivisa. Entrambi processano i loro compiti in modo asincrono senza nessun tipo di emulazione.
Condividono ad ogni modo alcuni canali di comunicazione:
* un seriale UART (usato con Linux)
* un USB OTG Bus (usato con Android)
* tutti i pin digitali su un pinout Arduino esterno

### Processori

I processori i.MX 6 Dual e Quad sono le ultime aggiunte di Freescale Semiconductor alla crescente famiglia di prodotti focalizzati sul multimedia, i quali offrono alte performance di processazione ottimizzata per ridotto consumo di energia. Il processore Dual o Quad Core i.MX 6 presenta l'implementazione avanzata di ARM Cortex™-A9 core progettato Freescale, il quale può interfacciarsi con DDR3-1066, LV-DDR3-1066 e dispositivi a memoria DRAM LPDDR2-1066 (canale singolo e doppio).

#### Freescale i.MX 6

Il processore Dual o Quad core i.MX 6[5] è basato su una piattaforma ARM Cortex A9 MPCore™, la quale ha le seguenti caratteristiche:
* ARM Cortex A9 MPCore™ Dual or Quad core CPU configurations (with TrustZone)
* Configurazione CPU simmetrica, dove ogni CPU include:
** 32 KB L1 Instruction Cache
** 32 KB L1 Data Cache
** Timer privato e Watchdog
** Cortex-A9 NEON MPE (Media Processing Engine) co-processore.
Il complesso ARM Cortex A9 MPCore™ include:
General Interrupt Controller (GIC) con 128 interrupt support Global Timer Snoop Control Unit (SCU) 1 Megabyte L2 cache unificato e condiviso da tutti i core della CPU (Dual or Quad) Two Master AXI (64 bit) bus interfaces output di L2 cache NEON MPE coprocessor

#### Atmel SAM3X

L'Atmel SAM3X serie A è un membro di una famiglia di microcontrollori Flash basati sull'alta performance del processore a 32 bit ARM Cortex-M3 RISC. Esso opera alla velocità massima di 84 MHz e presenta fino a 512 Kbytes di Flash e fino a 100 Kbytes of SRAM. L'insieme delle periferiche include un High Speed USB Host e una Device port, un Ethernet MAC, 2x CANs, un High Speed MCI per SDIO/SD/MMC, un External Bus Interface con NAND Flash controller, 5x UARTs, 2x TWIs, 4x SPIs e un 1 PWM timer, 9x timer a 32 bit generici, un RTC, un 12 bit ADC e un 12 bit DAC. L'Atmel SAM3X serie A è compatibile con il touch capacitivo grazie alla libreria QTouch, permettendo di implementare bottoni, ruote e slider. L'architettura SAM3X/A è disegnata specificamente per supportare trasferimento dati ad ata velocità. Esso include un multi-layer bus matrix e SRAM banks multipli, canali PDC e DMA che permettono che esso esegua compiti in parallelo e massimizzi il volume di produzione dati. Esso opera da 1,62 V a 3,6 V ed è disponibile in 100- e 144-pin QFP e pacchetti LFBGA. I dispositivi SAM3X/A sono particolarmente adatta per applicazioni di networking: industrial, domotica, gateways.

### Connettività processori

I processori Freescale i.MX 6 e Atmel SAM3X sono connessi attraverso una porta seriale UART incorporata dentro la board. Funziona esattamente come un Arduino 2 connesso a un computer esterno tramite presa USB. Il SAM3X e Linux comunicano su un canale a doppia via, scambiandosi messaggi con un baudrate testato di 115200.
Questa connessione seriale è anche accessibile dai pin esterni 0 e 1 del pinout compatibile con Arduino. La porta di programmazione SAM3X è accessibile allo stesso modo di Arduino 2: attraverso un convertitore USB a seriale, oppure direttamente sul pinout esterno. La UART seriale è connessa ai pin iMX 6 KEYROW0 e KEYCOL0. Sul lato SAM3X è connessa ai pin URXD e UTXD. La seriale condivisa è anche accessibile attraverso micro-USB plug CN6. Rimuovendo il jumper J18, puoi comunicare sullo stesso canale, che ora diventa condiviso.

### Memoria

UDOO usa moduli Ram 4 Micron MT41J256M16RE-15E RAM (2 Gbit per ogni modulo) per un totale di 1 GB. La frequenza di clock è 400 Mhz per UDOO Dual e 528mhz per UDOO Quad.
Il sistema di memoria consiste dei due livelli seguenti:
* Level 1 Cache - 32KB Instruction, 32 kB Data cache per ogni core.
* Level 2 Cache - Istruzioni e dati unificati (1 MByte)
* On-Chip Memory
* Boot ROM, include HAB (96 kB)
* Internal multimedia / shared, fast access RAM (256 KB)
* Secure/non-secure RAM (16 kB)
Specifiche
UDOO è basata su una board Dual o Quad Core ARM Freescale Cortex-A9 i.MX.6 CPU con ottime performance sia su Android OS che Linux OS, e un processore ARM dedicato per le GPIO. Le specifiche sono:
* Freescale i.MX 6 ARM Cortex-A9 CPU Dual/Quad core a 1 GHz
* GPU integrato: ogni processore fornisce tre acceleratori separati per 2d, OpenGL® ES2.0 3D e OpenVG™
* Atmel SAM3X8E ARM Cortex-M3 CPU (come Arduino Due)
* RAM DDR3 1GB
* 76 GPIO
* R3 1.0 pinout compatibile con Arduino
* HDMI e LVDS + Touch (7" e 15")
* Ethernet RJ45 (10/100/1000 MBit)
* modulo Wi-Fi
* Micro USB e Micro USB OTG
* USB tipo A (x2) oltre a un USB supplementare con un connettore USB aggiuntivo
* Entrata e uscita audio analogica
* SATA (solo versione Quad Core)
* Connettore camera CSI
* Micro SD (dispositivo di boot)
* alimentazione da 6 V a 18 v e connettore per batteria esterna
Accessori
Gli accessori disponibili sono:
* MIPI 5 MP modulo Camera
* MIPI 5 MP IR modulo Camera
* Kit LCD 7" Touch
* Kit LCD 15.6" Touch
* Kit LCD 15.6"
* Starter Kit (Cables Kit + Alimentatore + Micro SD)
* Cables Kit
* Alimentatore