Professional Documents
Culture Documents
Embebidos
Grupo de Investigación en Redes de
Telecomunicaciones Dinámicas y Lenguajes de
Programación Distribuidos.
www.tlon.unal.edu.co
Facultad de Ingeniería
1 • Computación Aplicada
2 • Sistemas Inteligentes
Historia
Estudiantes de Investigador
• Ocho Líder
Pregrado
Sistema Multi-
Virtualización Lenguaje Proyectos
Agente
Estudiantes de
• Nueve
Maestría Investigador Investigador Investigador Investigador
Senior Principal Junior Junior
Proyecto A
Estudiantes de Investigador
• Cuatro Junior
Doctorado
Investigador Investigador Investigador Proyecto B
Estudiantes • (1) Universidad Junior Junior Junior
Externos del Rosario
Control
Memoria
Almacenamiento
secundario
Sistema Raspberry típico
Raspberry Pi
• El sistema Raspberry Pi fue creado en febrero de 2012 por la
Raspberry Pi Foundation. Inicialmente buscaba promover la
enseñanza básica de ciencias de la computación en escuelas y
universidades del Reino Unido.
• Desde entonces se han tenido varios especificaciones y modelos:
Modelo RAM Puertos USB Puerto Notas
Ethernet
3B 1 GB 4 Sí WiFi
Zero 512 MB 1 (microUSB) Bajo costo
2B 1 GB 4 Sí Quad-core
A+ 256 MB 1
B+ 512 MB 4 Sí Discontinuado
A 256 MB 1 Discontinuado
B rev2 512 MB 2 Sí Discontinuado
B rev1 256 MB 2 Sí Discontinuado
RP2 modelo B y RP3 modelo B para uso general
RP2 modelo A+ y RP Zero para propósito específico
Modelos de Raspberry Pi
12 de agosto de 2011.
Tarjetas Raspberry Pi versión
Alpha.
RP Zero (izquierda)
RP1 Modelo A+ (centro)
RP2 Modelo B (derecha)
RAM 1 GB 1 GB
http://elinux.org/RPi_VerifiedPeripherals
Display Serial Interface (DSI)
Igual ISA
Diferente
Igual ISA, organización
organización similar,
implementación
física diferente
Arquitectura de un sistema
embebido
• La arquitectura de un sistema
embebido es una abstracción del
dispositivo embebido. Es una
generalización del sistema SIN
información detallada de cómo se
implementan sus componentes de
hardware (diseño de circuitos) o de
software (código fuente).
• La capa de hardware incluye los
componentes electrónicos
localizados en la tarjeta del sistema.
• Las capas de software del sistema y
de software de aplicaciones incluyen
los programas instalados y
ejecutados en el sistema embebido.
4. Sistemas Operativos
Dispositivos Embebidos
Un sistema operativo es un programa
(software) que…
Hardware
Otro modelo de sistema de computación que
podemos utilizar es: hardware, software y datos.
¿Qué hace un sistema operativo?
Aplicaciones
Kernel
User applications
User
Space
GNU C Library (glibc)
Architecture-Dependent
Kernel Code
Hardware Platform
Propiedades del kernel de
Linux
• A alto nivel, y a bajo nivel, el kernel de linux está
organizado en capas o niveles como varios subsistemas
distintos. Linux es considerado un S.O. monolítico
porque agrupa todos los servicios básicos en el kernel
(diferente a una arquitectura microkernel).
– La arquitectura del kernel de Linux permite entender la
organización del código fuente.
• Linux es un S.O. eficiente (en el uso de la CPU y la
memoria), muy estable y, quizá lo más interesante,
portable: puede ser compilado y ejecutado para
diferentes tipos de procesadores con diferentes
arquitecturas de hardware.
Criterios para seleccionar un S.O.
en sistemas embebidos
1. ¿Cuál es el procesador principal? ¿Qué limitaciones de
desempeño tiene? ¿Cuánto impacta el espacio en la
memoria? Se debe seleccionar un S.O. que haya sido
portado de forma estable y que soporte el hardware del
sistema.
2. ¿Qué características debe tener el S.O. dado el costo,
cronograma del proyecto, requerimientos, etcétera?
¿Qué tan escalable debe ser el S.O.?
3. ¿El sistema embebido requiere un tipo especial de S.O.
junto con alguna certificación? (por ejemplo, en
sistemas soporte médico)
Criterios para seleccionar un S.O.
en sistemas embebidos
4. ¿Cuál es el presupuesto? ¿Cuál es el costo de las
herramientas? ¿cuál es el costo del licenciamiento?
Herramientas incorrectas son una pesadilla para el
equipo de desarrollo.
5. ¿Cuáles son los conocimientos y habilidades requeridos
en el equipo de desarrollo? No se debe escatimar en
capacitación, debe incluirse en el presupuesto y en el
cronograma.
6. ¿Qué tan portable es el sistema operativo? ¿Hay algún
BSP (Board Support Package, como Yocto, Timesys,
Buildroot, BitBake, etc.) compatible con el S.O. y el
hardware?
Board Support Package (BSP)
https://www.raspbian.org/
Noobs
NOOBS es un instalador de sistema operativo que incluye Raspbian.
https://www.raspberrypi.org/downloads/noobs/
Ubuntu Mate
Ubuntu MATE es una distribución Linux basada en Ubuntu
que utiliza el entorno de escritorio MATE.
https://ubuntu-mate.org/raspberry-pi/
PINET
Sistema de cuentas de usuario centralizado y almacenamiento de archivos
Para un salon de clases usando Raspberry Pi
http://pinet.org.uk/
RISC OS
RISC OS es un sistema operativo con kernel propio para procesadores ARM,
distinto a los kernels más comunes como Linux y Windows.
https://www.riscosopen.org/content/downloads/raspberry-pi
OSMC- Multimedia
• OSMC (Open Source Media Center) es una distribución de Linux basada en
Debian que incluye Kodi para una variedad de dispositivos.
• Kodi media center (XBMC Media Center), es un software open source para
diversas plataformas de un concentrador de entretenimiento para HTPCs
(Home theater PCs)
http://kodi.wiki/view/OSMC
Práctica Nº1
https://www.raspberrypi.org/downloads/
Imagen de Raspbian
El siguiente es un ejemplo del contenido del archivo con una dirección IP estática
asociada a la interfaz ethernet
Métodos de acceso al sistema operativo
Acceso con cable de consola. Receta 2.6 del libro Raspberry Pi Cookbook, 2 ed.
Acceso con SSH (Secure Shell). Receta 2.7 del libro Raspberry Pi Cookbook, 2 ed.
Métodos de acceso al sistema operativo
Acceso con VNC (Virtual Network Connection). Receta 2.8 Raspberry Pi Cookbook 2 ed.
Acceso con RDP (Remote Desktop Protocol). Receta 2.9 Raspberry Pi Cookbook, 2 ed.
VNC Virtual Network Computing
Conexión
establecida
1. Formato del mensaje
3. Acciones al
transmitir/recibir
mensajes
2. Orden de transmitisión
de los mensajes
Protocolos de comunicaciones
CENTRO
Aplicación
Aplicación
Redes de
Enrutamiento.
acceso Direccionamiento.
Multiplexamiento.
Estructura de Internet: red de redes
• Difusamente jerárquica
• ¡En Internet un paquete atraviesa muchas redes!
local
ISP Tier 3 local
local local
ISP ISP
ISP ISP
Tier-2 ISP Tier-2 ISP
Tier 1 ISP
NAP
- Aparta estudios,
- Casas con pocas habitaciones
- Casas con muchas habitaciones
El mensaje “viaja” a
través de la red
• El modelo OSI
distingue entre:
– Servicios (funciones): Capa A Capa A
Qué hace la capa
– Interfaces: Cómo las
Capa B Capa B
capas vecinas pueden
solicitar/dar servicios
– Protocolos: Reglas para NODO 1 NODO 2
que capas “pares” se
comuniquen
Operación del modelo OSI
Física (1)
Operación del modelo OSI
Física (1)
BORDE
CENTRO
Aplicación
Aplicación
Aplicación Aplicación
Presentación Presentación
Sesión Sesión
Intermediate systems
Transporte Transporte
Aplicación
Presentación
Aplicación Aplicaciones y procesos que usan la red
Sesión
Transporte Servicios de entrega de datos entre procesos
Red
Internet Define el datagrama y maneja el direccionamiento/enrutamiento
Enlace
Acceso de
Rutinas para acceder el medio físico
Red
Física
Encapsulación de datos
Capa de aplicación
• Cada capa de la pila
TCP/IP adiciona DATOS
TCP UDP
Aplicaciones
ASCII Aplicaciones
binarias Aplicación
NVTs
IP IP
Puerta de enlace
Formato del paquete y las
PDUs
Arquitectura de GNU/Linux
y el código para redes
User applications
User
Space
GNU C Library (glibc)
Código para
redes está en
GNU/ System Call Interface el Kernel
Linux
Kernel Kernel
Space
Architecture-Dependent
Kernel Code
Hardware Platform
Subsistemas del kernel de
Linux y el código para redes
System Call Interface (SCI)
Código para
Process Management (PM) Virtual File System (VFS) redes está en
el Kernel
Memory Management
Network Stack
(MM)
Architecture-dependent code
Capas de la implementación
de red en el kernel
Puerta de enlace
Comandos Básicos
controlado
por OS
SSH (Secure Shell)
SSH (Secure SHell) protocolo para acceder a máquinas remotas
a través de una red de forma segura
Los siguientes son ejemplos de la generación de una nueva llave cuando hay fallas
en la comunicación
Un socket buffer usado para el intercambio de datos entre los niveles de ejecución
de red sin tener que copiar los datos, en cada capa, ofreciendo ganancias en
velocidad .
• Configuración Estática
• -Configuración Dinámica.
• Configuración Automática.
NTP
Network Time protocol
NTP
Network Time Protocol (NTP) es un protocolo para sincronizar los relojes
de los nodos de la red
NTP: jerarquía con base en el
stratum
Los niveles de stratum definen la distancia desde el reloj de referencia y están asociados
a la calidad en la medición del tiempo. Un reloj de referencia es un reloj de stratum-0
donde se asume con mayor exactitud y tiene poco o ningún retraso.
El reloj de referencia se sincroniza con la hora UTC. Los servidores con stratum-0 no pueden
utilizarse directamente desde la red. Deben conectarse a computadores que operan como
servidores stratum-1
Formato de la PDU de NTP
6. Lenguajes de programación
¿Qué es un lenguaje?
• Un lenguaje es un conjunto de elementos que
permite expresarnos y comunicarnos con otros, ya
sean personas, animales, computadores, etc.
• Un lenguaje es un sistema de
comunicación estructurado para el que existe
un contexto de uso y ciertos principios
combinatorios formales.
– Existen contextos tanto naturales como artificiales.
• Lenguaje humano, lenguaje animal y lenguajes
formales
Modelos de computación
• Un lenguaje de programación está relacionado
con un modelo computacional
• Un modelo computacional es un sistema formal
que define cómo se realizan cálculos
(operaciones computacionales)
• Hay muchas formas de definir modelos
computacionales.
• La cantidad de modelos de computación que
se consideran útiles es menor que la cantidad
de lenguajes de programación
Teoría de lenguajes de
programación
• Es una rama de la ciencia de la computación que
se encarga del diseño, implementación, análisis,
caracterización y clasificación de lenguajes de
programación.
• Es un campo multi-disciplinar, dependiendo tanto
de (y en algunos casos afectando) las matemáticas,
la ingeniería de software, la lingüística, e incluso
las ciencias cognitivas.
• Un sitio sobre teoría de lenguajes de programación
es http://lambda-the-ultimate.org/
Fases en el ciclo de vida de un
programa en el lenguaje C++
El Kernel de Linux está construido en lenguaje C
https://www.raspberrypi.org/documentation/linux/kernel/building.md
Ambiente de desarrollo típico
de C++ [1/2]
Ambiente de desarrollo típico
de C++ [2/2]
Fase I: Edición del código
• En esta fase el programador escribe el programa en
código fuente utilizando caracteres ASCII en un editor
que el/ella haya seleccionado y lo guarda en el disco.
• El programa de edición puede variar desde la
herramienta mas simple (block de notas de Windows o
el editor vi en Linux) hasta el editor de un sofisticado
ambiente integrado de desarrollo (IDE) como Eclipse.
• Una práctica es mantener en archivos separados las
partes funcionales de un programa, de tal forma que un
proyecto puede tener varios archivos con código fuente y
varios con archivos de cabecera (.h)
Fase II: Preprocesamiento
• Para algunos autores, el preprocesamiento también es parte
de la compilación.
• El preprocesador es un programa de procesamiento de texto
especial que realiza las siguientes acciones:
– Inserta las librerías y archivos de cabecera declarados con la
instrucción #include
– Convierte los valores especificados por las sentencias #define a
constantes
– Convierte las definiciones de macros a código
– Incluye o excluye condicionalmente ciertas partes del código
basado en las sentencias #if, #elif y #endif
• La salida del preprocesador es código C/C++ en su forma
final.
• gcc –E programa.c -o programa.i
Fase III: compilación
http://www.secguru.com/files/linux_file_structure
182
FSSTND : (Filesystem
standard)
• Todos los directorios están agrupados bajo la raíz del
sistema"/"
• root – El directorio del usuario root
• home – Contiene los directorios de los usuarios y aloja
algunos servicios
– ftp
– HTTP
– samba
183
FSSTND : (Filesystem
standard)
• bin – Comandos necesarios durante el boot, que puede ser
necesarios para usuarios nomales
• sbin – Como bin pero los comando sno son usados por
usuarios normales, los comandos son orridos por LINUX.
• proc – Este fylesystem no esta sobre el disco, es un sistema de
archivos virtual que existe en el kernel , alojado en
memoria.This filesystem is not on a disk. It is a virtual
filesystem that exists in the kernels imagination which is
memory
184
FSSTND : (Filesystem
standard)
• usr – Contiene todos los comandos, librerías, páginas man,
archivos de juegos y estadísticas para una operacion normal
– bin - Almost all user commands. some commands are in /bin or
/usr/local/bin.
– sbin - System admin commands not needed on the root filesystem. e.g., most
server programs.
– include - Header files for the C programming language. Should be below
/user/lib for consistency.
– lib - Unchanging data files for programs and subsystems
– local - The place for locally installed software and other files.
– man - Manual pages
– info - Info documents
– doc - Documentation
– tmp
– X11R6 - The X windows system files. There is a directory similar to usr below
this directory.
– X386 - Like X11R6 but for X11 release 5
185
FSSTND : (Filesystem
standard)
• boot - Files used by the bootstrap loader, GRUB,LILO. Kernel
images are often kept here.
• lib – Librerias compartidas necesarias para los programas
contenidos en el file system.
• modules – Carga modulos en el kernel, especialmente los
necesarios para la recuperación de desastres.
• dev – Archivos de dispostivos
• etc – Archivos de configuración propios de la máquina
• skel – Cuando un directorio home es creado este es inicializado
con arhivos desde este directorio.
• sysconfig – Archivos que configuran los dispositivos del sistema
LinuxFiles that configure the linux system for devices.
186
FSSTND : (Filesystem
standard)
• var – Contiene archivos que pueden modificar el sistema *mail, news,
printers log files, man pages, temp files)
– file
– lib - Files that change while the system is running normally
– local - Variable data for programs installed in /usr/local.
– lock - Lock files. Used by a program to indicate it is using a particular device or file
– log - Log files from programs such as login and syslog which logs all logins and logouts.
– run - Files that contain information about the system that is valid until the system is
next booted
– spool - Directories for mail, printer spools, news and other spooled work.
– tmp - Temporary files that are large or need to exist for longer than they should in /tmp.
– catman - A cache for man pages that are formatted on demand
187
FSSTND : (Filesystem
standard)
• mnt – Montaje de puntos temporales para la
administración del sistema.
• tmp – Archivos temporales. Programas que
corren después del boot, puede usar el
directorio /var/tmp
188
SHELL
SHELL
Sintáxis
Sintáxis
Shell
Shell
Shell
Ejemplos de Shell
Variables especiales
• $1,$2,…
• shift
• $#
• $@
• $0
• $$
• $?
Ejemplo
Condicionales
if else elif
then fi
Comandos Básicos
Comandos Básicos
Comandos Básicos
Práctica Nº2
n =1 n =2 n =4 n =N
Estado 2 Operación
Estado 3 Mantenimiento
Red Ad Hoc
MANET: Mobile Ad-Hoc
Network
1. Broadcast
2. Re-Broadcast
3. Re-Re-Broadcast (…)
Flooding: Paquetes BATMAN
Paquetes
BATMAN(OGM+HNA)
D
G
C
X
A wants to reach X
A:10
A B F
A:9 D
G
C
X
A:8
D
G
C A:7
X
A:7 E
TO VIA Q TO VIA
A B 8 A B
A C 7
A B F
A:0
D A:6
G
C
A:4 X
A:7
TO VIA Q TO VIA
A D 6 A E
A E 7
A B F
D
G A:5
C
X
A:6
E
TO VIA Q TO VIA
A G 5 A E
A E 6
A
B F
D
G
C
X
A E 6 A D 4
Escenarios de enrutamiento
Escenarios de enrutamiento
Escenarios de enrutamiento
Modelo Inicial
11. Beagle Bone Black
Generalidades
http://beagleboard.org/black
Generalidades
Generalidades
Generalidades
Conexión
Generalidades
Generalidades
Diagrama de Bloques
Aplicaciones
Escritorio
Interfaz
Interfaz
IDE
Test
GPIO
Ejemplo
12. REFERENCIAS
[1] Ross, D. T. (1977). Structured analysis (SA): A language for communicating ideas.
Software Engineering, IEEE Transactions on, (1), 16-34.
[2] Rawls, J. (2012). Teoría de la justicia. Fondo de cultura económica.
[3] de Spinoza, B. (1984). Ética demostrada según el orden geométrico (Vol. 4). N2kt.
[4] Kuhn, T. S. (2011). La estructura de las revoluciones científicas. Fondo de cultura
económica.
[5] Russell, S. J., & Norvig, P. (1996). Inteligencia Artificial: un enfoque moderno.
[6] Aho, A. V., Sethi, R., & Ullman, J. D. (1998). Compiladores: principios, técnicas y
herramientas. Pearson Educación.
[7] Fitzek, F. H., & Katz, M. D. (2013). Mobile Clouds: Exploiting Distributed Resources
in Wireless, Mobile and Social Networks. John Wiley & Sons.
[8] Hennessy, J. L., & Patterson, D. A. (2012) Computer Architecture: A Quantitative
Approach. Elsevier, Inc.
12. REFERENCIAS
[9] Noergaard, T. (2013) Embedded Systems Architecture, A Comprehensive Guide for
Engineers and Programmers. Elsevier Inc.
[10] Raspberry Pi Foundation. https://www.raspberrypi.org/
[11] Hughes Systique Corporation http://hsc.com/Blog/Embedded-In-Our-Society-A-
History-Of-Embedded-Operating-Systems-1
[12] MIPI Alliance http://mipi.org/
[13] IEEE Standards Association - IEEE 802.3™: ETHERNET.
https://standards.ieee.org/about/get/802/802.3.html
[14] IEEE Standards Association - IEEE 802.11™: Wireless LANs.
https://standards.ieee.org/about/get/802/802.11.html
[15] Broadcom https://www.broadcom.com/
[16] Embedded Linux Wiki http://elinux.org/
[17] Monk, S. (2016) Raspberry Pi Cookbook: Software and Hardware Problems and
Solutions. O'Reilly Media.
12. REFERENCIAS
[18] Yocto project https://www.yoctoproject.org/
[19] OpenEmbedded framework http://www.openembedded.org/
[20] Van Roy, P y Haridi S. (2004) "Concepts, Techniques, and Models of Computer
Programming." Primera edición. The MIT Press.
[21] Deitel & Deitel. (2010) “C++ How to program”. Septima edición. Prentice Hall.
[22] Stevanovic, M. (2014) “C and C++ compiling”. Apress.
[23] Raspberry gPIo https://learn.sparkfun.com/tutorials/raspberry-gpio/gpio-pinout
[24] Savage, J.E. ”Models of Computation. Exploring the Power of Computing”
http://cs.brown.edu/~jes/book/pdfs/ModelsOfComputation.pdf
[25] Linux Cross Reference http://lxr.free-electrons.com/
[26] Mauerer W. (2008) “Professional Linux Kernel Architecture.” Wrox.