domingo, 8 de junio de 2014

El Internet de las Cosas, la placa Galileo de Intel y el uso de la GPIO

Estimados, en días pasados Felipe Galindo de Intel amablemente nos compartió la visión de Intel sobre el Internet de las cosas. Esta entrada pretende resalta los puntos mas relevantes de la charla y servirá para dejar evidencia de la trasnferencia de conocimientos para nuestro grupo. Se vale comentar y así enriquecer el contenido.



Extractos de:  la página IoT de Intel

"El mundo está en proceso de sufrir una drástica transformación desde sistemas aislados hacia dispositivos con conexión a Internet que pueden ingresar a la red y comunicarse con otros dispositivos y con la nube.
Comúnmente conocida como la Internet de las cosas (IoT), esta nueva realidad es posible gracias a la integración de un número cada vez mayor de dispositivos conectados, la economía de la nube para los datos y la realización de cálculos, y la aceleración análisis de datos a gran escala."



"En el nivel más básico, la (IoT) se compone de "cosas" que se conectan a Internet, integrandose a una mayor capacidad de cómputo, utilizando heramientas de análisis de datos para extraer información significativa. Por ejemplo, los equipos existentes en una fábrica ahora pueden compartir los datos con la nube. Mediante el análisis de estos datos, la empresa puede mejorar su operacion; luego extender esto a través de otras industrias y aplicaciones. El poder transformador de la (IoT) es claro; a medida que más cosas generan una gran cantidad de datos valiosos, la (IoT) está creciendo los almacénes de "Big Data". Según Gartner, 35ZB de los datos de las cosas generarán $ 2 billones en valor en 2020. Hoy en día, las empresas de todas las industrias están imaginando las soluciones de (IoT) que generarán ese valor ."


La placa de desarrollo Galileo de Intel


"Processor X1000 Quark
La nueva familia de productos del procesador Quark X1000, con núcleo pequeño y bajo consumo de energía, le permitirá a Intel extenderse a los nuevos segmentos de mercado de rápido crecimiento de la Internet de las cosas (IoT). El núcleo del procesador es una CPU Intel® Pentium® de 32 bits y un solo núcleo, compatible con arquitectura de conjunto de instrucciones (ISA) de una sola cadena y que opera a velocidades de hasta 400 MHz."

"La board Intel® Galileo es una board de microcontrolador con procesador de aplicaciones Intel® Quark SoC X1000. Es la primera board con arquitectura Intel® diseñada para ser compatible con pin de software y hardware con cubiertas diseñadas para el Arduino Uno* R3."

"Esta plataforma proporciona la facilidad del desarrollo de la arquitectura Intel a través de soporte para Microsoft Windows*, Mac OS* y los sistemas operativos de host, Linux*. También trae la simplicidad del software de entorno de desarrollo integrado (IDE) Arduino."

"A ello se suma que la board Intel Galileo es también compatible con el software de entorno de desarrollo integrado Arduino, lo que facilita la capacidad de uso y la introducción. Además de la compatibilidad de hardware y software Arduino, la board Intel Galileo tiene varios puertos de E/S de PC estándares y funciones para expandir el uso nativo y las capacidades más allá del ecosistema de cubiertas Arduino. En la board vienen incluidos una ranura mini PCI Express*, puerto Ethernet de 100 Mb, ranura Micro-SD, puerto serie RS-232, puerto de host USB, puerto de cliente USB y NOR Flash* de 8 MB."

Key components of the Arduino Intel Galileo board

