Beruflich Dokumente
Kultur Dokumente
Linux Embebido
Laboratorio de Sistemas Embebidos Facultad de Ingenier a Universidad de Buenos Aires Correcciones, sugerencias y/o contribuciones son bienvenidas.
Presentaci on basada en material de Free-Electrons. Licencia Creative Commons BY-SA 3.0. http://free-electrons.com/
1/56
Sistema embebido?
Un sistema embebido o empotrado es un sistema de computaci on dise nado para realizar una o algunas pocas funciones dedicadas frecuentemente en un sistema de computaci on en tiempo real. Los sistemas embebidos se utilizan para usos muy diferentes a los usos generales a los que se suelen someter a las computadoras personales. Wikipedia http://es.wikipedia.org/wiki/Sistema_embebido
2/56
Qu e es Linux embebido?
Linux embebido es el uso del kernel Linux y muchos otros componentes de c odigo abierto en sistemas embebidos
3/56
1983, Richard Stallman anuncia el inicio del proyecto GNU y crea el concepto de software libre. Se comienza con el desarrollo de gcc, gdb, glibc y otras herramientas importantes. 1991, Linus Torvalds, Linux kernel, un kernel para sistemas operativos similares a Unix. Junto con el software GNU y otros componentes de c odigo abierto (open-source) dan lugar a un sistema operativo 100% libre: GNU/Linux. 1995, Linux comienza a utilizarse en servidores. 2000, Linux se extiende su uso a sistemas embebidos. 2008, Linux comienza a utilizarse en dispositivos m oviles.
4/56
Qu e es el software libre?
Un programa es considerado libre cuando su licencia ofrece a sus usuarios las siguientes cuatro libertades:
Libertad para correr el programa con cualquier prop osito. Libertad para estudiar el programa y modicarlo. Libertad para redistribuir copias. Libertad para distribuir copias de las versiones modicadas.
Estas libertades se garantizan tanto para uso comercial como para uso no comercial. Implican la disponibilidad del c odigo fuente. El programa puede ser modicado y distribuido a los clientes. Es un buen negocio para sistemas embebidos?
5/56
6/56
Reutilizar componentes
La ventaja clave de Linux y el software abierto en sistemas embebidos es la habilidad para reutilizar componentes. El ecosistema de software abierto ya provee muchos componentes para requerimientos comunes, desde soporte de hardware hasta protocolos de red, multimedia, gr acos, librer as de criptograf a, etc. Tan pronto como un dispositivo, un protocolo o una funcionalidad se vuelven populares, existe una gran posibilidad de que haya componentes de c odigo abierto que la soporten. Permite dise no y desarrollo r apido de productos complejos, basados en componentes existentes. Nadie deber a volver a desarrollar un nuevo kernel, un stack TCP/IP, un stack USB u otro toolkit gr aco. Permite mantener el foco en el valor agregado del producto
7/56
Bajo costo
El software libre puede ser copiado en tantos dispositivos como se quiera sin un gasto adicional. Si un sistema embebido usa solamente software libre, se puede reducir el costo de las licencias de software a cero. Incluso, las herramientas de desarrollo son libres (salvo que se decida usar una versi on comercial de Linux embebido). Permite disponer de un mayor presupuesto para hardware o para incrementar las habilidades y conocimiento de la empresa.
8/56
Control completo
Con software abierto, se tiene disponible el c odigo fuente de todos los componentes del sistema. Permite hacer modicaciones ilimitadas, cambios, ajustes, debugging, optimizaciones, por un per odo ilimitado de tiempo. Sin dependencias ni restricciones de un proveedor externo. Permite obtener un control completo sobre el software del sistema.
9/56
Calidad
Muchos componentes de c odigo abierto son usados en millones de sistemas. Usualmente poseen mayor calidad que la de cualquier desarrollo propio o incluso de vendedores propietarios. No todos los componentes de c odigo abierto son de buena calidad, pero la mayor a de los m as usados lo son. Permite dise nar un sistema en base a componentes de alta calidad
10/56
Al estar disponible libremente, es sencillo tomar una parte de software para probarla. Permite estudiar f acilmente varias opciones para luego elegir una de ellas. Esto es m as sencillo que asistir a demostraciones de cada producto propietario.
11/56
Soporte de la comunidad
Los componentes de software de c odigo abierto son mantenidos por comunidades de desarrolladores y usuarios. Esta comunidad puede proveer soporte de alta calidad: uno puede contactar directamente a los desarrolladores principales del componente en uso. La probabilidad de obtener una respuesta no depende de la empresa con la que uno trabaja. Usualmente es mejor que el soporte tradicional, pero es necesario entender c omo funciona la comunidad para poder disponer de ella. Permite acelerar la soluci on de problemas durante el desarrollo del sistema
12/56
Participar en la comunidad
Ofrece la posibilidad de formar parte de la comunidad de desarrollo de algunos de los componentes usados en los sistemas embebidos: reporte de bugs, prueba de nuevas versiones o caracter sticas, etc. Devolver los cambios o mejoras que se desarrollan. Para los ingenieros: es una forma interesante de ser reconocido fuera de la empresa, comunicarse con otros interesados en el area, abrir nuevas posibilidades, etc. Para los managers: sirve como factor de motivaci on para los ingenieros. Permite que la empresa sea reconocida en la comunidad de c odigo abierto y por lo tanto obtenga soporte m as f acilmente y sea m as atractiva para los desarrolladores de c odigo abierto.
13/56
14/56
Routers personales
http://www.free.fr/adsl/index.html
Laboratorio de Sistemas Embebidos. Facultad de Ingenier a. Universidad de Buenos Aires 15/56
Televisor
http://www.sony.net/Products/Linux/TV
16/56
Terminales de venta
http://www.sepay.nl
17/56
18/56
Cosechadora de uva
19/56
Nokia N9
http://www.nokia.com/global/products/phone/n9/specifications/
Laboratorio de Sistemas Embebidos. Facultad de Ingenier a. Universidad de Buenos Aires 20/56
http://www.delaval.com/en/-/Product-Information1/Milking/
Laboratorio de Sistemas Embebidos. Facultad de Ingenier a. Universidad de Buenos Aires 21/56
Muchos ejemplos m as
http://www.linuxfordevices.com
Laboratorio de Sistemas Embebidos. Facultad de Ingenier a. Universidad de Buenos Aires 22/56
23/56
x86 y x86-64, como se encuentra en PCs, pero tambi en en sistemas embebidos (multimedia, industriales). ARM, con cientos de diferentes SoCs (multimedia, industriales). PowerPC (mayormente tiempo real, aplicaciones industriales). MIPS (principalmente aplicaciones de redes). SuperH (principalmente decodicadores y aplicaciones multimedia). Blackn (arquitectura de DSP). Microblaze (soft-core para Xilinx FPGA). Coldre, SCore, Tile, Xtensa, Cris, FRV, AVR32, M32R.
24/56
Comunicaci on
I2C SPI CAN 1-wire SDIO USB Ethernet, Wi, Bluetooth, CAN, etc. IPv4, IPv6, TCP, UDP, SCTP, DCCP, etc. Firewalling, routing avanzado, multicast
25/56
El kernel de Linux soporta, tanto las arquitecturas que poseen MMU como las que no, aunque las segundas sufrir an algunas limitaciones. Salvo el toolchain, el bootloader y el kernel, todos los otros componentes son generalmente independientes de la arquitectura. Linux no est a dise nado para microcontroladores peque nos.
26/56
BeagleBoard C4
OMAP 3530, TI Cortex A8 720 MHz DSP / Power VR 256 MB de RAM 256 MB de NAND ash DVI, audio entrada y salida, USB, etc,
27/56
RAM y almacenamiento
RAM: un sistema Linux muy b asico puede funcionar con 8 MB de RAM, pero un sistema m as realista usualmente requerir a al menos 32 MB de RAM. Depender a del tipo y tama no de las aplicaciones. Almacenamiento: un sistema Linux muy b asico puede funcionar con 4 MB de almacenamiento, pero usualmente se necesita m as.
Soporta almacenamiento del tipo Flash, tanto NAND como NOR, con sistemas de archivos espec cos. Soporta almacenamiento por bloques como tarjetas SD/MMC y eMMC.
Ser muy restrictivo en la cantidad de RAM/almacenamiento quita exibilidad para utilizar la gran cantidad de componentes existentes.
28/56
Plataformas de evaluaci on de vendedores de SoCs. Usualmente muy caras, pero incluyen muchos perif ericos. Muy buenas para prototipado. Poco adecuadas para productos reales de mediana cantidad. Componente en m odulo. Una peque na placa con CPU/RAM/ash y otros pocos componentes y conectores. Puede usarse para armar productos nales en peque nas o medianas cantidades. Plataformas desarrolladas por la comunidad. Son de bajo costo y listas para el uso, pero usualmente tienen menos perif ericos que las plataformas de evaluaci on. Cuentan con el apoyo de los fabricantes para hacer el SoC popular y f acilmente disponible. Plataformas propias. Desarrollos totalmente nuevos o basados en los esquem aticos de las placas de evaluaci on y plataformas de desarrollo disponibles libremente.
29/56
Kit de evaluaci on de TI
OMAP 3530 256 MB DRAM 256 MB NAND Flash 3.7 LCD t actil S-Video Ethernet, WiFi SDIO, I2C, JTAG, Keypad, USB Host High-speed MMC/SD 1800 U$S
http://www.ti.com/tool/tmdsevm3530
30/56
Gumstix
OMAP 3530 256 - 512 MB RAM 0 - 512 MB NAND Bluetooth WiFi microSD 115 230 U$S
https://www.gumstix.com/store/index.php?cPath=27
31/56
PandaBoard
OMAP4460 Full HD (1080p) 1 GB DDR2 RAM SD/MMC Bluetooth Ethernet, WiFi 160 U$S
http://pandaboard.org/content/platform
32/56
RaspBerry Pi
Broadcom BCM2835 ARM11 700Mhz Videocore 4 GPU 256 MB RAM HDMI, USB Ethernet (B) 25 - 35 U$S
http://www.raspberrypi.org
33/56
Requerimientos m nimos
32 bit CPU, con MMU. CPUs sin MMU son soportadas por uClinux.
Desde 4 MB de RAM. 8 MB para hacer algo u til. Desde 2 MB de almacenamiento. 4 MB para hacer algo u til. Linux no est a dise nado para procesadores con KBs de RAM o ROM:
34/56
Asegurarse que el hardware que se quiere utilizar se encuentra soportado por el kernel Linux, y que tiene un bootloader de c odigo abierto. Es recomendable tener soporte en la versi on ocial de los proyectos (kernel, bootloader): la calidad es mayor y ser a posible encontrar nuevas versiones en el futuro. Algunos vendedores de SoCs y/o de placas no contribuyen con sus cambios a la l nea principal del kernel Linux. Una buena idea es siempre ver la diferencia entre su kernel y el ocial. Utilizar hardware soportado por la distribuci on ocial del Kernel Linux en lugar de hardware con bajo soporte permitir a ahorrar mucho tiempo y dinero durante la etapa de desarrollo del proyecto.
35/56
36/56
Arquitectura global
37/56
Componentes de software
Cross-compilation toolchain
Compilador que corre en la m aquina de desarrollo, pero que genera binarios para el target Es iniciado por el hardware, es el responsable de las inicializaciones b asicas y de cargar y ejecutar el kernel Contiene el manejo de procesos y memoria, stack de red, drivers de dispositivos y provee servicios a las aplicaciones del userspace Es la interfaz entre el kernel y las aplicaciones de userspace De terceros o propias
Bootloader
Kernel Linux
Librer a de C
Librer as y aplicaciones
38/56
El BSP contiene un bootloader y el kernel, con todos los drivers adecuados para el target. Este es el prop osito de un curso sobre desarrollo del kernel. Integrar al sistema todos los componentes, bootloader, kernel, librer as y aplicaciones de terceros y aplicaciones propias. Este es el prop osito de nuestro curso. Aplicaciones normales de Linux pero usando librer as seleccionadas espec camente. No es el prop osito de este curso.
Desarrollo de aplicaciones
39/56
Usar soluciones provistas y soportadas por empresas como MontaVista, Wind River o TimeSys. Cada una tiene sus herramientas propias. Usar herramientas provistas por la comunidad.
No vamos a promover ninguna empresa en particular, por lo que vamos a usar herramientas de la comunidad.
Lo importante es entender los conceptos, migrar de herramienta siempre es m as f acil. Las herramientas comunitarias no est an disponibles para otras plataformas. Entender Linux en el desktop nos va a facilitar el desarrollo de Linux embebido.
40/56
Distribuci on de Linux
Cualquier distribuci on sucientemente reciente puede ser utilizada como plataforma de desarrollo
Nosotros elegimos Ubuntu, por ser la distribuci on de Linux m as popular y sencilla de usar. Aprender Linux embebido tambi en requiere aprender las herramientas necesarias para trabajar sobre la plataforma de desarrollo
41/56
42/56
Sistemas de archivos
Contenidos de la Flash
En Linux, los sistemas de archivos (lesystem) se montan dentro de una jerarqu a global de directorios y archivos. Filesystem u nico - Todos los FS de los dispositivos se montan sobre un FS base. Un sistema particular, el root, se monta en el directorio /. En sistemas embebidos:
Bootloader Kernel
Root filesystem
El root lesystem contiene todos los archivos del sistema. Crearlo es una de las tareas principales de la integraci on de componentes. El kernel normalmente se mantiene separado.
43/56
mkfs.ext2 /dev/sda1 -L Etiqueta Formatea la partici on /dev/sda1 en formato ext2. mkfs.ext2 -F disk.img Formatea una imagen de disco en ext2 -F: force. Ejecuta aunque no sea un dispositivo real. mkfs.vfat -v-F 32 /dev/sda1 -n Etiqueta Formatea la misma partici on anterior en FAT32. (-v: verboso) mkfs.vfat -v -F 32 disk.img Formatea la imagen en FAT32. Im agenes de discos en blanco se pueden crear as : (archivo de 64 MB) dd if=/dev/zero of=disk.img bs=1M count=64
44/56
Montando un dispositivo
Para hacer cualquier sistema de archivos visible en el sistema hay que montarlos. La primera vez, se crea el punto de montaje: mkdir /mnt/usbdisk (ejemplo) Ahora lo montamos: mount -t vfat /dev/sda1 /mnt/usbdisk /dev/sda1: dispositivo f sico -t especica el formato del sistema de archivo (ext2, ext3, vfat, reiserfs, iso9660)
Datos crudos
mount
Estructura de directorios
45/56
Montando un dispositivo
Tambi en se puede montar una imagen de sistema de archivo guardada en un archivo regular (loop devices).
Muy u til para desarrollar y probar un sistema de archivo que estamos armando para otra computadora. para acceder a los contenidos de una imagen de CD (iso) Util sin tener que grabar el disco.
46/56
Listando dispositivos
Usando el comando mount sin argumentos se obtiene la siguiente lista:
/dev/sda1 on / type ext4 (rw,errors=remount-ro,commit=0) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) fusectl on /sys/fs/fuse/connections type fusectl (rw) none on /sys/kernel/debug type debugfs (rw) none on /sys/kernel/security type securityfs (rw) udev on /dev type devtmpfs (rw,mode=0755) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620) tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755) none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880) none on /run/shm type tmpfs (rw,nosuid,nodev) /dev/sda6 on /home type ext4 (rw,commit=0) ...
47/56
Desmontado dispositivos
umount /mnt/usbdisk Termina todas las transacciones pendientes en el dispositivo y lo desmonta. Para poder desmontar un dispositivo hay que cerrar todos sus archivos abiertos:
Cerrar todos los programas que usen alg un archivo del directorio montado. Estar seguro que ning un shell est e abierto en esa partici on. Se puede usar el comando lsof <mount point> (list open les) para ver todos los archivos abiertos en ese directorio.
48/56
root: se necesitan sus privilegios s olo para operaciones espec cas, con impacto en la seguridad. Por ejemplo: montar o crear dispositivos, cargar drivers, congurar la red, cambiar permisos, instalar paquetes, . . . Por m as que uno tenga la clave de root, la cuenta normal tiene que ser suciente para el 99.9% de las actividades (a menos que seamos el administrador del sistema) En este curso es aceptable usar root. En la pr actica vida real, pueden no tener esta cuenta disponible.
49/56
Si uno tiene la contrase na de root: su (switch user) En distribuciones modernas, el comando sudo da acceso a algunos privilegios de root usando la clave de usuario. Ejemplo: sudo mount /dev/sdb6 /home
50/56
51/56
Sistemas de paquetes
La forma de distribuir software en GNU/Linux diere de la que se usa en Windows. Las distribuciones de Linux proveen una forma central y coherente de instalar, actualizar y borrar aplicaciones y librer as: Paquetes. Los paquetes contienen la aplicaci on, las librer as e informaci on extra, como la versi on y las dependencias. .deb en Debian y Ubuntu, .rpm en Mandriva, Fedora, OpenSUSE Los paquetes se guardan en repositorios, usualmente servers HTTP o FTP. Siempre hay que usar paquetes ociales de la distribuci on, a menos que sea estrictamente necesario.
52/56
Los repositorios de paquetes se especican en: /etc/apt/sources.list Para actualizar la lista de paquetes: sudo apt-get update Para encontrar un paquete para instalar, se pueden usar los buscadores web: http://packages.debian.org o http://packages.ubuntu.com. Tambi en se puede usar: apt-cache search <keyword>
53/56
Para instalar un paquete: sudo apt-get install <package> Para desinstalar un paquete: sudo apt-get remove <package> Para aplicar todas las actualizaciones: sudo apt-get distupgrade Para obtener informaci on de un paquete: sudo apt-cache show <package> Existen interfaces gr acas:
Apagando el sistema
halt Apaga inmediatamente el sistema. reboot Reinicia inmediatamente el sistema. [Ctrl]+[Alt]+[Del] Tambi en funciona el GNU/Linux para reiniciar. Sistemas embebidos: hay que usar una implementaci on de init y especicar una combinaci on de teclas en /etc/inittab
55/56
Uso de la terminal:
Practicar comandos b asicos de Linux. Familiarizarse con la sintaxis del shell. Perderle el miedo a la terminal.
56/56