You are on page 1of 244

Entrenamiento Básico Sistemas

Embebidos
Grupo de Investigación en Redes de
Telecomunicaciones Dinámicas y Lenguajes de
Programación Distribuidos.
www.tlon.unal.edu.co

Universidad Nacional de Colombia -Universidad Popular del Cesar


Sena Valledupar
Agenda

1. Grupo de investigación TLÖN.


2. Raspberry Pi BootCamp.
3. Sistemas Embebidos.
4. Sistemas Operativos.
5. Redes de datos
6. Lenguajes de Programación
Agenda
7. Drivers para dispositivos
8. Entendiendo el File System de
Linux.
9. Shell de Linux.
10. Configuración de Red Ad hoc.
11. BeagleBone Black.
12.Referencias
1.Grupo de investigación TLÖN
Tlön, Uqbar, Örbis Tertius

El nombre del grupo es un


homenaje al escritor Argentino
Jorge Luis Borges, tomado del cuento
“Tlön, Uqbar, Örbis Tertius” que forma
parte del libro Ficciones (1944).
Grupo de investigación en Redes de
telecomunicaciones Dinámicas &
Lenguajes de Programación distribuidos

Lagunas de Siecha , Guasca Diciembre 2015


Grupo de Investigación TLÖN

Universidad Nacional de Colombia Docencia , Investigación y Extensión


Sede Bogotá

Facultad de Ingeniería

Departamento de Sistemas e Industrial


Líneas de Investigación
Grupo de investigación TLÖN

1 • Computación Aplicada
2 • Sistemas Inteligentes

Historia

2003:Inició la investigación sobre redes Ad-hoc.


2014: Creación del grupo en el Sistema de Gestión de la Investigación -
Hermes de la Universidad Nacional sede Bogotá.
2015: Aval de la Universidad al grupo TLÖN.
2015: Presentación ante Colciencias del grupo para el proceso de
Categorización.
Grupo de Investigación TLÖN
Docentes • Uno (Director)

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

Integrantes Semestre I-2016 Desarrollo de Proyectos


2. Raspberry Pi Boot Camp
Raspberry Pi – Cursos en el
Mundo
Raspberry PI BootCamp
Horas 16 Horas 2- Sesiones de 8 horas

Prácticas : Raspberry Pi -Aplicaciones

Dirigido a: Estudiantes Sena y Universidad Popular del


Cesar.

Materiales: Raspberry Pi, PC, Material Didáctico, Video


Beam/TV.
3. Sistemas Embebidos
¿Dónde se usan hoy sistemas
embebidos?
• Los sistemas con
computadores embebidos se
encuentran en dispositivos de
uso diario: hornos
microondas, lavadoras,
impresoras, equipos de
interconexión de redes,
automóviles, equipo médico,
etc.
• Un automóvil de gama alta
puede incluir más de 100
microprocesadores.
Clases de computadores
Característica Celular/ Escritorio Servidor Cluster de Sistemas
Tablet computadores embebidos
Precio del US$100 – US$300 – US$5.000- US$100.000 - US$10 –
US$1.000 US$2.500 US$10’000.000 US$200’000.000 US$100.000
sistema
Precio del US$10 – US$50-US$500 US$200 – US$50 – US$250 US$0.01 –
US$100 US$2.000 US$100
microprocesa
dor
Parámetro de Costo, Relación Rendimient Relación Precio,
diseño crítico consumo de precio/dese o, precio/desem consumo de
del sistema potencia, mpeño, disponibilida peño, energía,
desempeño. consumo de d, rendimiento, desempeño
potencia, escalabilida consumo de específico-
capacidad d, consumo potencia aplicación.
gráfica de energía
¿Qué es un sistema embebido?

• Un sistema embebido (embedded system) es un


sistema basado en computador aplicado.
– Generalmente son más limitados en hardware y software
que un Computador Personal.
– Están diseñados para realizar una función dedicada
– Tienen requerimientos de calidad y confiabilidad más
exigentes que otros sistemas basados en computador
• En este momento no hay una definición que abarque
todos los sistemas embebidos.
Historia de los sistemas
embebidos
– 1960: C.S. Draper, – 1966: fue reemplazado el
laboratorio de D-17 para los misiles
Minuteman II. Las
instrumentación de compuertas cuádruples
MIT, circuitos NAND pasaron de costar
monolíticos integrados US$1000 c/u a US$3
para computador guía c/u.
de las naves Apollo – 1968: B. Noyce y G.
– 1961: computador guía Moore fundaron Intel
Autonetics D-17 para los – 1969: Primer sistema
misiles Minuteman embebido en un
– 1965: Minicomputador automóvil (Volkswagen
PDP-8 de 12 bits (DEC), 1600).
el computador más – 1971: Procesador Intel
vendido en 1973. 4004 de 4 bits para
calculadoras
Historia de los sistemas
embebidos
– 1974: Intel 8008 micro – 1983: Computador de
procesador de 8 bits. hogar con pantalla táctil:
Motorola MC6800. HP-150
– 1975: Fundada Microsoft. – 1987: Wind River
presenta el S.O. embebido
Altair 8800: computador VxWORKS (en 1997 es
para el hogar. S.O. del Mars Pathfinder)
– Inicio de la década de los – 1989: Tim Berners-Lee
80: Microprocesadores crea WWW. Impresoras
optimizados en rapidez y de matriz de puntos.
almacenamiento. – 1992: Sistemas embebidos
Microcontroladores en equipos inalámbricos.
optimizados para potencia Más de 10 millones de
y tamaño. teléfonos celulares en uso.
Historia de los sistemas
embebidos
– 2000: La firma Timesys
– 1993: Apple: Newton presenta Linux/RT 1.0,
PDA un versión de Linux para
– 1996: Windows tiempo real
Embedded CE 1.0 – 2005: Google adquiere
– 1998: Sistemas para Android Inc.
tiempo real. La firma – 2007: Apple presenta el
FSMLabs patenta la iPhone: dispositivo móvil
técnica utilizada en embebido todo en uno.
RTLinux (sistema
operativo diseñado para – 2008: Se funda Android
albergar aplicaciones para Alliance. El T-mobile G1
tiempo real) se lanzó al mercado y
Android es declarado
– 1999: Primeros productos código abierto
embebidos que usan
Linux como sistema
operativo
Organización de una
computadora
• Independientemente de las diferencias en su
apariencia física, casi todos los computadores
pueden modelarse mediante seis unidades lógicas:
1. Unidad de entrada
2. Unidad de salida
3. Unidad de memoria
4. Unidad aritmética y lógica (ALU)
5. Unidad central de procesamiento (CPU)
6. Unidad de almacenamiento secundario.
Organización de una
computadora
CPU (Central Processing Unit)

