Raspberry Pi® a fondo para desarrolladores. Derek MolloyЧитать онлайн книгу.
es posible que el lector sea un experto en la electrónica de bajo nivel, y que, o bien la programación de alto nivel, o bien el sistema operativo Linux, le causen dolores de cabeza. Y viceversa: podría ser todo un gurú de la programación, y no haber soldado un LED en toda su vida. El objetivo de este libro es llegar a todos los tipos de usuarios que estén interesados en interaccionar con el RPi y dar a cada uno la suficiente información sobre Linux, electrónica y software como para que puedan ser productivos, con independencia de su nivel previo de experiencia.
Cuándo utilizar el RPi
La plataforma RPi permite integrar magníficamente software de alto nivel con electrónica de bajo nivel en cualquier tipo de proyecto. Tanto si pretendemos desarrollar un sistema de domótica automatizado, un robot, una pantalla multimedia, una aplicación IoT, una máquina de vending o una obra de arte conectada a Internet, el RPi cuenta con la suficiente potencia de procesamiento para afrontar todo aquello que podamos exigir a un dispositivo empotrado.
La mayor ventaja que el RPi y otros dispositivos Linux empotrados presentan frente a los sistemas empotrados tradicionales, como Arduino, PIC o microcontroladores AVR, se pone de manifiesto cuando basamos nuestros proyectos en Linux. Por ejemplo, si construimos un sistema de automatización con el RPi y decidimos que determinada información esté disponible en Internet, no tenemos más que instalar el servidor web Nginx. Luego, podemos desarrollar scripts en el servidor o utilizar nuestro lenguaje de programación favorito para comunicar con nuestro sistema de domótica automatizado para capturar y compartir información. También es posible que nuestro proyecto exija un acceso remoto seguro. En tal caso, para instalar un servidor SSH (Secure Shell) no tendríamos más que ejecutar el comando Linux sudo apt install sshd, como veremos en el capítulo 2. Esto podría muy bien ahorrarnos semanas de trabajo de desarrollo. Además, tenemos la tranquilidad de saber que ese mismo software se ejecuta con plena seguridad en millones de máquinas por todo el mundo.
Linux proporciona también controladores para numerosos periféricos y adaptadores USB, lo que nos permite conectar cámaras, adaptadores WiFi y otros dispositivos comerciales de bajo coste directamente a nuestra plataforma sin necesidad de desarrollar software caro y complejo.
El RPi es también un magnífico dispositivo para reproducir vídeo de alta definición. Capacidad que debe a su procesador Broadcom BCM2835/6/7 diseñado para aplicaciones multimedia y a que incorpora una implementación hardware de los códecs H.264/MPG-4 y MPG-2/VC-1 (mediante una licencia adicional). Utilizar el RPi para la ejecución de aplicaciones multimedia, como el centro de entretenimiento doméstico Kodi2 (www.kodi.tv) para reproducir vídeo con resolución full-HD, goza de bastante popularidad.
Cuándo no utilizar el RPi
Linux no se diseñó como sistema operativo de tiempo real ni para procesamiento predecible. Esto resultaría problemático, por ejemplo, si pretendemos obtener muestras de un sensor cada millonésima de segundo exactamente. Si el núcleo se halla ocupado con una tarea diferente en el instante preciso de recogida de una muestra, no va a resultar fácil interrumpirlo. Por lo tanto, en su configuración predeterminada, el RPi no resulta una plataforma idónea para aplicaciones de sistemas en tiempo real. Existen versiones de Linux para aplicaciones en tiempo real, pero destinadas a desarrolladores de Linux muy experimentados, y cuyas capacidades en ese ámbito son limitadas. No obstante, el RPi se puede combinar con procesadores de servicio en tiempo real, donde desempeñaría la labor de "inteligencia central" del conjunto. Podemos establecer la conexión de tales microcontroladores de tiempo real con el RPi a través de buses eléctricos, como I2C UART o Ethernet, y dejar que el RPi actúe como procesador central en un sistema de control distribuido. Este concepto se describe en los capítulos 11, 12 y 13.
La plataforma RPi no es ideal para desarrollar proyectos que se tenga intención de comercializar. Raspberry Pi hace un uso amplio de software de código abierto, aunque se usan fragmentos de código propietario en la GPU, pero no es propiamente un hardware de código abierto. Los esquemas de las placas RPi se encuentran disponibles (tiny.cc/erpi102, por ejemplo), pero la documentación del hardware utilizado es escasa. Además, la licencia3 del bootloader de Broadcom indica explícitamente que solo se permite su distribución en código binario si “… va a servir para el desarrollo, la ejecución o el uso en un dispositivo Raspberry Pi”. No es probable que tal licencia se pueda transferir a un producto comercial diseñado por nosotros.
Como describimos anteriormente en este capítulo, la RPi Foundation se centra en la educación; así, la posible comercialización de un producto cae muy lejos de su ámbito. Si el lector planea desarrollar un proyecto de Linux empotrado con la vista puesta en comercializarlo, debería detenerse a examinar la plataforma BeagleBone, que está completamente basada en código abierto y recibe un soporte documental robusto de Texas Instruments. Además, obviamente, recomiendo al lector que adquiera mi libro Exploring BeagleBone, también editado por Wiley.
La documentación del RPi
En este libro integro mis experiencias de desarrollo con la plataforma RPi junto con materiales de apoyo relativos a Linux empotrado, programación y electrónica general, para crear una detallada guía de desarrollo. Sin embargo, simplemente no es posible abarcar todo en un solo libro, así que he evitado incluir información disponible en los documentos principales y los sitios web descritos en esta sección. El primer lugar en el que buscar documentación de apoyo es este sitio web:
❏Sitio web de la Raspberry Pi Foundation: en esta web se ofrece el principal soporte a la plataforma RPi, con blogs, guías de software, enlaces con la comunidad de usuarios y descargas para apoyar nuestros esfuerzos de desarrollo. Diríjase a www.raspberrypi.org.
Existe una enorme cantidad de documentación sobre la plataforma RPi, pero los documentos más importantes para este libro son los siguientes:
❏La documentación del Raspberry Pi: se trata de la documentación oficial de RPi, escrita por la Raspberry Pi Foundation. Incluye guías de introducción, guías de configuración, guías sobre las distribuciones Linux, etc. Diríjase a www.raspberrypi.org/documentation/.
❏Hoja de datos de dispositivos Broadcom BCM2835 ARM: es el documento principal que describe el procesador de la mayoría de los modelos de RPi (salvo RPi 2/3). Con una longitud de 200 páginas, proporciona una descripción técnica de la funcionalidad y las capacidades del procesador en las placas RPi. Diríjase a tiny.cc/erpi103. Existe también una importante fe de erratas en el sitio tiny.cc/erpi104.
❏El documento sobre BCM2836: este documento describe características del procesador en la placa RPi 2 y características relacionadas en el RPi 3. Se debe leer junto con el documento anterior de Broadcom sobre el BCM2835. Diríjase a tiny.cc/erpi105.
Hay varios sitios web claves para el aprendizaje de esta plataforma. En ellas encontramos una combinación de tutoriales, foros de discusión, librerías con código de ejemplo, distribuciones Linux y sugerencias de proyectos con las que estimular nuestra creatividad. Veamos una selección de dichas webs:
❏El sitio web de este libro: www.exploringrpi.com
❏Mi blog personal: www.derekmolloy.ie
❏El sitio web de eLinux.org: www.elinux.org
En el capítulo 2 se desarrolla la introducción a la plataforma software del RPi. El resto de este capítulo analiza el hardware de la plataforma RPi, explica la funcionalidad que ofrece, resume las especificaciones técnicas y proporciona algunos ejemplos de los tipos de periféricos y placas HAT que resultarían interesantes para el RPi.
El hardware del RPi
El núcleo