UrLab dispose de 10 Intel Galileo, entièrement compatibles Arduino (sketchs, shields…).

Au déballage

Avant de l’utiliser, il faut suivre le guide d’installation de la board et mettre à jour le firmware.

  • Getting started with Intel Galileo : https://communities.intel.com/docs/DOC-22204
  • Arduino IDE et drivers (dont update du firmware) : https://communities.intel.com/docs/DOC-22226

Tous les documents

Tous les documents relatifs à l’Intel Galileo (datasheet, quick guide, schematic…) peuvent être trouvés ici : https://communities.intel.com/community/makers/documentation/galileodocuments

Données techniques

Board

  • Processor: Intel Quark SoC X1000, 400Mhz 32-bit Intel Pentium instruction set architecture
    • 16Kb L1 cache
    • 512Kb embedded SRAM
    • 1 thread, 1 core, constant speed
    • ACPI compatible CPU sleep states supported
    • Integrated Real Time Clock (RTC), with an optional 3B "coin cell" battery for operations between turn on cycles
  • 10/100Mbps Ethernet connector
  • Full PCI Express mini-card slot, PCIe 2.0 compliant features
  • USB 2.0 host connector (micro-USB)
    • Support up to 128 USB end point devices
  • USB client connector (micro-USB)
    • Fully compliant USB 2.0 device controller
  • 10-pin standard JTAG header for debugging
  • Reboot button to reboot the processor
  • Reset button to reset the sketch and attached shields
  • Storage options:
    • 8Mb legacy SPI flash (mainly stores the firmware and latest sketch); between 256Kb and 512Kb dedicated to sketch storage
    • 512Kb embedded SRAM
    • 256Kb DRAM
    • Optional micro SD card, up to 32Gb of storage
    • USB storage works with any USB 2.0 compatible drive
    • 11Kb EEPROM (programmable via the EEPROM library)

Compatible with Arduino Uno shields

Galileo is compatible with Arduino Uno shields and is designed to support 3.3V or 5V shields, following the Arduino Uno Revision 3, including:

  • 14 digital input/output pins, of which 6 can be used as Pulse Width Modulation (PWM) outputs;
    • Each of the 14 digital pins on Galileo can be used as an input or output, using pinMode(), digitalWrite(), and digitalRead() functions.
    • The pins operate at 3.3 volts or 5 volts. Each pin can source a max of 10mA or sink a maximum of 25 mA and has an internal pull-up resistor (disconnected by default) of 5.6k to 10 kOhms.
  • A0 – A5 - 6 analog inputs, via an AD7298 analog-to-digital (A/D) converter (datasheet)
    • Each of the 6 analog inputs, labeled A0 through A5, provides 12 bits of resolution (i.e., 4096 different values). By default they measure from ground to 5 volts.
  • I²C* bus, TWI, with SDA and SCL pins that are near to the AREF pin.
    • TWI: A4 or SDA pin and A5 or SCL pin. Support TWI communication using the Wire library.
  • SPI
    • Defaults to 4MHz to support Arduino Uno shields. Programmable up to 25MHz.
    • Note: While Galileo has a native SPI controller, it will act as a master and not as an SPI slave. Therefore, Galileo cannot be a SPI slave to another SPI master. It can act, however, as a slave device via the USB Client connector.
  • UART (serial port) Programmable speed UART port (Pins 0 (RX) and 1 (TX))
  • ICSP (SPI) - a 6 pin in-circuit serial programming (ICSP) header, located appropriately to plug into existing shields. These pins support SPI communication using the SPI library.
  • VIN. The input voltage to the Galileo board when it's using an external power source (as opposed to 5 volts from the regulated power supply connected at the power jack). You can supply voltage through this pin, or, if supplying voltage via the power jack, access it through this pin.
    • Warning: The voltage applied to this pin must be a regulated 5V supply otherwise it could damage the Galileo board or cause incorrect operation.
  • 5V output pin. This pin outputs 5V from the external source or the USB connector. Maximum current draw to the shield is 800 mA
  • 3.3V output pin. A 3.3 volt supply generated by the on-board regulator. Maximum current draw to the shield is 800 mA
  • GND. Ground pins.
  • IOREF. The IOREF pin on Galileo allows an attached shield with the proper configuration to adapt to the voltage provided by the board. The IOREF pin voltage is controlled by a jumper on the board, i.e., a selection jumper on the board is used to select between 3.3V and 5V shield operation.
  • RESET button/pin
    • Bring this line LOW to reset the sketch. Typically used to add a reset button to shields that block the one on the board.
  • AREF is unused on Galileo. Providing an external reference voltage for the analog inputs is not supported.
    • For Galileo it is not possible to change the upper end of the analog input range using the AREF pin and the analogReference() function.