Control

Entrada ALU Salida

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)

Tomado de: https://www.raspberrypi.org/blog/the-alpha-boards-are-here/


Raspberry Pi Modelo B
El microchip LAN9514/LAN9514i:
System-on-a-chip (SoC): controlador integrado de un hub
BroadCom BCM2837. con cuatro puertos USB 2.0 y
Integra gran parte de los un controlador Ethernet 10/100.
módulos que componen
un computador

Display Serial Interface:


especificación de la MIPI
Alliance para la interfaz de
display touch screen.
Camera Serial Interface:
especificación de la MIPI
Alliance que define la interfaz
entre una cámara digital
y un procesador.
Comparación Raspberry 2 modelo B y
Raspberry 3 modelo B
Tarjeta Raspberry Pi 2 Modelo B Raspberry Pi 3 Modelo B

Procesador Broadcom BCM2836 Broadcom BCM2837


Quadcore ARM Cortex-A7, Quadcore ARM Cortex-A53,
CPU Core
32Bits 64Bits
Clock Speed 900 MHz 1.2GHz

RAM 1 GB 1 GB

GPU 250 MHz VideoCore IV® 400 MHz VideoCore IV®


1 x 10 / 100 Ethernet (RJ45 1 x 10 / 100 Ethernet (RJ45
Network Connectivity
Port) Port)
802.11n wireless LAN (WiFi) y
Wireless Connectivity No existe
Bluetooth 4.1
USB Ports 4 x USB 2.0 4 x USB 2.0

GPIOs 2 x 20 Pines 2 x 20 Pines

Interfaz para Cámera 15-pin MIPI 15-pin MIPI


Interfaz para Monitor DSI 15 Pin / HDMI 1.4 Out / DSI 15 Pin / HDMI 1.4 Out /
(display) Composite RCA Composite RCA
Fuente de potencia
1.8 A 2.5 A
(Corriente)
Comparación Raspberry 2 modelo B y
Raspberry 3 modelo B
Composite video-audio para la
Raspberry Pi Modelo B+

El puerto de video análogo (Composite) es diferente para los modelos B y B+


- El modelo B utiliza un cable RCA estándar (solo un canal)
- El modelo B+ utiliza un cable de 4 polos (TRRS)
HDMI (interfaz multimedia
de alta definición)
• Es una norma de audio y vídeo digital cifrado sin
compresión.
• HDMI provee una interfaz entre diferentes tipos de
fuentes de audio y vídeo digital (un reproductor de Blu-
ray, un computador) hacia un monitor de audio/vídeo
digital compatible, tal como un televisor digital (DTV).
• HDMI permite el uso de vídeo computarizado de alta
definición, así como audio digital multicanal en un
único cable.
• Es independiente de los varios estándares DTV
HDMI (interfaz multimedia
de alta definición)
• Hay varias revisiones de HDMI:
– HDMI 1.0: Diciembre de 2002. 4.95 Gbit/s.
– HDMI 1.2: Agosto de 2005. 4.95 Gbit/s. Agregó One bit
Audio (super Audio CD), hasta 8 canales
– HDMI 1.3: junio 2006. 10.2 Gbit/s. Soporte para Dolby
TrueHD y DTS-HD (usados en HD-DVD y Blu-ray Disc).
– HDMI 1.4: Mayo 2009. 10.2 Gbit/s. Video y audio de alta
definición.
– HDMI 2.0: Septiembre 2013. 18 Gbits/s. hasta 32 canales
de audio, 2 streaming de video, 4 streamings de audio,
soporte 21:9
– HDMI 2.1: en diseño.
Cables HDMI
Monitor con conector VGA
(Video Graphics Array):
Usar un conversor de HDMI
A VGA referencia pi-view.

Monitor con conector DVI


(Digital Visual Interface):
Usar un cable conversor de HDMI macho
a un DVI hembra.

Cable Adaptador HDMI


de alta velocidad a
Micro HDMI
HaM

http://elinux.org/RPi_VerifiedPeripherals
Display Serial Interface (DSI)

• Es una especificación de MIPI Alliance orientada a


interfaces para pantallas de cristal líquido.
• Define un bus serial y un protocolo de
comunicaciones entre el origen de los datos de la
imagen y la pantalla donde se mostrarán las
imágenes.
• Procedimiento de instalación de una pantalla LCD
– Video: https://www.adafruit.com/product/2718
Bus Universal en Serie (USB)
• Estándar industrial que define los cables, conectores y protocolos
usados en un bus (sistema digital que transfiere datos entre los
componentes de una computadora ) para conectar, comunicar y
proveer de alimentación eléctrica entre computadoras, periféricos y
dispositivos electrónicos.
• De acuerdo con su velocidad de transferencia se clasifica en cuatro
tipos:
– USB 1.0 (baja velocidad): hasta 1,5 Mbit/s [1996]
– USB 1.1 (velocidad completa): hasta 12 Mbit/s [1998]
– USB 2.0 (alta velocidad): hasta 480 Mbit/s (en la práctica 280 Mbit/s)
[2000]
– -USB 3.0 (Superalta velocidad): hasta 4.8 Gbit/s [2009]
• Nota: en agosto de 2014 la USB-IF presentó la especificación USB
3.1, conocida como “Tipo C”. Hasta 10Gbit/s
Bus Universal en Serie (USB)

• USB contempla varios tamaños y tipos de conectores