In the following schematics you can see the locations of the key components for the Arduino Intel Galileo board.
Key components of the Arduino Intel Galileo board
  1. Ethernet Port: 10/100 Ethernet connector
  2. RS-232 Serial Port: 3-pin 3.5mm jack (not audio)
  3. RS-232: RS-232 transceiver
  4. USB 2.0 Client: USB Client connector (Micro-USB Type B)
  5. USB 2.0 Host: USB 2.0 Host connector (Micro-USB Type AB)
  6. SPI Flash: 8 MByte Legacy SPI Flash to store the firmware (or bootloader) and the latest sketch.
  7. SPI Flash Program Port: 7-pin header for Serial Peripheral Interface (SPI) programming
  8. Shield Interface: Complies with Arduino Uno Revision 3 shield pinout
  9. ADC: Analog to Digital converter
  10. Intel® Quark SoC X1000: 400 MHz 32-bit Intel® Pentium processor
  11. ICSP: 6-pin in-circuit serial programming (ICSP) header
  12. 256 MB DDR3 RAM: 256 MByte DRAM, enabled by the firmware by default
  13. Arduino Interface: Complies with Arduino Uno Revision 3 pinout
  14. JTAG Debug Port: 10-pin standard JTAG header for debugging
  15. GPIO Expander: GPIO pulse width modulation provided by a single I2C I/O expander
  16. Micro SD slot: Supports micro SD card up to 32 GBytes (Optional)
  17. 5V Power: The board is powered via an AC-to-DC adapter
  18. Voltage Regulator: Generates 3.3 volt supply
  19. Eth PHY: Ethernet Physical layer transceiver



Software Target Galileo

"Utilice el software de Arduino IDE para crear programas para Galileo 
llamados "Sketches". Para ejecutar un "Sketch" en el tablero, simplemente conecte una fuente de alimentación, conecte el puerto USB cliente de Galileo a su ordenador y cargue el "Sketch" utilizando la interfaz IDE. 

Como se muestra a continuación, el "Sketch" se ejecuta en el tablero de Galileo y se comunica con el núcleo de Linux en el firmware de la tarjeta mediante el adaptador de Arduino de E/S. 

Intel Galileo - Programming GPIO From Linux. Extracto de: Sergey's Blog

Most of GPIO capabilities of Galileo board are exposed through Linux Sysfs interface, and can be controlled using file based I/O. I will show how to use some of these capabilities using simple shell commands. Of course instead of shell you can implement I/O using file manipulations from your program written using your favorite programming language.

Digital GPIO - Sysfs Interface

GPIO Information
The following command gives information about GPIO in the system and shows if an IO port was allocated to a module or Sysfs (user).


root@clanton:~# cat /sys/kernel/debug/gpio
GPIOs 0-1, platform/sch_gpio.2398, sch_gpio_core:
GPIOs 2-7, platform/sch_gpio.2398, sch_gpio_resume:
GPIOs 8-15, intel_cln_gip_gpio:
gpio-8    (SPI_CS         ) out hi
gpio-10   (SPI_CS         ) out hi
gpio-13   (cy8c9540a-int  ) in  hi
GPIOs 16-55, cy8c9540a, can sleep:

As you can see from the output all the GPIOs of Galileo board is divided into 4 chunks:


1.- GPIOs 0-1 - Intel Quark X1000 - GPIO[9:8] pins. These are GPIO pins on Legacy I/O bridge. 

They are powered and active in S0 state only.



2.- GPIOs 2-7 - Intel Quark X1000 - GPIO_SUS[5:0] pins. These are GPIO pins on Legacy I/O 

bridge. They are powered and active in S3 (suspend) and S0 states.

3.- GPIOs 8-15 - Intel Quark X1000 - GPIO[7:0] pins. These are GPIO pins on GPIO controller. 
They are powered and active in S0 state only.

4.- GPIOs 16-55 - Cypress CY8C9540A I/O Expander

Exporting a GPIO Port to Sysfs

To make GPIO port controllable from sysfs you'll need to export it. This is done by writing GPIO 
port number to /sys/class/gpio/export:


root@clanton:~# echo -n "27" > /sys/class/gpio/export

When this operation completes successfully a directory corresponding to the GPIO port number 
will appear in sysfs. In this case /sys/class/gpio/gpio27. Once you finished working with I/O you 
should un-export it by writing the GPIO port number to /sys/class/gpio/unexport.


Cuestionario para estudio

No hay comentarios:

Publicar un comentario