Creación Sistemas Operativos Embebidos Personalizados Basados En Linux Para Soc Con FPGA Integrada

Total Page:16

File Type:pdf, Size:1020Kb

Creación Sistemas Operativos Embebidos Personalizados Basados En Linux Para Soc Con FPGA Integrada Proyecto Fin de Carrera Trabajo Fin de Master IngenieríaMaster de Universitario Telecomunicación en Ingeniería Aeronáutica FormatoCreación de Publicación Sistemas Operativos de la Escuela embebidos Técnica Superiorpersonalizados de Ingeniería basados en Linux para SoC con FPGA integrada Autor:Autor: F. Javier Ángel Payán Cea Somet Fons Tutor:Tutor: Juan MaríaJosé Murillo de los Ángeles Fuentes Martín Prats Dep. TeoríaDep. de Ingenieríala Señal y Comunicaciones Electrónica EscuelaEscuela Técnica Técnica Superior Superior de Ingeniería de Ingeniería UniversidadUniversidad de Sevilla de Sevilla Sevilla,Sevilla, 2013 2017 Trabajo Fin de Master Master Universitario en Ingeniería Aeronáutica Creación Sistemas Operativos embebidos personalizados basados en Linux para SoC con FPGA integrada Autor: Ángel Cea Fons Tutor: María de los Ángeles Martín Prats Profesor Titular Dep. Ingeniería Electrónica Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2017 Trabajo Fin de Master: Creación Sistemas Operativos embebidos personalizados basados en Linux para SoC con FPGA integrada Autor: Ángel Cea Fons Tutor: María de los Ángeles Martín Prats El tribunal nombrado para juzgar el trabajo arriba indicado, compuesto por los siguientes profesores: Presidente: Vocal/es: Secretario: acuerdan otorgarle la calificación de: El Secretario del Tribunal Fecha: Resumen n el mundo de la ingeniería la electrónica está cobrando cada vez una mayor importancia debido, E entre otros motivos, a la creciente automatización de procesos, el crecimiento en número y complejidad de los sistemas de aviónica embarcados en las aeronaves y la marcada tendencia hacia el All Electric Aircraft, que requiere la sustitución de sistemas mecánicos por sistemas electrónicos. Aunque suele pasar desapercibido, los sistemas embebidos tienen una importancia capital en el mundo de la aviación, controlando y supervisando procesos de una manera eficiente. El problema de estos sistemas, por lo general, subyace en su limitada potencia de procesamiento. Aquí es donde entra en juego lo que se va a tratar en el presente documento, el cual contendrá información acerca del desarrollo de una distribución de un sistema operativo (Linux) personalizada con Yocto Project, que permita satisfacer las necesidades pertinentes de forma eficiente, lo que nos permite no desaprovechar potencia de cálculo y además personalizar las herramientas y utilidades de las que se quiere dotar al sistema embebido. I Índice Resumen I Comandos VII 1 Introducción1 1.1 Sistemas embebidos1 1.1.1 ZedBoard3 1.2 Linux embebido4 1.2.1 Código abierto (Open source)4 1.2.2 Licencias Open source 5 1.2.3 Los cuatro elementos de Linux embebido5 Toolchain5 2 Toolchain7 2.1 Tipos de Toolchain7 2.2 Elección de la librería de C7 2.3 Crosstool-NG8 2.3.1 Instalación de crosstool-NG8 2.3.2 Anatomía de una toolchain 12 2.3.3 El directorio sysroot, la librería y los archivos de cabecera 14 2.3.4 Librerías, componentes de la librería de C 14 3 Bootloader 19 3.1 ¿Cuál es la función del bootloader? 19 3.2 La secuencia de arranque 19 3.2.1 Fase 1: código ROM 19 3.2.2 Fase 2: SPL 20 3.2.3 Fase 3: TPL 20 3.3 Del bootloader al kernel 21 3.4 Device trees 21 3.4.1 La propiedad reg 23 3.4.2 Phandles e interrupciones 24 3.4.3 Inclusión de archivos en los árboles de dispositivos 24 3.4.4 Elección de un bootloader 26 4 El kernel 29 4.1 ¿Qué es el kernel? 29 III IV Índice 4.2 Elección del kernel 29 4.3 Configuración del kernel 32 4.4 Módulos kernel 33 4.5 Compilando 33 4.5.1 Compilando la imagen del kernel 33 4.5.2 Compilando arboles de dispositivos 36 4.5.3 Compilando módulos kernel 36 4.5.4 Limpiando fuentes del kernel 36 5 El sistema de archivos raiz 39 5.1 Contenido del sistema de archivos raiz 39 5.2 Estructura del directorio 40 5.3 Permisos de acceso POSIX a archivos 40 5.4 Programas para el sistema de archivos raíz 41 5.4.1 El programa init 41 5.4.2 Shell 42 5.4.3 Utilidades 42 5.4.4 Busybox 43 5.4.5 Construyendo Busybox 43 5.4.6 Librerías para el sistema de archivos raiz 45 5.4.7 Nodos de dispositivos 45 5.4.8 El sistema de archivos proc y sys/ 45 5.4.9 Módulos kernel 47 5.5 Transfiriendo el sistema de archivos raíz al dispositivo de destino 47 6 Yocto Project 49 6.1 ¿Qué es Yocto Project? 49 6.2 Instalación de Yocto Project 49 6.3 Configuaración de Yocto Project 51 6.4 Capas 53 6.4.1 Creación de una nueva capa 54 6.5 Modulos kernel 60 6.5.1 Compilando modulos kernel con Yocto Project 61 6.5.2 Drivers 66 6.5.3 Creando un character device driver 70 7 Construyendo con Yocto Poject 81 7.1 Construyendo para la ZedBoard 81 7.1.1 Antes de intentar realizar la construcción 81 7.1.2 Construyendo 83 7.1.3 Creando una capa para la ZedBoard 87 7.1.4 Despliegue en la zedboard 90 7.1.5 Prueba del sistema con QEMU 92 7.2 Construyendo para la enclustra 93 8 Conclusiones 97 9 Futuras líneas de investigación 99 Índice V Índice de Figuras 101 Índice de Tablas 103 Índice de Códigos 105 Bibliografía 109 Comandos En esta lista se incluirán comandos utilizados en el documento para facilitar la lectura a personas que no estén familiarizadas con la terminal de Linux, pero este apartado no se dedicará a explicar con detalle y detenimiento ni el funcionamiento ni la sintaxis de los comandos, para ello buscar información en fuentes externas a este documento. sudo Colocado delante de otros comandos permite ejecutarlos como superusua- rio tar Comando que sirve pare realizar ta- reas de compresión y descompresión cd <destino> Realiza el cambio al directorio que se le indique a continuación (change directory) pwd > Muestra la ubicación del directorio actual (Print Working Directory) make <opciones> Permite ejecutar archivo makefile en el directorio actual mv <opciones> <origen> <destino> Mueve y renombra ficheros o direc- torios entre otras funciones rm <opciones> <archivo1> <archivo2> Permite eliminar directorios y archi- vos dependiendo de las opciones que se le indiquen cp <opciones> <origen> <destino> Copia directorios y archivos origen en el destino atendiendo a las opcio- nes que se le indiquen cat <opciones> <archivo> Lee un archivo y muestra su conteni- do tail <opciones> <archivo> Muestra las últimas líneas de un ar- chivo ls <opciones> <destino> Muestra un listado de directorios y archivos dentro del directorio <des- tino>, y si no se le indica destino el listado lo hace del directorio actual lsmod Muestra un listado de los módulos kernel instalados actualmente en el sistema insmod <módulo kernel> Instala módulo kernel en el sistema VII VIII Comandos rmmod <módulo kernel> Desinstala módulo kernel del siste- ma df Muestra los sistemas de archivos montados, su espacio disponible y el espacio utilizado dmesg Muestra mensajes del kernel git clone <dirección> Realiza una clonación del reposito- rio que se encuentre en la dirección indicada git checkout <rama> Cambia la rama a la que apunta el re- positorio a la indicada en el comando git branch Muestra la rama a la que apunta ac- tualmente el repositorio git branch -r Muestra las ramas disponibles mknod Crea nodo de dispositivo. Es necesa- rio tener permisos de superusuario mount Para montar directorios y archivos. Es necesario tener permisos de su- perusuario umount Para desmontar directorios y archi- vos. Es necesario tener permisos de superusuario sudo apt-get install Realiza la instalación de la aplica- ción indicada a continuación ./<aplicación> Ejecuta la aplicación que se le indi- que source Ejecuta la aplicación que se le in- dique a continuación guardando los cambios realizados en elas variables de entorno tree <opciones> <dirección> Muestra estructura de directorios y ficheros en forma de árbol de la di- rección que se le indique <comando> | grep <caracteres> Toma como entrada la salida del co- mando anterior y muestra los resul- tados que contienen los caracteres indicados fdisk <opciones> Permite formatear particiones y obte- ner información acerca de dispositi- vos del almacenamiento conectados al sistema find <opciones> Comando que, como su propio nom- bre indica, sirve para realizar búsque- das de distinta índole dependiendo de las opciones que se añadan al co- mando 1 Introducción n este capítulo se aclarará la definición de sistema embebido y se mostrarán los componentes E que habitualmente forman parte de los sistemas embebidos. Se introducirá a la ZedBoard como el sistema embebido que se utilizará para el desarrollo del presente proyecto y se hablará sobre lo que es Linux embebido y las partes que lo conforman. 1.1 Sistemas embebidos Un sistema embebido o empotrado (integrado, incrustado) es un sistema de computación diseñado para realizar una o algunas pocas funciones dedicadas, frecuentemente en un sistema de computación en tiempo real. Al contrario de lo que ocurre con los ordenadores de propósito general (como por ejemplo una computadora personal o PC) que están diseñados para cubrir un amplio rango de necesidades, los sistemas embebidos se diseñan para cubrir necesidades específicas. En un sistema embebido la mayoría de los componentes se encuentran incluidos en la placa base (tarjeta de vídeo, audio, módem, etc.) y muchas veces los dispositivos resultantes no tienen el aspecto de lo que se suele asociar a una computadora. Algunos ejemplos de sistemas embebidos podrían ser dispositivos como un taxímetro, un sistema de control de acceso, la electrónica que controla una máquina expendedora o el sistema de control de una fotocopiadora entre otras múltiples aplicaciones. Como ya se ha nombrado anteriormente, estos sistemas suelen disponer de una potencia de cálculo limitada y pueden llevar a cabo generalmente también una variedad de tareas limitadas en comparación a un pc habitual.
Recommended publications
  • Atomicity and Visibility in Tiny Embedded Systems
    Atomicity and Visibility in Tiny Embedded Systems John Regehr Nathan Cooprider David Gay University of Utah, School of Computing Intel Research Berkeley {regehr, coop}@cs.utah.edu [email protected] Abstract bool flag = false; // interrupt handler Visibility is a property of a programming language’s void __vector_5 (void) memory model that determines when values stored by { one concurrent computation become visible to other atomic flag = true; computations. Our work exploits the insight that in } nesC, a C-like language with explicit atomicity, the traditional way of ensuring timely visibility—volatile void wait_for_interrupt(void) variables—can be entirely avoided. This is advan- { tageous because the volatile qualifier is a notorious bool done = false; do { source of programming errors and misunderstandings. atomic if (!flag) done = true; Furthermore, the volatile qualifier hurts performance } while (!done); by inhibiting many more optimizations than are neces- } sary to ensure visibility. In this paper we extend the semantics of nesC’s atomic statements to include a visi- bility guarantee, we show two ways that these semantics Figure 1. nesC code containing a visibility er- can be implemented, and we also show that our better ror implementation has no drawbacks in terms of resource usage. Until now, nesC has left it to programmers to en- 1. Introduction sure visibility by judicious use of C’s volatile qual- ifier. In this paper we investigate the idea of strength- ening nesC’s memory model such that the semantics of The nesC [5] language is a C dialect designed for pro- atomic are augmented with a visibility guarantee. This gramming embedded wireless sensor network nodes.
    [Show full text]
  • Operating Systems and Applications for Embedded Systems >>> Toolchains
    >>> Operating Systems And Applications For Embedded Systems >>> Toolchains Name: Mariusz Naumowicz Date: 31 sierpnia 2018 [~]$ _ [1/19] >>> Plan 1. Toolchain Toolchain Main component of GNU toolchain C library Finding a toolchain 2. crosstool-NG crosstool-NG Installing Anatomy of a toolchain Information about cross-compiler Configruation Most interesting features Sysroot Other tools POSIX functions AP [~]$ _ [2/19] >>> Toolchain A toolchain is the set of tools that compiles source code into executables that can run on your target device, and includes a compiler, a linker, and run-time libraries. [1. Toolchain]$ _ [3/19] >>> Main component of GNU toolchain * Binutils: A set of binary utilities including the assembler, and the linker, ld. It is available at http://www.gnu.org/software/binutils/. * GNU Compiler Collection (GCC): These are the compilers for C and other languages which, depending on the version of GCC, include C++, Objective-C, Objective-C++, Java, Fortran, Ada, and Go. They all use a common back-end which produces assembler code which is fed to the GNU assembler. It is available at http://gcc.gnu.org/. * C library: A standardized API based on the POSIX specification which is the principle interface to the operating system kernel from applications. There are several C libraries to consider, see the following section. [1. Toolchain]$ _ [4/19] >>> C library * glibc: Available at http://www.gnu.org/software/libc. It is the standard GNU C library. It is big and, until recently, not very configurable, but it is the most complete implementation of the POSIX API. * eglibc: Available at http://www.eglibc.org/home.
    [Show full text]
  • System Size BOF
    ELC 2009 System Size BOF Michael Opdenacker Free Electrons 1 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Rights to copy © Copyright 2004-2009, Free Electrons [email protected] Document sources: http://free-electrons.com/pub/conferences/2009/elc/ Updates on size reduction techniques can be found on http://free-electrons.com/docs/optimizations/ Attribution ± ShareAlike 3.0 You are free to copy, distribute, display, and perform the work Corrections, suggestions, to make derivative works contributions and translations are welcome! to make commercial use of the work Under the following conditions Latest update: Apr 28, 2009 Attribution. You must give the original author credit. Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. For any reuse or distribution, you must make clear to others the license terms of this work. Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. License text: http://creativecommons.org/licenses/by-sa/3.0/legalcode 2 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com 24 slides... To avoid a tragic increase in the size of your system. 3 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Why system size matters Because Linux wouldn©t fit otherwise To leave more space for user data (media players) To keep things easier to maintain Lighter code is faster to boot We should stop size growth because we don©t want to force people to use old kernels and old software.
    [Show full text]
  • Embedded Linux Training
    Free Electrons Embedded Linux training Gregory Clement Thomas Petazzoni Michael Opdenacker Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Rights to copy © Copyright 2004-2011, Free Electrons [email protected] Electronic version of this document available on http://free-electrons.com/doc/training/embedded-linux Updates will be available on http://free-electrons.com/doc/training/embedded-linux/ Attribution ± ShareAlike 3.0 Corrections, suggestions, You are free contributions and translations are welcome! to copy, distribute, display, and perform the work to make derivative works Latest update: Feb 14, 2011 to make commercial use of the work Under the following conditions Attribution. You must give the original author credit. Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. For any reuse or distribution, you must make clear to others the license terms of this work. Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. License text: http://creativecommons.org/licenses/by-sa/3.0/legalcode Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Linux kernel Linux device drivers Free Electrons Board support code Our services Mainstreaming kernel code Kernel debugging Custom Development System integration
    [Show full text]
  • Implantación De Linux Sobre Microcontroladores
    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.
    [Show full text]
  • Workshop-Linux-Completo.Pdf
    Linux embebido Workshop Linux Embebido Lucas Chiesa Joaquín de Andrés Germán Bassi Laboratorio Sistemas embebidos FIUBA Creative Commons BY-SA 3.0 license Basado en : http://free-electrons.com/docs/embedded-linux-intro ¿Sistema embebido? Un sistema embebido o empotrado es un sistema de computación diseñado para realizar una o algunas pocas funciones dedicadas frecuentemente en un sistema de computación 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 SASE 2012 - Workshop Linux Embebido 2 Muchos sistemas diferentes Es una definición muy genérica: Cubre muchos tipos diferentes de sistemas Línea borrosa con sistemas tradicionales Productos ªConsumer Electronics (CE)º: Routers hogareños, reproductores de DVD, Televisores, cámaras digitales, GPS, celulares ... Productos industriales: Controladores de máquinas, alarmas, equipos de vigilancia, autos, satélites... SASE 2012 - Workshop Linux Embebido 3 Muchos productos diferentes SASE 2012 - Workshop Linux Embebido 4 Linux embebido El Software Libre y Abierto ofrece una rango muy amplio de herramientas para desarrollar sistemas embebidos. Ventajas ● Reutilizar componentes existentes para el sistema base. Permite concentrarse en el valor agregado del producto. ● Componentes de alta calidad y muy probados. (Kernel Linux , librerías de C ...) ● Control completo sobre la elección de componentes. Modificaciones posibles ilimitadas. ● Soporte por la comunidades: tutoriales, listas de correo... ● Bajo costo, sin licencias por unidad. ● Acceso más simple al software y a las herramientas. SASE 2012 - Workshop Linux Embebido 5 Ejemplos de dispositivos GPS: TomTom y Garmin Routers hogareños: Linksys, Netgear PDA: Zaurus, Nokia N8x0 TVs, DVDs: Sony, Philips, ..
    [Show full text]
  • Wind River Linux Release Notes, 5.0.1
    Wind River Linux Release Notes, 5.0.1 Wind River® Linux RELEASE NOTES 5.0.1 Copyright © 2013 Wind River Systems, Inc. All rights reserved. No part of this publication may be reproduced or transmitted in any form or by any means without the prior written permission of Wind River Systems, Inc. Wind River, Tornado, and VxWorks are registered trademarks of Wind River Systems, Inc. The Wind River logo is a trademark of Wind River Systems, Inc. Any third-party trademarks referenced are the property of their respective owners. For further information regarding Wind River trademarks, please see: www.windriver.com/company/terms/trademark.html This product may include software licensed to Wind River by third parties. Relevant notices (if any) are provided in your product installation at one of the following locations: installDir/product_name/3rd_party_licensor_notice.pdf installDir/legal-notices/ Wind River may refer to third-party documentation by listing publications or providing links to third-party Web sites for informational purposes. Wind River accepts no responsibility for the information provided in such third-party documentation. Corporate Headquarters Wind River 500 Wind River Way Alameda, CA 94501-1153 U.S.A. Toll free (U.S.A.): 800-545-WIND Telephone: 510-748-4100 Facsimile: 510-749-2010 For additional contact information, see the Wind River Web site: www.windriver.com For information on how to contact Customer Support, see: www.windriver.com/support Wind River Linux Release Notes 5.0.1 4 Apr 13 Contents 1 Overview ...................................................................................................... 1 1.1 Introduction ...................................................................................................................... 1 1.2 Navigating these Release Notes ................................................................................... 1 1.3 Features ............................................................................................................................
    [Show full text]
  • Tinyos Tutorial
    TinyOS Tutorial CSE521S, Spring 2017 Dolvara Gunatilaka Based on tutorial by Mo Sha, Rahav Dor TinyOS community q http://www.tinyos.net/ 1 Telosb / Tmote Sky Ø CC2420 radio compatible with IEEE 802.15.4 Ø 250kbps data rate Ø TI MSP430 microcontroller q 8MHz, 10kB RAM, 48k Flash Ø Integrated antenna q Range 50m (indoor), 125m (outdoor) Ø Integrated light, temperature, IR, humidity sensor 2 NesC Ø Network Embedded System C Ø Variation of C language Ø Static language q No function pointers and no dynamic memory allocation App.c Main.exe .nc nesC Compiler C Compiler TinyOS Programming, Philip Levis 3 TinyOS Installation Ø TinyOS 2.1.2 Installation q Linux, Window, OSX Ø Required Software q msp-430 tools • msp430-libc, binutils-msp430, gcc-msp430 q NesC: https://github.com/tinyos/nesc.git q TinyOS: https://github.com/tinyos/tinyos-main.git 4 Connect motes Ø Check your TinyOS installation q tos-check-env Ø Check which port a mote attached to q motelist Ø Give access permission q sudo chmod 666 /dev/<devicename> q sudo gpasswd -a username dialout 5 make System Ø TinyOS includes Makefiles to support the build process COMPONENT=MainAppC TINYOS_ROOT_DIR?=../..include $(TINYOS_ROOT_DIR)/Makefile.include Ø Compile an app without installing it on a mote: q make [platform] q Platform: telosb, micaz, mica2 Ø Install an app on a mote: q make [re]install.[node ID] [platform] Ø Remove compiled files: q Make clean 6 Build Stages make install.1 telosb .nc to .c and .c to binary Set node ID program mote 7 Sensor Network Architecture gateway Internet Sensors Base station 8 TinyOS Design Ø Component-based architecture q Components and interfaces Ø Task and event-based concurrency q Task: deferred computation q Events: preempt the execution of a task or another event.
    [Show full text]
  • Linux Kernel and Android Development Class Linux Kernel and Android Development Class
    Linux Kernel and Android Development Class Linux Kernel and Android Development Class Gr´egory Cl´ement,Michael Opdenacker, Maxime Ripard, S´ebastienJan, Thomas Petazzoni, Alexandre Belloni, Gr´egory Lemercier Free Electrons, Adeneo Embedded c Copyright 2004-2012, Free Electrons, Adeneo Embedded. Creative Commons BY-SA 3.0 license. Latest update: December 5, 2012. Document updates and sources: http://adeneo-embedded.com Corrections, suggestions, contributions and translations are welcome! Adeneo Embedded. Consulting, Engineering, Training and Support. http://www.adeneo-embedded.com/ 1/742 Rights to copy c Copyright 2004-2012, Free Electrons, Adeneo Embedded License: Creative Commons Attribution - Share Alike 3.0 http://creativecommons.org/licenses/by-sa/3.0/legalcode You are free: I to copy, distribute, display, and perform the work I to make derivative works I to make commercial use of the work Under the following conditions: I Attribution. You must give the original author credit. I Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. I For any reuse or distribution, you must make clear to others the license terms of this work. I Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. Adeneo Embedded. Consulting, Engineering, Training and Support. http://www.adeneo-embedded.com/ 2/742 Welcome! I Audience: embedded software students I Purpose of this course: development environment setup, drivers and kernel development, image building I Prerequisites: basic knowledge of Linux, good knowledge of C, basic knowledge of OS I Agenda Course 1 : Linux kernel - Principles and deployment on embedded platforms (2 hours) Course 2 : Android - Principles and architecture (2 hours) Course 3 : Linux - Driver development (2 hours) I Targeted hardware platform : PandaBoard ES Adeneo Embedded.
    [Show full text]
  • Électronique Numérique
    Electronique´ num´erique J.-M Friedt Electronique´ num´erique J.-M Friedt FEMTO-ST/d´epartement temps-fr´equence [email protected] transparents `a jmfriedt.free.fr 22 novembre 2020 1 / 25 Electronique´ num´erique J.-M Friedt Plan des interventions : 7 cours/TP d'introduction au STM32 en C baremetal : 1 Electronique´ num´eriqueet conception du circuit L3 : aspects analogiques, consommation ´electrique,lecture de datasheet Survol des divers p´eriph´eriquesqui seront abord´es(RS232, SPI, timer, ADC) repr´esentationdes donn´ees(tailles/encodage), masques, architecture Rappels sur Atmega32U4 (Makefile, compilation, masques ...) 2 Premiers pas sur le STM32, adresses des p´eriph´eriques,architecture 3 Fonctionnement de gcc et optimisations : pr´eprocess{compilateur{assembleur{linker, passage C `aassembleur, pointeurs 4 biblioth`equeset s´eparation algorithme/mat´eriel,simulateurs libopencm3, newlib & stubs, ressources requises par les biblioth`eques 5 Bus de communication s´erie,synchrone/asynchrone 6 arithm´etiquesur syst`emesembarqu´es entiers, flottants, convertir un algorithme exprim´een nombres `avirgules vers des entiers, timers 7 interruptions et acquisition de donn´eesanalogiques, fr´equence d'´echantillonnage vecteurs d'interruption, gestion des horloges du STM32, ADC 2 / 25 Electronique´ num´erique J.-M Friedt Compiler son compilateur Une cha^ınede compilation n´ecessite 1 le compilateur (gcc) 2 les outils pour convertir les divers formats de fichiers (binutils) 3 les biblioth`eques (newlib) + debugger (gdb) + outils de programmation du microcontr^oleur (avrdude, stm32flash, dfu-programmer ...) configure --target=arm-none-eabi --prefix=$fHOMEg/sat Automatiser ce processus dans un script pour g´en´ererun ensemble \coh´erent"d'outils 1. 1.
    [Show full text]
  • Neclab: the Network Embedded Control Lab ¡
    Nicholas Kottenstette, Panos J. Antsaklis, “neclab: The Network Embedded Control Lab,” Networked Embedded Sensing and Control, Proceedings of Workshop NESC’05: University of Notre Dame, USA, October 17-18, 2005, Panos Antsaklis and Paulo Tabuada (Eds.), Lecture Notes in Control and Information Sciences (LNCIS) 331, pp. 107-126, Springer 2006. neclab: The Network Embedded Control Lab Nicholas Kottenstette and Panos J. Antsaklis Department of Electrical Engineering University of Notre Dame Notre Dame, IN 46556 USA ¡ nkottens,antsaklis.1 ¢ @nd.edu Abstract — The network embedded control lab, neclab, is a software environment designed to allow easy deployment of networked embedded control systems, in par- ticular wireless networked embedded control systems (wnecs). A wnecs is a collec- tion of interconnected plant sensors, digital controllers, and plant actuators which communicate with each other over wireless channels. In this paper neclab is intro- duced and explained using a simple ball and beam control application. We focus on wnecs which use the MICA2 Motes. 1 Introduction Typically, when a controls engineer needs to develop a new closed-loop control sys- tem she develops the control system in phases. The first phase is to develop a math- ematical model of the system and synthesize a controller. The second phase is to simulate the control system using tools such as MATLAB [23]. In the third phase, using the results from the simulations, the engineer integrates sensors, actuators, re- mote data acquisition and control equipment into the system. This is done in order to acquire additional data and refine the models in order to optimize the controller. When the third phase is complete, the engineer has optimized and deployed a robust control system.
    [Show full text]
  • GNU Development Tools for Qoriq and Powerquicc Processors
    June, 2010 GNU Development Tools for QorIQ and PowerQUICC Processors FTF-NET-F0676 Phil Brownfield Software Product Manager, NMG TM Freescale, the Freescale logo and PowerQUICC are trademarks of Freescale Semiconductor, Inc., Reg. U.S. Pat. & Tm. Off. QorIQ is a trademark of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. The Power Architecture and Power.org word marks and the Power and Power.org logos and related marks are trademarks and service marks licensed by Power.org. © 2010 Freescale Semiconductor, Inc. Objectives ►The GNU toolchain is a vital component in many of Freescale customers’ and partners’ development environments. ►In this session we will review recent changes affecting these free software tools for processors based on Power Architecture® technology • Enhancements supporting the new QorIQ processor family • Enhancements supporting multicore debug with GDB • Changes in related non-GNU software components ►We will also review Freescale’s process for GNU toolchain development Freescale, the Freescale logo and PowerQUICC are trademarks of Freescale Semiconductor, Inc., Reg. U.S. Pat. & Tm. Off. QorIQ is a trademark of Freescale Semiconductor, Inc. TM All other product or service names are the property of their respective owners. The Power Architecture and Power.org word marks and the Power and Power.org logos and related marks are trademarks and service marks licensed by Power.org. © 2010 Freescale Semiconductor, Inc. 2 Agenda ►GNU overview ►Freescale, CodeSourcery and the Open Source community ►GNU component status for Power Architecture technology • GCC • Binutils • GLIBC, EGLIBC • Newlib • LIBSTDC++ • GDB Freescale, the Freescale logo and PowerQUICC are trademarks of Freescale Semiconductor, Inc., Reg.
    [Show full text]