compatibles con las diferentes especificaciones (estándar,
mini y micro). Cada extremo de un cable USB utiliza un
tipo de conector diferente para evitar las sobrecargas
eléctricas y no dañar el equipo:
– El conector hembra tipo A suministra potencia
– El conector hembra tipo B consume potencia.
• Sin embargo, este esquema de topología dirigida se ha
perdido debido a las conexiones USB multipropósito
(USB On-The-Go) en smartphones y routers WiFi
alimentados por puerto USB, que exigen A-to-A o B-to-B
Bus Universal en Serie (USB)
Especificación Rapidez Potencia Modo de Hilos Máxima Color
transmisión longitud
USB 2.0 480 Mb/s 2.5 W Half Duplex 4 5m Grises
USB 3.0 4.8 Gb/s 4.5 – 7 W Full Duplex 9 3m Azules*
* El conector Micro-B para la especificación USB 3.0 no es de color azul.
Ethernet
• Ethernet es una familia de tecnologías para redes
de computadores cableadas de área local (LAN) y
redes de área metropolitana (MAN).
• Define las características de cableado y señalización
de nivel físico y los formatos de tramas de datos del
nivel de enlace de datos del modelo OSI.
• Estandarizada como la norma IEEE 802.3
– https://standards.ieee.org/about/get/802/802.3.html
Ethernet
• El estándar define tecnologías para varios anchos
de banda:
– 10 Mbps (Ethernet), 100 Mbps (Fast Ethernet), 1000
Mbps (Gigabit Ethernet), 10Gbps (10Gigabit Ethernet),
40Gbps (40Gigabit Ethernet), 100Gbps (100Gigabit
Ethernet).
– Ya se inicio el proceso para diseñar y construir 400
Gbps.
• Para 100 Mbps se definen tecnologías para cable de
cobre (100BaseTX) y para Fibra Óptica
(100BaseFX).
Soporte WiFi y Bluetooth
• En las Raspberry anteriores a la Raspberry 3, se
debían utilizar adaptadores USB para las dos
tecnologías.
– http://elinux.org/RPi_USB_Wi-Fi_Adapters
– http://elinux.org/RPi_USB_Bluetooth_adapters
• En la Raspberry 3 modelo B las tecnologías WiFi
(IEEE 802.11) y Bluetooth 4.1 son soportadas por
el chip Broadcom BCM43438.
• Una antena de chip cerámica es utilizada para
WiFi y Bluetooth 4.1.
WiFi
• WiFi es un mecanismo de conexión inalámbrica en las
bandas de 900 MHz, 2.4 GHz, 3.6 GHz, 5 GHz y 60 GHz.
• Los dispositivos Wifi pueden conectarse a Internet a través
de AP.
– Hay varios estándares: IEEE 802.11 (1997): 2 Mbps, IEEE
802.11a (1999): 54 Mbps, IEEE 802.11b (1999): 11 Mbps, IEEE
802.11g (2003): 54 Mbps, IEEE 802.11n (2009): 600 Mbps, IEEE
802.11ac (2013): 1.300 Mbps, IEEE 802.11ad (2012): 7.000 Mbps.
– Están previstas IEEE 802.11af, IEEE 802.11ai, IEEE 802.11aj,
IEEE 802.11aq, IEEE 802.11ax y IEEE 802.11ay.
• https://standards.ieee.org/about/get/802/802.11.html
• En la Raspberry Pi 3 se tiene WiFi 802.11 b/g/n hasta
150Mbps
Bluetooth
• Bluetooth es una estándar para conexión inalámbrica para
intercambio de datos en cortas distancias (en la banda de 2.4
GHz a 2.485 GHz) para dispositivos fijos y móviles, que
permite construir redes WPAN (redes de área personal
inalámbricas).
– Hay diversas versiones: Bluetooth v1.0 (1999), Bluetooth v1.1
(2002), Bluetooth v1.2 (2003), Bluetooth v2.0 (2004), Bluetooth
v2.1 (2007), Bluetooth v3.0 (2009), Bluetooth v4.0 (2010),
Bluetooth v4.1 (2013), Bluetooth v4.2 (2014) y Bluetooth v5 (junio
de 2016)
• Wi-Fi y Bluetooth se pueden considerar tecnologías que se
complementan en aplicaciones y uso.
• Bluetooth es definido como una arquitectura de capas que
consta de protocolos principales, protocolos para control de
telefonía, etcétera.
Conector de propósito general
de E/S (GPIO)
• GPIO hace referencia a un
conjunto de pines genéricos
en un circuito integrado cuyo
comportamiento puede ser
controlado mediante
programas. Son pines
bidireccionales, que pueden
utilizarse para controlar LEDs,
motores, botones, etcétera.
• En las Raspberry existen tres
versiones de conector GPIO,
dos con 26 pines –modelo
original- y una con 40 pines
(versión actual).
Pines conector GPIO
Uso del conector GPIO
• Además de acceder los pines bidireccionales de E/S, a
través del conector se pueden acceder los pines de la
interfaz Serial (UART), la interfaz I2C y la interfaz SPI.
– UART (Universal Asynchronous Receiver-Transmitter):
controla los puertos y dispositivos seriales.
– I²C (Inter-Integrated Circuit, I-cuadrado-C): es un bus de
datos serial desarrollado en 1982 por Philips para la
comunicación entre diferentes partes de un circuito.
– SPI (Serial Peripheral Interface): estándar de
comunicaciones para la transferencia de información entre
circuitos integrados en equipos electrónicos. Controla
dispositivos electrónicos que acepten un flujos de bits
regulados por un reloj (comunicación sincrónica).
Evitando daños al utilizar el
conector GPIO
• No coloque más de 3.3 V en una señal de entrada
ninguno de los pines de la GPIO
• En un pin de salida no coloque más de 16 mA. En
los conectores GPIO de 26 pines la suma de las
corrientes de todas las salidas no debe superar 50
mA. En los conectores GPIO la suma de las salidas
no debe superar los 100mA.
• Cuando utilice LEDs, 3 mA es suficiente para
encenderos con una resistencia en serie de 470 Ω
• Cuando la Raspberry esté encendida NO toque el
conector GPIO con un destornillador o cualquier
objeto metálico.
• No alimente la unidad con más de 5 V
• En los pines de 5V no coloque una carga que
requiera más de 250mA
Tarjeta MicroSD
• Las tarjetas microSD, transflash o T-flash
corresponden al formato de tarjeta de memoria
flash más pequeña que la miniSD.
• La memoria flash permite la lectura y escritura de
múltiples posiciones de memoria en la misma
operación. Se trata de la tecnología empleada en
los dispositivos denominados memoria USB.
• SD (Secure Digital): formato de tarjeta de
memoria para dispositivos portátiles, por
ejemplo: cámaras digitales, teléfonos móviles,
computadoras portátiles, entre muchos otros.
Tarjeta MicroSD
• El formato SD incluye cuatro versiones de tarjetas,
disponibles en tres tamaños.
• Las cuatro familias son:
– “Standard Capacity” (SDSC), la original, "capacidad
estándar",
– “High Capacity” (SDHC), "alta capacidad",
– “Extended Capacity” (SDXC), "capacidad extendida",
– “Input/Output” (SDIO), "entrada/salida".
• Los tres tamaños son:
– SD estándar original,
– miniSD,
– microSD.
Tarjeta MicroSD
Tarjeta SD, Tarjeta miniSD y
• Capacidades Tarjeta microSD

microSD microSDHC microSDXC


