Embebidos Sistemas Linux Para - SASE

Transcription

Linux parasistemasembebidosIng. Lucas ChiesaFacultad de IngenieríaUniversidad de Buenos Aires

¿Qué es?Según Wikipedia:Linux embebido o empotrado (en inglés:Embedded Linux) se refiere al uso delsistema operativo Linux en un sistemaembebido, como por ejemplo PDA, teléfonosmóviles, robots, enrutadores / servidores,dispositivos electrónicos y aplicacionesindustriales con microcontroladores ymicroprocesadores.

¿Qué es un sistema embebido? Durante el SASE deben haber escuchadovarias definiciones. Podríamos preguntarle a un taxista,seguro que cada uno tiene la suya.

¿Qué es Linux? Es un Kernel libre para un SistemaOperativo. En forma sencilla podemos decir que secompone de un scheduler, un manejadorde memoria, soporte de red y muchosmuchos drivers. Usando Linux, se crean muchos SOs. Distribuciones de GNU/LinuxAndroidMer (ex MeeGo, ex Moblin Maemo)TizenFirefox OS / Chrome OSSO diseñados para una aplicación específica.

Si es gratis es malo Lamentablemente es un mito muyarraigado. Hay métodos para estimar el costo deproducir un paquete de software. Para producir el Kernel 2.6.35: Se necesitan 474 programadores trabajando 16 años a un costo total de U S 1.372.340.206Si, claro.

¿Cómo es el modelo de desarrollo? Se produce un Kernel nuevo cada 80 díasaproximadamente. Suficientemente rápido para que no se pierdaesfuerzo actualizando Kernels viejos. Suficientemente lento para poder revisar ycorregir las nuevas versiones. Cada release es mantenida por el "stableteam" durante dos ciclos. Algunaversiones son mantenidas por un año omás.

¿Qué tan rápido 2012-01-043.237,62615,004,006 Actualmente se incorporan casi 5 parches por horaal Kernel.

¿Y si queremos algo más estable? Los fabricantes de embebidos tienennecesidades especiales. Debido a esto se mantenían muchoscambios específicos fuera del árbol. Necesitan estabilidad, pero no"Enterprise". Crearon The embedded long-termsupport initiative. El primero que adoptaron es 3.0, núcleo de ICS.

¿Quién desarrolla Linux? El Kernel 3.2 tuvo cambios de 1316personas y participaron 226 empresas. 1/3 de los participantes contribuyen 1único parche. En los últimos 5 años, el 30% de losdesarrolladores contribuyó con el 20% deltrabajo. El 75% de los desarrolladores del Kernelson contratados para eso.

¿Quién desarrolla Linux?

¿Quién revisa los cambios? Cada commit ( decenas de miles porversión) es revisado antes de seraceptado. Existen más de 100 grupos encargadosde cada subsistema, cada uno con unresponsable. El responsable firma el parche paramarcarlo como aprobado. De cada parche se puede rastrear el autory la cadena de revisión.

¿Para qué usan Linux?

¿Para qué usan Linux?

¿Para qué usan Linux?

¿Para qué usan Linux?

¿Para qué usan Linux?

¿Para qué usan Linux?

¿Para qué usan Linux?

¿Para qué usan Linux?

¿Para qué usan Linux?

¡Genial! ¡Quiero uno! Ahora que ya los convencí de usar Linuxen su próximo dispositivo: ¿Qué tengo que hacer? ¿Cómo lo hago? ¿Qué herramientas existen?)

Tareas que se necesitan realizar. BSP: Necesitamos poder bootear Linux ennuestra placa. Muchas veces provisto porel fabricante del procesador. Desarrollo de la aplicación. ¿Quéqueremos que haga nuestro dispositivo? Integración del sistema. ¿Cómo juntamostodo y lo dejamos listo para usar?

BSP (Board Support Package) Como parte del BSP, podemos necesitarhacer nuevos drivers para el Kernel. Drivers para Linux Embebido. Hoy, 10:50. Obviamente el BSP va a dependerfuertemente de la arquitectura en la queestemos trabajando. Linux embebido sobre ARM (Viernes, 9:00) Linux embebido sobre Atom (Viernes, 10:50)

Plataformas Podemos diseñar nuestro propio hardwareo usar plataformas comerciales. Las plataformas comerciales reducenmucho la complejidad del desarrollo delproducto. Algunas pueden servir para nuestro propiodiseño, si las adaptamos a nuestrasnecesidades.

