Implantación De Linux Sobre Microcontroladores
Total Page:16
File Type:pdf, Size:1020Kb
Embedded Linux system development Embedded Linux system development DSI Embedded Linux Free Electrons Developers © Copyright 2004-2018, Free Electrons. Creative Commons BY-SA 3.0 license. Latest update: March 14, 2018. Document updates and sources: http://free-electrons.com/doc/training/embedded-linux Corrections, suggestions, contributions and translations are welcome! DSI - FCEIA http://dsi.fceia.unr.edu.ar 1/263 Derechos de copia © Copyright 2018, Luciano Diamand Licencia: Creative Commons Attribution - Share Alike 3.0 http://creativecommons.org/licenses/by-sa/3.0/legalcode Ud es libre de: I copiar, distribuir, mostrar y realizar el trabajo I hacer trabajos derivados I hacer uso comercial del trabajo Bajo las siguientes condiciones: I Atribuci´on. Debes darle el cr´editoal autor original. I Compartir por igual. Si altera, transforma o construye sobre este trabajo, usted puede distribuir el trabajo resultante solamente bajo una licencia id´enticaa ´esta. I Para cualquier reutilizaci´ono distribuci´on,debe dejar claro a otros los t´erminos de la licencia de este trabajo. I Se puede renunciar a cualquiera de estas condiciones si usted consigue el permiso del titular de los derechos de autor. El uso justo y otros derechos no se ven afectados por lo anterior. DSI - FCEIA http://dsi.fceia.unr.edu.ar 2/263 Hiperv´ınculosen el documento Hay muchos hiperv´ınculosen el documento I Hiperv´ıncluosregulares: http://kernel.org/ I Enlaces a la documentaci´ondel Kernel: Documentation/kmemcheck.txt I Enlaces a los archivos fuente y directorios del kernel: drivers/input include/linux/fb.h I Enlaces a declaraciones, definiciones e instancias de los simbolos del kernel (funciones, tipos, datos, estructuras): platform_get_irq() GFP_KERNEL struct file_operations DSI - FCEIA http://dsi.fceia.unr.edu.ar 3/263 Introducci´ona Linux Embebido Introducci´ona DSI Linux Embebido Embedded Linux Developers Free Electrons © Copyright 2004-2018, Free Electrons. Creative Commons BY-SA 3.0 license. Corrections, suggestions, contributions and translations are welcome! DSI - FCEIA http://dsi.fceia.unr.edu.ar 4/263 Nacimiento del software libre I 1983, Richard Stallman, proyecto GNU y el concepto de software libre. Comienza el desarrollo de gcc, gdb, glibc y otras herramientas importantes I 1991, Linus Torvalds, proyecto Linux kernel, un nucleo de sistema operativo similar a Unix. Junto con el software GNU y otros componentes de c´odigoabierto: forman un sistema operativo completo GNU/Linux I 1995, Linux es m´aspopular en sistemas servidor I 2000, Linux es m´aspopular en sistemas embebidos I 2008, Linux es m´aspopular en dispositivos m´oviles I 2010, Linux es m´aspopular en tel´efonos DSI - FCEIA http://dsi.fceia.unr.edu.ar 5/263 >Software libre? I Un programa es considerado libre cuando su licencia ofrece a todos sus usuarios las siguientes cuatro libertades I Libertad de ejecutar el Sofrware para cualquier prop´osito I Libertad de estudiar el Software y modificarlo I Liberatd de redistribuir copias I Libertad de distribuir copias de versiones modificadas I Estas libertades estan concedidas para uso tanto comercial como no-comercial I Implican la disponibilidad del c´odigofuente, el Software puede ser modificado y distribuido a los clientes I Una opci´oninteresante para los sistemas embebidos! DSI - FCEIA http://dsi.fceia.unr.edu.ar 6/263 >Qu´ees Linux embebido? Linux embebido es el uso del kernel de Linux y varios componentes open-source en sistemas embebidos DSI - FCEIA http://dsi.fceia.unr.edu.ar 7/263 Introducci´ona Linux Embebido Ventajas de Linux y open-source para sistemas embebidos DSI - FCEIA http://dsi.fceia.unr.edu.ar 8/263 Reutilizaci´onde componentes I La principal ventaja de Linux y open-source en sistemas embebidos es la habilidad de reutilizar componentes I El ecosistema de open-source ya provee de varios componentes para caracter´ısticasestandares, desde soporte de Hardware hasta protocolos, pasando por multimedia, gr´aficos, bibliotecas criptogr´aficas,etc. I Tan pronto como un dispositivo Hardware, o un protocolo, o una caracter´ısticase torna conocida, existen varias chances de tener un componente open-source que lo soporte. I Permite dise~nar de forma r´apiday desarrollar productos complejos, basados en componentes existentes. I No es necesario redesarrollar otro kernel de sistema operativo, una pila TCP/IP, una pila USB u otra biblioteca gr´afica. I Permite enfocarce en el valor agregado del producto. DSI - FCEIA http://dsi.fceia.unr.edu.ar 9/263 Bajo costo I El Software libre puede ser duplicado en la cantidad de dispositivos que se quiera, libre de cargos. I Si su sistema embebido utiliza solo Software libre, se puede reducir los costos de licencias de Software a cero. Incluso, las herramients de desarrollo son libres, a menos que se elija una versi´onde Linux embebido comercial. I Permite tener un mayor presupuesto para el Hardware o para incrementar las habilidades y conocimiento de la compan´ıa DSI - FCEIA http://dsi.fceia.unr.edu.ar 10/263 Control total I Con c´odigoabierto, disponemos del c´odigofuente de todos los componentes del sistema I Permite modificaciones ilimitadas, cambios, ajustes, depuraci´on,optimizaci´on,por un per´ıodo de tiempo ilimitado I Sin una dependencia "bloqueante" de un vendedor externo I Componentes que no sean de c´odigoabierto se deben evitar cuando el sistema se dise~na y desarrolla I Permite tener un control total sobre el Software que forma parte del sistema DSI - FCEIA http://dsi.fceia.unr.edu.ar 11/263 Calidad I Varios componentes de c´odigoabierto son ampliamente utilizados en millones de sistemas I Generalmente son de mayor calidad que los desarrollos in-house o incluso de los vendedores propietarios I Por supuesto, no todos los componentes de c´odigoabierto son de buena calidad, pero los m´asampliamente utilizados los son. I Permite dise~nar su sistema con componentes fundacionales de alta calidad DSI - FCEIA http://dsi.fceia.unr.edu.ar 12/263 Facilita la prueba de nuevas caracteristicas I Dado la disponibilidad del c´odigoabierto, es simple obtener una copia del Software para evaluarlo I Permite de forma simple estudiar las opciones mientras se est´a decidiendo I Mucho m´assimple que la compra y procesos de demostraci´on necesitan con la mayor´ıade los productos propietarios I Permiten explorar de forma simple nuevas posibilidades y soluciones DSI - FCEIA http://dsi.fceia.unr.edu.ar 13/263 Soporte de la comunidad I Los componentes de Software de c´odigoabierto son desarrollados por comunidades de desarrolladores y usuarios I Esta comunidad puede proveer soporte de alta calidad: se puede contactar directamente a los desarrolladores principales del componente que se est´ausando. La probabilidad de obtener una respuesta no depende de la compan´ıapara la que trabajemos. I En general mejor que el soporte tradicional, pero es necesario entender como funciona la comunidad para hacer un uso correcto de las posibilidades de soporte I Permite acelerar la resoluci´onde problemas cuando se est´edesarrollando el sistema DSI - FCEIA http://dsi.fceia.unr.edu.ar 14/263 Formando parte de la comunidad I La posibilidad de formar parte de la comunidad de desarrollo de algunos de los componentes utilizados en sistemas embebidos: reporte de fallas, prueba de nuevas versiones y caracter´ısticas,parches que corrigen errores o agregan nuevas caracter´ısticas,etc. I La mayor´ıadel tiempo, los componentes de c´odigoabierto no son el n´ucleode valor del producto: es interes de todos contribuir al mismo I Para los ingenieros: una forma muy motivante de ser reconocido fuera de la compan´ıa,comunicarse con otros en el mismo campo, la oportunidad de nuevas posibilidades, etc. I Para los gerentes: factor de motivaci´on para los ingenieros, permite a la compan´ıaser reconocida en la comunidad de c´odigoabierto y por lo tanto obtener soporte de forma m´as simple y ser m´asatractivo para los desarrolladores de c´odigo abierto DSI - FCEIA http://dsi.fceia.unr.edu.ar 15/263 Introducci´ona Linux Embebido Algunos ejemplos de sistemas embebidos ejecutando Linux DSI - FCEIA http://dsi.fceia.unr.edu.ar 16/263 Ruters personales DSI - FCEIA http://dsi.fceia.unr.edu.ar 17/263 Televisi´on DSI - FCEIA http://dsi.fceia.unr.edu.ar 18/263 Terminales de punto de venta DSI - FCEIA http://dsi.fceia.unr.edu.ar 19/263 Maquinas de corte Laser DSI - FCEIA http://dsi.fceia.unr.edu.ar 20/263 Maquina de Viticultura DSI - FCEIA http://dsi.fceia.unr.edu.ar 21/263 Introducci´ona Linux Embebido Hardware para sistemas embebidos en Linux DSI - FCEIA http://dsi.fceia.unr.edu.ar 22/263 Procesador y arquitectura (1) I El kernel de Linux y la mayor´ıade otros componentes dependientes de la arquitectura soportan un amplio rango de arquitecturas de 32 y 64 bits I x86 y x86-64, como se encuentran en plataformas PC, pero tambi´ensistemas embebidos (multimedia, industrial) I ARM, con miles de diferentes SoC (multimedia, industrial) I PowerPC (principalmente aplicaciones en tiempo real e industriales) I MIPS (principalmente para aplicaciones de red) I SuperH (principalmente aplicaciones multimedia) I Blackfin (arquitectura DSP) I Microblaze (soft-core para FGPA de Xilinx) I Coldfire, SCore, Tile, Xtensa, Cris, FRV, AVR32, M32R DSI - FCEIA http://dsi.fceia.unr.edu.ar 23/263 Procesador y arquitectura (2) I Ambas arquitecturas, MMU y no-MMU son soportadas, aunque la arquitectura no-MMU tiene algunas limitaciones. I Linux no est´adise~nadopara microcontroladores peque~nos. I Salvo el juego de herraminetas, el cargador de inicio y el kernel, todos los otros componentes generalmente son independientes de la arquitectura DSI - FCEIA http://dsi.fceia.unr.edu.ar 24/263 RAM y almacenamiento I RAM: un sistema b´asicocon Linux puede funcionar con 8 MB de RAM, pero un sistema m´asrealista usualmente requiere 32 MB de RAM.