•16 MB
•32 MB
•64 MB
•128 M
•4 GB •64 GB
•256 MB
•8 GB •128 GB
•512 MB
•16 GB •200 GB
•1 GB
•32 GB •512 GB
•2 GB
•64 GB •2 TB (para 2016)
•4 GB
•8 GB
•16 GB
•32 GB
MicroSD
• Existen tres modos de transferencia soportados por SD:
– Modo Serial Peripheral Interface (SPI): entrada separada serial y salida serial.
– Modo un-bit SD: separa comandos, canales de datos y un formato propietario de
transferencia.
– Modo cuatro-bit SD: utiliza terminales extra más algunos terminales reasignados
para soportar transferencias paralelas de cuatro bits.
• Velocidades mínimas garantizadas de transferencia:
Clase Velocidad
Clase 2 2 MB/s
Clase 4 4 MB/s
Clase 6 6 MB/s
Clase 10 10 MB/s
UHS clase 1 10 MB/s
UHS clase 3 30 MB/s
Arquitectura de un
computador
• Se puede considerar que la arquitectura de un
computador tiene tres elementos:
1. El conjunto de instrucciones (ISA - Instruction Set
Architecture)
2. La organización (microarquitectura)
3. El hardware (componentes electrónicos)
• Los dos últimos están asociados a la
implementación del computador
Arquitectura de un
computador
• ISA: hace referencia al conjunto de instrucciones visibles al
programador.
– Cuando se compila un programa, este es traducido a lenguaje de
máquina. Este lenguaje de máquina es que implementa el ISA.
• El ISA es la frontera entre el software y el hardware
– Un procesador 80x86 tiene un conjunto de instrucciones
diferente a un procesador ARM y los dos tienen un conjunto de
instrucciones diferente a un procesador MIPS.
• Los ISA se diferencian por la forma en que acceden y
direccionan la memoria, los modos de direccionamiento, el
tipo y tamaño de los operandos, las operaciones soportadas,
las instrucciones condicionales soportadas, la codificación
(fija o variable), entre otros.
Arquitectura de un
computador
• Microarquitectura (organización): incluye aspectos como el sistema
de memoria, la interconexión de la memoria, el diseño de la CPU
(Central Processing Unit), donde se implementan la aritmética, la lógica,
las instrucciones condicionales y la transferencia de datos).
– Los procesadores AMD Opteron y el procesador Intel Core i7 que tienen
el mismo conjunto de instrucciones (ISA) -el conjunto de instrucciones
x86- pero tienen diferentes organizaciones
• Hardware: se refiere a los componentes específicos de un
computador, incluyendo el diseño lógico detallado y la tecnología de
integración de los circuitos.
– El procesador Intel Core i7 y el Intel Xeon 7560 son casi idénticos, pero
tienen diferentes velocidades de reloj y diferente sistema de acceso a la
memoria, haciendo que el Xeon 7560 sea mejor para servidores.
Arquitectura de un computador
(Analogía)
ISA
Diferente ISA

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…

• ...gestiona (maneja) los componentes físicos (hardware) de un


computador.
• ...ofrece las bases (un entorno) para que los programas de
aplicación se ejecuten.
• … actúa como intermediario entre la persona que usa el
computador (usuario) y los componentes físicos (hardware)
del computador.
• Ejemplos: Windows XP, Linux, Windows 2003, Unix
(Solaris, Irix, HP-UX, AIX)
– Algunos son diseñados para ser cómodos, otros para ser eficientes y
otros para tener una combinación de estas dos características.
¿Qué hace un sistema operativo?

• Un sistema de computación puede ser estudiado como


conformado por cuatro componentes:
– El hardware
• CPU
• Memoria
• Dispositivos de E/S Usuario 3

– El sistema operativo Usuario 2


Editor de texto
Usuario 4

– Los programas de aplicación Hoja electrónica


Aplicaciones
Bases de datos

– Los usuarios Compilador Navegación


Sistema
Operativo
Usuario 1 Usuario 5

Hardware
Otro modelo de sistema de computación que
podemos utilizar es: hardware, software y datos.
¿Qué hace un sistema operativo?

• El sistema operativo es similar a un gobierno. Realiza funciones


que por sí mismas no son útiles para las personas, pero provee
un ambiente (entorno) en el cual otros programas pueden hacer
trabajo útil como escribir una carta, calcular una nómina o
navegar en Internet.
• Para entender mejor lo que hace un sistema operativo se puede
tratar de analizarlo desde dos puntos de vista:
– del usuario
– del sistema
S.O. desde el punto de vista del
usuario

• Sistemas para un usuario: Se diseña para que sea fácil de


usar
• En sistemas multiusuario: se diseña para que sean fáciles de
usar y utilicen adecuadamente los recursos, de tal forma
que el tiempo de CPU, la memoria y los dispositivos de E/S
se utilicen equitativa y eficientemente.
• Los dispositivos portátiles: diseñados para usarse
fácilmente, pero teniendo en cuenta el desempeño del
equipo de acuerdo con la cantidad de energía en la batería.
• Sistemas embebidos: están diseñados para funcionar sin
intervención del usuario (o con muy poca).
S.O. desde el punto de vista del
sistema

• Desde el punto de vista del computador, el sistema operativo es


el programa que se involucra íntimamente con el hardware.
• Es un facilitador o adjudicador de recursos, actúa como
gerente de estos recursos. Debe decidir como asignarlos a
programas y usuarios específicos para que el computador opere
de manera eficiente y equitativa con todos ellos.
• También es un programa de control. Gestiona la ejecución de
los programas de usuario para prevenir errores y el uso
impropio del computador.
Aplicaciones y el S.O.
• Los sistemas operativos existen porque ofrecen una manera
razonable de crear sistemas de cómputo que sean útiles.
• Para resolver los problemas de los usuarios se deben desarrollar
(programas para) aplicaciones.
– Pero los programas de las aplicaciones que utilizan los usuarios
requieren ciertas operaciones comunes, como controlar los
dispositivos de entrada/salida.
– Las aplicaciones solas solitas serían muy complicadas y difíciles de
desarrollar si tuvieran que incluir el control de cada componente
de hardware del computador.
– Es mejor colocar estas funciones de control en un software
diferente y especializado.
Kernel del sistema operativo

• Como ya se dijo, cada sistema basado en


computador incluye un conjunto básico de
programas llamado el sistema operativo.
– Ejemplos de sistemas operativos son Windows, Linex,
MAC/OS, iOS, Android.
• El programa más importante dentro de este
conjunto es llamado el kernel.
• El kernel es cargado en la RAM cuando el sistema
inicia y tiene los procedimientos que son
necesarios para que el sistema (el computador)
pueda operar.
Kernel del sistema operativo

• El kernel es el componente principal de la mayoría de