Beagle Board

Panda Board

Raspberry PiRaspberry Pi

Gumstix

Apexar

Desarrollo de la aplicación Limitados por los recursos de nuestrosistema. Podemos hacer toda la aplicación en C. O usar lenguajes de alto nivel comoPython. En definitiva, estamos haciendo unaaplicación para Linux. Hay muchos lenguajes, herramientas, toolkitsgráficos que podemos usar. Esta es una de las ventajas de usar Linuxpara nuestro sistema.

Integrando el sistemaAp 1Biblioteca 1Ap 2Ap 3Biblioteca 2Librería de CKernelBootloaderHardware

¿Cómo integrar el sistema? Usamos una distribución para embebidos. Ängstrom EmDebian Ubuntu (ARM) Armamos nuestra propia distribución. Usando herramientas comerciales. Usando herramientas comunitarias.

Herramientas comerciales Principales empresas: WindRiver TimeSys MontaVista Normalmente ofrecen interfaces gráficas. Las licencias generalmente incluyensoporte técnico. Pueden tener algún componentepropietario, pero la mayoría de lospaquetes que usemos van a ser libres.

Herramientas comunitarias BuildrootOpenEmbeddedOpenWRTYocto Es más que una herramienta, es un proyecto dela Linux Foundation para unir esfuerzos en eldesarrollo de Linux Embebido. Tutorial "Build System Yocto". Jueves, 9:00 ELDK (Denx) . y muchas más .

Más formas de tener soporte Empresas que dan soporte aherramientas libres: Free-Electrons, con buildroot (y posiblementecualquier otra) Denx para ELDK. Locales: Apexar (Su módulo) Gustavo Zacarias (Toptechnology,comunicaciones PPC) EmTech (Sponsors de SASE 2012)

¿Qué implica la integración? Seleccionar los componentes básicos delsistema. (cross) Compilarlos: Entender los sistemas de compilación (Makefile,autotools, etc). Aplicar los parches necesarios. Configurar las fuentes. Manejar la instalación de todos lospaquetes de software. Manejar las dependencias entre paquetes.

No es tan complicado.Demo.Vamos a ver como generar un sistema LinuxEmbebido completo usando Buildroot en 10minutos.

¡Se puede hacer todavía más fácil! Buildroot fue fácil. Pero hay cosas más simples: The Ångström Distribution TimeSys LinuxLink FREE¡Demo!

Trampita. Los ejemplos nos permitieron seleccionarqué paquetes integrar a nuestro sistema. ¡Pero nos falta agregar nuestra aplicación! Las herramientas permiten incorporarnuevos paquetes. Debemos empaquetar nuestra aplicación. Tener un mecanismo reproducible paracompilar nuestro sistema.

Android Android es un sistema operativo basadoen Linux. No comparte las aplicaciones de espaciode usuario con las distribucionesGNU/Linux. Necesita parches especiales en el Kernel(cada vez menos). Las aplicaciones se desarrollan usandouna API específica. "Mobile Linux vs. Android". Jueves, 10:50.

Toolchain Lo pasé por alto cuando hablé de lasherramientas y la integración. Seleccionar el toolchain correcto esimportante para el desempeño de nuestrosistema. Y el tamaño en memoria que va a ocupar. Como siempre, podemos usar TCprearmados, o hacer los nuestros. Linaro, CodeSourcery Crosstool-ng

¡Gracias! Al Team Linux de FIUBA que meayudaron a armar la presentación: Ing. Ariel Burman, Ernesto Corbellini, Joaquín deAndrés, Ing. Gabriel Gavinowich Ing. TomásGonzález. A ustedes. ¡que me escucharon!

¿Preguntas?

Referencias Linux Kernel Development: How Fast it is Going, Who is Doing It, WhatThey are Doing, and Who is Sponsoring ItEstimating the Total Cost of a Linux DistributionLinux-Powered Spider RobotDevice Profile: DeLaval Voluntary Milking SystemFree-Electrons Embedded Linux trainingFun: Windows vs. Linux for toasters

Linux embebido o empotrado (en inglés: Embedded Linux) se refiere al uso del sistema operativo Linux en un sistema embebido, como por ejemplo PDA, teléfonos móviles, robots, enrutadores / servidores, dispositivos electrónicos y aplicaciones industriales con microcontroladores y microprocesadores. ¿Qué es?