Compiler le cross-compileur sous GNU/Linux (Debian)

  • Basé sur https://communities.intel.com/servlet/JiveServlet/previewBody/21882-102-1-25153/Quark_BSPBuildGuide_329687_001.pdf
  • Testé sur une Debian 64 bits

Prérequis

  • 30 Go d’espace libre
  • les paquets suivants :
    • build-essential
    • gcc-multilib
    • git
    • diffstat
    • texinfo
    • gawk
    • chrpath
    • file
    • p7zip-full
  • avoir le fichier suivant : http://downloadmirror.intel.com/23171/eng/Board_Support_Package_Sources_for_Intel_Quark_v0.7.5.7z
  • avoir bash

Préparation de l’environnement

Il faut décompresser l’archive "Board_Support_Package_Sources_for_Intel_Quark_v0.7.5.7z" et l'archive "meta-clanton_v0.7.5.tar.gz" qu’elle contient. On lance l’exécution de "setup.sh" et enfin on set l’environnement.

Suite de commandes :

  • $~> 7z x Board_Support_Package_Sources_for_Intel_Quark_v0.7.5.7z
  • $~> cd Board_Support_Package_Sources_for_Intel_Quark_v0.7.5
  • $~/Board[...].5/> tar xvf meta-clanton_v0.7.5.tar.gz
  • $~/Board[...].5/> cd meta-clanton_v0.7.5
  • $~/Board[...].5/> ./setup.sh
  • $~/Board[...].5/> source poky/oe-init-build-env yocto_build

Compilation du SDK

Il suffit d'utiliser la commande bitbake. Attention, la commande va compiler tous les outils du SDK et prendra 30GO sur le disque dur !

  • $~> bitbake image-full -c populate_sdk

Installation

Il suffit d’installer le script "clanton-tiny-uclibc-x86_64-i586-toolchain-1.4.2.sh" du répertoire tmp/deploy/sdk.

  • $~> ./tmp/deploy/sdk/clanton-tiny-uclibc-x86_64-i586-toolchain-1.4.2.sh

Tester le compilateur

Dans un nouveau terminal bash, il faut changer l’environnement avec le script "environment-setup-i586-poky-linux-uclibc" du répertoire de l’installation. Ensuite, on peut utiliser ${CC} pour compiler.

  • $~> source /opt/clanton-tiny/1.4.2/environment-setup-i586-poky-linux-uclibc*
  • $~> ${CC} helloword.c -o helloworld

Les alias :

${CC} = i586-poky-linux-uclibc-gcc (le compilateur c) ${CXX} = i586-poky-linux-uclibc-g++ (le compilateur c++)

Divers

Lancer un serveur Telnet et FTP à partir d'un sketch arduino

Les options: le serveur telnet : http://www.busybox.net/downloads/BusyBox.html#telnetd le serveur tfp : http://www.busybox.net/downloads/BusyBox.html#ftpd Le code en c/c++ du sketch :

void setup() {
    system("telnetd -l /bin/sh"); // serveur telnet
    system("tcpsvd -vE 0.0.0.0 21 ftpd -w /tmp/"); // serveur ftp
}

void loop() {
    // put your main code here, to run repeatedly:   
}