sistemas operativos
• Es un “puente” entre las aplicaciones y el procesamiento
de datos realizado a nivel del hardware.

Aplicaciones

Kernel

CPU Memoria Dispositivos


¿Qué es un kernel?

• Un kernel es un administrador de recursos.


• Los recursos que se gestionan son los procesos,
la memoria o los dispositivos de hardware.
• El kernel administra y arbitra el acceso a estos
recursos entre diferentes usuarios que compiten
por estos recursos (tanto en el espacio del
kernel como en el espacio de usuario)
Arquitectura de GNU/Linux
• El kernel puede ser visto como una aplicación más, pero
que está una capa más abajo.

User applications
User
Space
GNU C Library (glibc)

GNU/ System Call Interface


Linux
Kernel Kernel
Space

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)

• Hay tres visiones para definir un BSP:


– Es la interfaz del kernel para los controladores (drivers) de
los dispositivos
– Es un conjunto de librerías que ofrecen al kernel una capa
de abstracción del hardware
– Soporta un ambiente de desarrollo cruzado para diferentes
tipos de procesadores
• Un BSP permite que las aplicaciones sean portables a
diversas arquitecturas
• Ejemplo son yocto project y OpenEmbedded
– https://www.yoctoproject.org/
– http://www.openembedded.org/
Sistemas Operativos
Raspbian
Raspbian es un Sistema operativo basado en Debian
optimizado para el hardware de las Raspberry Pi.

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

Instalación Sistema Operativo


Libro con soluciones prácticas
para Raspberry Pi
Micro SD
• Se debe cargar la imagen del sistema operativo en una MicroSD , la
cual será el disco duro del sistema embebido. (Receta 1.5 del libro
Raspberry Pi Cookbook, segunda edición).

https://www.raspberrypi.org/downloads/
Imagen de Raspbian

Herramientas para escribir e instalar una imagen de


un sistema operativo en la microSD
Win32DiskImager – Windows
PiBaker –Mac
Consola Linux / Mac
Raspi- Config
raspi-config es la herramienta de configuración de Raspberry Pi en Raspbian

raspi-config será mostrado la primera vez que se inicia Raspbian.

Si se quiere usar después se usa el comando


sudo raspi-config
Escritorio y terminal
La imagen muestra el escritorio de Raspbian y una terminal
abierta (ventana con fondo negro)
Revisando la configuración
de red con ifconfig
Fijar una dirección IP estática
en Raspbian
Esta configuración se realiza en el archivo
/etc/network/interfaces.
La siguiente imagen es un ejemplo del contenido del
archivo
Fijar una dirección IP estática
en Raspbian
Se puede utilizar el editor de texto nano para modificar el archivo de configuración

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

• VNC es un programa basado


en el esquema cliente-
servidor que permite tomar el
control del computador
servidor remotamente a
través de un computador
cliente.
• VNC no impone
restricciones en el sistema
operativo: es posible
compartir la pantalla de una
máquina con cualquier
sistema operativo
Instalación de VNC Server
VNC Client
VNC CLIENT
5. Redes de datos

Conceptos para TCP/IP (Internet)


“Piezas” que componen una red

• NODOS: dispositivos de cómputo interconectados.


– End-systems : Nodos que ejecutan aplicaciones de red (correo, web, etc.). Por
ejemplo PCs, estaciones de trabajo, servidores, Smart Phones, Tablets.
– Intermedia-systems:Nodos que reenvían paquetes de datos hasta que lleguen al
“end-system” (routers, enrutadores, encaminadores o).
• ENLACES DE COMUNICACIÓN: permiten la interconexión de los nodos
– cables de fibra óptica, cables de cobre y enlaces inalámbricos (micro-ondas,
satelitales, infrarojos, WiFi etc.)
• PROTOCOLOS: Controlan el envío y recepción de mensajes entre nodos
– Por ejemplo TCP, IP, HTTP, FTP, PPP y SNMP.
• SERVICIOS: permiten intercambiar datos, programas, música, imágenes,
películas y otros documentos.
Protocolos de comunicaciones

• Para que los computadores puedan comunicarse


necesitan establecerse reglas ó protocolos (AppleTalk,
IPX/SPX, SNA, TCP/IP, etc.)
– Un protocolo de comunicación es una convención de
comportamiento que define el orden temporal de las
interacciones entre las entidades colegas al igual que el
formato (sintaxis y semántica) del intercambio de mensajes.
– Los protocolos definen (1) el formato de los mensajes, (2) el
orden de transmitisión de los mensajes y (3) las acciones que
deben realizarse al transmitir o recibir mensajes por parte de
los nodos
Ejemplo TCP (Transmission
Control Protocol)
CLIENTE SERVIDOR

Conexión
establecida
1. Formato del mensaje

3. Acciones al
transmitir/recibir
mensajes

2. Orden de transmitisión
de los mensajes
Protocolos de comunicaciones

• En lenguaje coloquial la palabra protocolo tiene dos


significados (entre otros):
– El registro escrito (acta) de una reunión.
– Descripción de un procedimiento establecido (una
convención o ritual). Por ejemplo, los protocolos
diplomáticos, protocolos médicos, etc.
• En redes de computadores, el término hace referencia al
segundo significado.
– Define un procedimiento de comunicación que se puede
repetir.
• Un protocolo NO es un diálogo, pues un diálogo puede
tener un curso no predecible que no puede ser repetido.
Protocolos en Internet

• Para Internet se utilizan los protocolos de la suite de TCP/IP


– No dependen del sistema operativo (windows, unix-linux,
mac/OS, Android, iOS), ni del fabricante computador.
– Se dice que TCP/IP es “abierto”.
– Los protocolos para Internet se especifican mediante
documentos denominados RFC: Request for comments, que son
emitidos por la IETF: Internet Engineering Task Force.
– Los RFCs son públicos y cualquier persona puede accederlos
en Internet.
– https://tools.ietf.org/
Modelo borde-centro
Para “mirar” el centro:
BORDE
traceroute (tracert)
Para “mirar” el borde:
netstat –pan (netstat –bona)

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

Tier 1 ISP Tier 1 ISP Tier-2 ISP


local
Tier-2 ISP Tier-2 ISP
ISP
local local local
ISP ISP ISP
Modelo de referencia OSI
Cada nivel (ó capa) tiene unas funciones precisas para resolver
determinados problemas de la comunicación (“divide y vencerás”)
Nivel OSI Función
Aplicación Aplicaciones de Red: transferencia de archivos
Presentación Formatos y representación de los datos
Sesión Establece, mantiene y cierra sesiones
Transporte Entrega confiable/no confiable de “mensajes”
Red Entrega los “paquetes” y hace direccionamiento lógico y enrutamiento
Enlace Transfiere frames, direccionamiento físico, chequea errores a nivel de bit
Física Transmite datos binarios sobre un medio
Arquitectura de una casa
Una casa tiene diversas habitaciones
que prestan un servicio definido.

Alcoba, Baño, Cocina, Sala, Comedor,


Garage, Patio de ropas, etc.

La disposición y el uso de las habitaciones


Debe seguir alguna lógica.

Existen diversos tipos casas:

- Aparta estudios,
- Casas con pocas habitaciones
- Casas con muchas habitaciones

- El modelo OSI es…


…la arquitectura de referencia.
Operación del modelo OSI
Nodo A Nodo B
Al enviar Al recibir
el mensaje el mensaje
“baja” “sube”

El mensaje “viaja” a
través de la red

En la vida real, las 7 capas de funciones del modelo OSI están


normalmente construidas como una combinación de:
1. Sistema Operativo (Windows 10, Win2012, Mac/OS ó Linux)
2. Aplicaciones (navegador, cliente de correo, servidor web)
3. Protocolos de transporte y de red (TCP/IP, IPX/SPX, SNA)
4. Hardware y software que colocan la señal en el cable
conectado al computador (tarjeta de red y driver)
Implementación de las capas
OSI
• Las dos primeras capas (física y enlace)
generalmente se construyen con hardware y
software
– El cable, el conector, la tarjeta de red y el driver de
la tarjeta pertenecen a los niveles 1 y 2
• Los otros cinco niveles se construyen
generalmente con software
Operación del modelo OSI
Las capas del modelo OSI reciben un nombre de acuerdo a su
función.

Aplicación 7 Al enviar 7 Aplicación Al recibir


Presentación 6 el mensaje el mensaje
6 Presentación “sube”
“baja”
Sesión 5 5 Sesión
Transporte 4 4 Transporte
Red 3 3 Red
Enlace 2 2 Enlace
Física 1 Física
1
Nodo A Nodo B
RED
Servicios, interfaces y
protocolos

• 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

Usuario en el Nodo A envía el mensaje “Tengo una idea.”


Los datos se encapsulan y se registra
Tengo una idea. a qué protocolo de la capa superior
Tengo una idea. le pertenece la carga útil (payload)
Tengo una idea. Sesión (5)
H4 Tengo una idea. Transp. (4)
H3 H4 Teng H3 o una idea. Red (3)
H2 H3 H4 Teng T2 H2 H3 o una idea. T2 Enlace (2)

H2 H3 H4 Teng T2 H2 H3 o una idea. T2

Física (1)
Operación del modelo OSI

Usuario en el Nodo B recibe el mensaje “Tengo una idea.”


Para entregar el mensaje al protocolo
correcto, dentro de una capa, se usa Tengo una idea.

la llave de multiplexación. Tengo una idea.

Sesión (5) Tengo una idea.

Transp. (4) H4 Tengo una idea.

Red (3) H3 H4 Teng H3 o una idea.

Enlace (2) H2 H3 H4 Teng T2 H2 H3 o una idea. T2

H2 H3 H4 Teng T2 H2 H3 o una idea. T2

Física (1)
BORDE

CENTRO

Aplicación
Aplicación

End system End system

Aplicación Aplicación

Presentación Presentación

Sesión Sesión

Intermediate systems
Transporte Transporte

Red Red Red Red

Enlace Enlace Enlace Enlace

Física Física Física Física


Arquitectura de TCP/IP

No hay un acuerdo sobre como representar la jerarquía de los


protocolos de TCP/IP con un modelo de capas (utilizan de tres
a cinco).

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

información de control (un


“header”) para asegurar la Capa de transporte

entrega correcta de los Header DATOS


datos.
• Cuando se recibe, la Capa Internet

información de control Header Header DATOS


(header) se retira.
Capa de Acceso de Red

Header Header Header DATOS


Otro modelo de arquitectura de
TCP/IP
• Diseño en forma de reloj de arena permite ver la importancia
de IP: es el corazón de la arquitectura
Muchas aplicaciones se mueven sobre IP
Correo, navegación, resolución de nombres. gestión,
transferencia de datos, video, voz, multimedia ...
SMTP FTP HTTP DNS TFTP SNMP

TCP UDP

Hacia arriba o hacia abajo


IP ¡Todo pasa por IP!

RED1 RED2 … REDn


Muchos tipos de redes envían y reciben paquetes IP
Token Ring, Ethernet, WiFi, WiMax, ATM, FDDI, PPP, Frame
Relay, ... Un vistazo a IPv4
Otras representaciones de la
arquitectura de Internet

Aplicaciones
ASCII Aplicaciones
binarias Aplicación
NVTs

TCP y UDP TCP UDP

IP IP

Topología de red Network

Un vistazo a IPv4 110


Red tradicional
Direcciones IP asignadas (DHCP, fijas)
Se debe configurar servidores DNS
Se debe configurar la puerta de enlace

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)

Device Drivers (DD)

Architecture-dependent code
Capas de la implementación
de red en el kernel

Código fuente del kernel http://lxr.free-electrons.com/


Comandos para configurar la
red en el sistema operativo
ifconfig permite configurar o verificar diversos parámetros de las interfaces de red
WLAN

ifconfig permite configurar o verificar diversos parámetros de las interfaces de red


Funciones de Red- DNS
DNS (Domain Name System) permite resolver nombres de dominio,
por ejemplo www.facebook.com, a direcciones IP.

Los servidores DNS se configuran en el archivo /etc/resolv.conf

El comando ping permite verificar si existe conectividad entre dos equipos.


El siguiente ejemplo muestra que el DNS resuelve de nombre a dirección
nslookup para consultar en DNS
Programa Ping.
Script que permite verificar los nodos activos en la subred 192,168.0.0/24.
Comandos Básicos
El commando route se utiliza para verificar/manipular las tablas de enrutamiento

Puerta de enlace
Comandos Básicos

Traceroute (tracert) permite 'seguir la pista' de los paquetes que van de un


nodo a otro. Muestra una estadística del tiempo de ida y vuelta.
Traceroute google.com -n
Comando iwconfig
iwconfig permite revisar/configurar una interfaz inalámbrica
Comando iwconfig
Comando iwconfig
https://wireless.wiki.kernel.org/en/users/Documentation/iw
Aplicaciones y protocolos de
la capa de aplicaciones
aplicación
Aplicaciones: procesos distribuidos, transporte
red
procesos que se comunican enlace
física
– Por ejemplo, e-mail, Web, compartir
archivos P2P, mensajería instantanea
– Se ejecutan en end systems (hosts)
– Intercambian mensajes para
implementar la aplicación
Protocolos de la capa de aplicación
– Son “una parte” de una aplicación
– define los mensajes que se
intercambian por las aplicaciones y
aplicación
las acciones que deben realizar aplicación transporte
transporte red
– Utilizan los servicios de red enlace
comunicación proporcionados por enlace física
física
los protocolos de la capa inferior
(TCP, UDP)
Los procesos (aplicaciones) se
comunican a través de la red
host o host o
• Los procesos envían/reciben servidor servidor
mensajes hacia/desde su socket
• Un socket es análogo a una puerta Controlado por
– El proceso que envía empuja el el desarrollador
proceso proceso
mensaje hacia afuera
– El proceso que envía asume que socket socket
existe una infraestructura de
TCP con TCP con
transporte al otro lado de la puerta Internet
buffers, buffers,
que llevará el mensaje hasta el
variables variables
socket del proceso que lo recibirá

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

El siguiente es un ejemplo del contenido del archivo /etc/ssh/ssh_config


SSH server

Los siguientes son ejemplos de la generación de una nueva llave cuando hay fallas
en la comunicación

chkconfig actualiza y consulta la información del nivel de ejecución (runlevel)


de los servicios del sistema
SSH Client
tcpdump (captura de tráfico)

Wireshark es otra herramienta que permite realizar capturas de tráfico


https://www.wireshark.org/
lsof (List Open Files)
lsof (Lista de archivos abiertos) permite consultar los archivos de disco que
tienen abiertos los procesos en ejecución, incluyendo los sockets.
Socket buffer
Un socket buffer es una estructura especial que le permite al Kernel manejar
operaciones de Red(entre capas) de forma rápida y confiable.
Es la estructura más importante en el Kernel de Linux para gestionar los datos
En la red

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 .

La estructura sk_buff representa un paquete

En el Kernek de Linux el buffer de socket está descrito en un archivo skbuff.h


http://lxr.free-electrons.com/source/include/linux/skbuff.h
Gestión de los datos
utilizando el socket buffer
• La idea básica de un socket buffer es agregar y remover
cabeceras de protocolos por manipulación de punteros
Gestión de los datos
utilizando el socket buffer
Gestión de los datos
utilizando el socket buffer
Una cabeza de lista se usa para implementar colas de espera con buffers de
socktes.
Zeroconfig
Zeroconf
• Este Proyecto soporta los protocolos de la IETF
zeroconf y tras técnicas usadas para configurar redes IP
sin la necesidad de un administrador o alguna clase
de servidor maestro. Hay cuatro áreas principales de
trabajo:
• Entregar direcciones sin un servidor DHCP.
• Traducciones de nombres y direcciones IP sin un
servidor DNS.
• Encontrar servicios sin un servidor de directorio.
• Alojar direcciones Multicast IP sin un servidor
MADCAP.
Configuración IP

• 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

Tomado de: http://compiladorsistemas.blogspot.com.co/


Etapas del proceso de
compilación

El compilador traduce del


lenguaje de alto nivel hacia
el lenguaje de máquina.

Esto se hace en varios pasos


o etapas.
Etapas del proceso de
compilación
• Cualquier compilador debe realizar dos tareas
principales
– análisis del programa a compilar y
– síntesis de un programa en lenguaje máquina
• Para el estudio de un compilador, es necesario dividir su
trabajo en varias etapas.
– Análisis lingüístico
– Ensamblaje
– Optimización
– Generación del código objeto
• En cada una de las etapas se utiliza un administrador de
la tabla de símbolos y un manejador de errores.
Etapas del proceso de
compilación
Análisis lingüístico incluye tres sub-etapas:
a. Análisis léxico: se leen los caracteres del programa
fuente y se agrupan en cadenas que representan los
componentes léxicos. Cada secuencia de caracteres que
representa un componente léxico se la llama lexema
(token)
b. Análisis sintáctico: La sintaxis de un lenguaje define
cuáles son los programas correctos (“legales”), es decir,
programas que pueden ser ejecutados. En esta etapa
NO se verifica qué está haciendo el programa. La
sintaxis se presenta como una colección de reglas
dentro de una gramática.
Etapas del proceso de
compilación
Análisis lingüístico incluye tres sub-etapas:
c. Análisis semántico: La semántica de un lenguaje
define lo que un programa hace cuando se ejecuta.
Ensamblaje: Después de verificar que no hay
errores de sintaxis ni semánticos, el compilador
traduce el lenguaje estándar a un conjunto de
instrucciones específicas a un procesador real.
Etapas del proceso de
compilación
Optimización del código: En esta fase se busca
mejorar el código intermedio, para que el código
de máquina sea rápido de ejecutar y optimice el
uso de los recursos.
Generación de código objeto: Es la fase final del
compilador, donde el resultado final es el código
de máquina que se puede ejecutar con el
procesador.
Fase IV: encadenamiento

• Las entradas a la fase de encadenamiento


(linking) es la colección de archivos con el
código objeto creados en la fase de compilación.
• El encadenamiento tiene dos etapas
– Relocalización:
– Resolución de referencias
Relocalización
• Las diferentes secciones del programa incluidas
dentro de los archivos con código de máquina se
combinan para crear las secciones que se mapearán
en la memoria.
Resolviendo referencias
• Establece las conexiones
requeridas entre las
diferentes partes del código.
– Examina las secciones que ya
están en el mapeo de
memoria
– Encuentra los llamados fuera
de la sección original
– Calcula donde estará la parte
referenciada
– Reemplaza con las
direcciones reales del mapeo
de memoria.
Fase V: carga del programa
• El módulo de carga (loader) del sistema operativo coloca
el programa en memoria.
Fase VI: ejecución del
programa
• Después de colocar las secciones necesarias del
programa en la memoria del computador, el
cargador debe buscar la dirección donde la
ejecución del programa debe comenzar.
• Luego de colocar esta dirección en el contador
de programa, la función main() puede invocar
muchas otras funciones ejecutando el
programa.
Python
Python es un lenguaje de
programación interpretado que tiene
una sintaxis que favorezca un código
legible.
Es un lenguaje de
programación multiparadigma y
soporta orientación a
objetos, programación imperativa y
programación funcional.

Fue creado por Guido van Rossum en


Holanda a finales de los años 80. El
nombre del lenguaje proviene del
grupo de comediantes británicos
Monty Python
Python
Ejemplos
Ejercicio

• Hacer un programa que convierta grados


Celsius en grados Fahrenheit
7. Controladores- Drivers
Drivers
• Un driver (controlador) es un programa que hace que un
componente de hardware responda a una interfaz de
programación interna bien definida: oculta los detalles
sobre cómo trabaja un dispositivo.
• El usuario hace llamados estándar al sistema
(independientes del tipo de driver), estos llamados son
mapeados (traducidos) a operaciones específicas al
dispositivo que actuan sobre el hardware real.
• Los drivers pueden construirse separados del resto del
kernel y usados cuando sean necesarios
Drivers en el kernel
Tipos de drivers
• En linux hay tres tipos de dispositivos y por tanto
tres tipos de drivers
– Dispositivo tipo carácter (char): mueven secuencias
(streams) de bytes. La consola (/dev/console) y los
puertos seriales (/dev/ttyS0 y sus amigos)
– Dispositivo tipo bloque: mueven bloques de 512 bytes
(o más grandes). /dev/sda1 es un ejemplo de una
partición de un disco duro.
– Interfaces de red: dispositivos que atienden las
transaciones de la red. /sys/class/net/eth0 en ubuntu
es un ejemplo de interfaz de red.
Drivers
Controlando un motor DC
•GPIO 25–Pin 22 > L293D–Pin 1
•GPIO 24–Pin 18 > L293D–Pin 2
• Requirimientos •GPIO 23–Pin 16 > L293D–Pin 7
– Raspberry Pi con una SD
con Raspbian
– Protoboard
– Un chip L293 o
SN755410 (controlador)
del motor
– Jumper cables (macho-
macho y hembra-macho)
– Un motor DC de 6v
– 4 baterías AA y el porta
batería
•Motor–wire 1 > L293D–pin 3
•Motor–wire 2 > L293D–pin 6
http://computers.tutsplus.com/tutorials/controlling-dc-motors-using-python-with-a-
raspberry-pi--cms-20051
Controlando un motor DC
01import RPi.GPIO as GPIO
02from time import sleep
03
04GPIO.setmode(GPIO.BOARD)
05
06Motor1A = 16
07Motor1B = 18
08Motor1E = 22
09
10GPIO.setup(Motor1A,GPIO.OUT)
11GPIO.setup(Motor1B,GPIO.OUT)
12GPIO.setup(Motor1E,GPIO.OUT)
13
14print "Turning motor on"
15GPIO.output(Motor1A,GPIO.HIGH)
16GPIO.output(Motor1B,GPIO.LOW)
17GPIO.output(Motor1E,GPIO.HIGH)
18
19sleep(2)
20
21print "Stopping motor"
22GPIO.output(Motor1E,GPIO.LOW)
23
24GPIO.cleanup()
8. Entendiendo el File System de
linux
¿Linux?
Linux
Linux files structure

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

Networking – Redes Ad hoc


10. Configuración de la Red
Adhoc
Estado 1 Formación

n =1 n =2 n =4 n =N
Estado 2 Operación

Estado 3 Mantenimiento
Red Ad Hoc
MANET: Mobile Ad-Hoc
Network

• Redes sin infraestructura.


• Cada terminal es “host” y
enrutador simultáneamente.
• Parámetros de movilidad.
• Redes “Multi-hop”.
• Auto-configurables / Auto-
organizadas.
Protocolo de enrutamiento
B.A.T.M.A.N.
Protocolo de enrutamiento
B.A.T.M.A.N.
• Fue desarrollado en Alemania por la comunidad
Freifunk (http://freifunk.net/en/). Freifunk es
una iniciativa no comercial para redes inalámbricas
de uso libre.
• Basados en su experiencia con su propia
implementación del protocolo OLSR, concluyeron
que se necesitaba un nuevo protocolo de
enrutamiento. La razón principal para esta
decisión era el tamaño de la red con más de 400
nodos participantes.
Protocolo de enrutamiento
B.A.T.M.A.N.
• PROTOCOLO DE ENRUTAMIENTO: El principio de
funcionamiento de este protocolo de enrutamiento se puede resumir
como:
1. Después de un intervalo de tiempo dado cada nodo debe emitir
para todos los demás (broadcast) un mensage originador (OGM),
que básicamente establece la existencia del nodo.
2. Para que los nodos que están fuera del alcance del nodo originador
sepan de su existencia, los mensajes OGM son re-emitidos por los
nodos receptores de acuerdo con ciertas reglas:
a. El nodo que recibe el mensaje memoriza el vecino directo a través del
cual recibió el OGM.
b. Usando las estadísticas de la llegada de mensajes exitosos un nodo
puede concluir cuál de sus vecinos directos es el mejor para reenviar los
paquetes hacia su destino.
Protocolo de enrutamiento
B.A.T.M.A.N.
3. Las rutas y la topología de la red sólo es conocida por los nodos que
están dentro del alcance directo.
4. La información de enrutamiento se distribuye en toda la red. Esto es
suficiente ya que los nodos participantes sólo tienen influencia
sobre la decisión del siguiente salto.
Protocolo de enrutamiento
B.A.T.M.A.N.
• El protocolo de enrutamiento (diseño lógico) está en
evolución permanente y los diferentes estados se
describen con números romanos.
• La identificación de las versiones del protocolo es
diferente y están separadas de las versiones de
implementación de batman-adv (módulo para el kernel
de Linux) y de batmand (demonio de enrutamiento en
el espacio de usuario).
• Los números arabigos son utilizados para diferenciar las
versiones de implementación.
• Por ejemplo, batmand 0.2 utilizaba B.A.T.M.A.N. III.
Flooding: Paquetes BATMAN

1. Broadcast
2. Re-Broadcast
3. Re-Re-Broadcast (…)
Flooding: Paquetes BATMAN
Paquetes
BATMAN(OGM+HNA)

Paquete BATMAN encapsulado en un datagrama UDP y estructura interna


Originator and Neighbor
List(s)
Originator and Neighbor
List(s)
Originator and Neighbor
List(s)
A B F

D
G
C
X

A wants to reach X
A:10
A B F

A:9 D
G
C
X

• Nodes broadcast originator messages (OGM's) every second


• OGM's are rebroadcast
• Other nodes measure how many OGM's are received in a fixed time window
A B F

A:8

D
G
C A:7
X

A:7 E

D BATMAN routing table D Final routing table

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

G BATMAN routing table G Final routing table

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

X BATMAN routing table X Final routing table

TO VIA Q TO VIA
A G 5 A E

A E 6
A
B F

D
G
C
X

X BATMAN routing table E BATMAN routing table C BATMAN routing table

TO VIA Q TO VIA Q TO VIA Q


A G 5 A C 7 A A 9

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.

You might also like