Redes de Area Local PDF

INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS QUE ES UN SISTEMA EMBEBIDO ? Es un sistema electrónico que está co

Views 27 Downloads 0 File size 8MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS

QUE ES UN SISTEMA EMBEBIDO ?

Es un sistema electrónico que está contenido dentro de un dispositivo electromecánico y es diseñado para realizar una aplicación específica. El cerebro de un sistema embebido es típicamente un microcontrolador, aunque también puede ser un DSP o un FPGA. El diseño del sistema está optimizado para reducir su tamaño y su costo, aumentar su confiabilidad y mejorar su desempeño. 1

ESTRUCTURA DE UN PROGRAMA EN LENGUAJE C Como resolver un problema usando un microcontrolador ?.

Reconocimiento del problema. Algoritmo describiendo los pasos para la solución. Usar el lenguaje C para implemetar la solución (según algoritmo). Compilar el programa desarrollado.

2

ESTRUCTURA DE UN PROGRAMA EN LENGUAJE C

3

ESTRUCTURA DE UN PROGRAMA EN LENGUAJE C

NO se dispone de un sistema operativo ...

4

Cada programa desarrollado en lenguaje C debe contener una función "main", el código de la función debe estar contenido entre llaves { }.

EL ESTANDAR ANSI C El lenguaje C fue basado en los lenguajes BCPL y B, ejecutados en el sistema operativo UNIX a principios de los 70s. Desarrollado por Dennis M. Ritchie y Brian Kernighan en los laboratorios Bell (AT&T), para ser ejecutado en el sistema operativo UNIX. En 1988 se adopta el estándar ANSI C, conteniendo nuevas revisiones de sintaxis y de la operación interna del lenguaje, así como la estandarización de las librerías, resultando en "ANSI Standar X3.159-1989" e "ISO 9899-1990", conocido como C90. El estándar C99 agrupa las nuevas definiciones de tipos en el archivo stdint.h: int8_t, int16_t, int32_t, uint8_t, uint16_t, uint32_t. 5

EL ESTANDAR ANSI C

Compilando un programa en C: Transforma un programa en alto nivel en un programa ejecutable.

6

TIPOS DE DATOS Al ser un microcontrolador un sistema digital binario, solo reconoce ceros y unos.

La unidad de información básica es el bit o Binary digiT, al agrupar n bits, se puede obtener valores posibles. Cuantas clases de datos necesitamos para aplicar a la solución de un problema ?. Numeros: Textos: Imagenes: Sonidos: 7

enteros (con signo o sin signo), reales, complejos. caracteres, cadenas de caracteres. pixels, colores, formas. calidad radio, calidad CD, alta definición.

TIPOS DE DATOS

Tipos de datos numéricos utilizando el sistema de notación binaria: Un valor numérico sin signo de n bits representa es desde cero hasta

8

valores, esto

TIPOS DE DATOS

Tipos de datos numéricos utilizando el sistema de notación binaria: Los valores numéricos con signo operan con formato de complemento binario a dos, lo cual permite asignaciones y operaciones aritméticas de forma natural y representar valores desde cero hasta , o desde cero hasta .

9

TIPOS DE DATOS

Tipos de datos enteros:

Tipos de datos en coma flotante: IEEE 754, estándar de notación numérica en coma flotante de precisión simple para 32 bits.

10

TIPOS DE DATOS

Variables:

Las variables son tipos de datos identificados con un nombre. Para los nombres de las variables se permite la combinación de letras y números. Se diferencia entre mayúsculas y minúsculas (sum es diferente a Sum). Los nombres de las variables no deben iniciar con un número. Solo se reconocen los primeros 31 caracteres. Nombres de variables válidos: VarX, i, result, Result, Op_Data, _SensX ... Nombres de variables NO válidos: 23Digit, ten'sdigit, result?, double ...

11

TIPOS DE DATOS

Duración y alcance de las variables:

El alcance de una variable comprende el área del programa donde la variable es válida (accesible). Variables de tipo Global: Son accesibles en cualquier parte del programa. Son declaradas fuera de los bloques o funciones del programa. Son creadas al inicio del programa y son válidas durante toda la ejecución del programa. Variables de tipo Local (static):

Solo son accesibles en un bloque particular del programa. Son declaradas dentro de un bloque o función del programa. Son creadas al inicio de la función y son válidas durante la ejecución de la función. También pueden ser locales al archivo fuente actual; en este caso la variable es global al archivo fuente actual. 12

TIPOS DE DATOS

Operadores: Los operadores permiten realizar acciones sobre las variables. Operadores aritméticos:

Operadores lógicos:

13

TIPOS DE DATOS

Operadores relacionales:

Operadores lógicos a bit: Tratan la variable entera o el valor como variable booleana siendo TRUE, diferente de cero y FALSE, igual a cero. El resultado será 1 (TRUE) o 0 (FALSE). Operador ! & & | | 14

Descripción Negación lógica AND lógica OR lógica

Ejemplo !X X && Y X || Y

TIPOS DE DATOS

Operadores de asignación:

Operadores de incremento y decremento:

15

SENTENCIAS Y EXPRESIONES Una sentencia consta de palabras reservadas (instrucciones), expresiones y otras sentencias. Cada sentencia termina con un punto y coma (;). Palabras reservadas:

16

SENTENCIAS Y EXPRESIONES

Las expresiones son operaciones que realiza el programa, describiendo cálculos o procesos. A+b+c X&y||z VarX >= X

}

Z = A + b + c; A = X & y | | z; VarX = VarX + 1;

expresiones

}

sentencias

Un tipo especial de sentencia, la sentencia compuesta o bloque, es un grupo de sentencias encerradas entre llaves { }. El cuerpo de una función es una sentencia compuesta. { Z = A + b + c; A = X & y | | z; VarX = VarX + 1; }

17

SENTENCIAS Y EXPRESIONES

Sentencias de salto condicional:

Ejecutan parte del código, basándose en la evaluación de la expresión de control. ● ● ●

if if – else switch

Sentencias de iteración:

Ejecutan parte del código varias veces y terminan la ejecución basándose en la evaluación de la expresión de control. ● ● ●

18

for while do - while

SENTENCIAS Y EXPRESIONES

Esta sentencia de control permite ejecutar o no una sentencia simple o compuesta según se cumpla o no una determinada condición. 19

SENTENCIAS Y EXPRESIONES

Esta sentencia permite realizar una bifurcación, ejecutando una parte u otra del programa según se cumpla o no una cierta condición 20

SENTENCIAS Y EXPRESIONES

Esta sentencia desarrolla una función similar a la de la sentencia if ... else con múltiples ramificaciones, aunque como se puede ver presenta también importantes diferencias. 21

SENTENCIAS Y EXPRESIONES

Esta sentencia permite ejecutar repetidamente, mientras se cumpla una determinada condición, una sentencia o bloque de sentencias. 22

SENTENCIAS Y EXPRESIONES

Esta sentencia permite ejecutar un bloque de código, un número especificado de veces. 23

SENTENCIAS Y EXPRESIONES

24

Esta sentencia funciona de modo análogo a while, con la diferencia de que la evaluación de la condición se realiza al final del bucle, después de haber ejecutado al menos una vez una sentencia (loop_body) o un bloque { }; éstas se vuelven a ejecutar mientras la condición sea TRUE.

SENTENCIAS Y EXPRESIONES

break, continue, goto La instrucción break interrumpe la ejecución del bucle donde se ha incluido, haciendo al programa salir de él aunque la condición correspondiente a ese bucle sea verdadera.

La sentencia continue hace que el programa comience el siguiente ciclo del bucle donde se halla, aunque no haya llegado al final de las sentencia compuesta o bloque. La sentencia goto etiqueta hace saltar el programa a la sentencia donde se haya escrito la etiqueta.

25

FUNCIONES Es un bloque de construcción de un programa, contiene expresiones y sentencias que desarrollan un problema en particular. La agrupación de funciones permiten modularidad en un programa. Las funciones se pueden agrupar y almacenar en librerías. Cada programa en lenguaje C tiene al menos una función “main”. Cada función tiene un nombre, un tipo de datos, y una lista de parámetros contenidos en variables. Las funciones deben ser declaradas al inicio del programa.

26

FUNCIONES

27

EL PRE-PROCESADOR DE C El pre-procesador es un programa que se encarga de reconocer y ejecutar las denominadas directivas al inicio de la etapa de compilación (anterior a la compilación). El pre-procesador actúa sobre los archivos fuente procesando las directivas para entregar un programa mas simple al compilador. Las directivas son instrucciones que comienzan con el símbolo #. #define, #undef #if, #ifdef, #ifndef, #endif, #else, #elif #include #pragma #error

28

EL COMPILADOR Y EL ENLAZADOR

Transforman un programa en alto nivel, en un programa ejecutable y entendible por la máquina. El compilador analiza la estructura del programa para identificar sus componentes: expresiones, sentencias, variables, funciones, etc. El código en alto nivel al ser compilado genera un programa en lenguaje ensamblador. El enlazador combina archivos de código objeto para generar un archivo con código ejecutable (organizado lógicamente en memoria).

29

EL COMPILADOR Y EL ENLAZADOR

30

UN PROGRAMA SIMPLE EN LENGUAJE C //DESCRIPCION. //PERMITE CONTROLAR UN SERVO-MOTOR R/C, DESDE EL PUERTO SERIE, UTILIZANDO EL GENERADOR PWM0. //ARCHIVOS DE INCLUSION #include #include "Globals.h" //DECLARACION DE CONSTANTES #define ctLedTimer 100 #define ctPwmCounts 62500

//TIEMPO DE ACTUALIZACION LED DE ESTADO (MILISEGUNDOS) //RESOLUCION DEL GENERADOR PWM0 = (PWMClock / ctServoPwmFreq)

//DECLARACION DE MACROS #define LedStat(x) PinWrite(PortD, GPIO_PIN_5, x)

//LED DE ESTADO

//DECLARACION DE VARIABLES F32 ServoMinG; //CONTIENE EL ANCHO DE PULSO PWM, PARA CERO GRADOS EN EL SERVO U32 ServoStep; //CONTIENE EL VALOR DE PASO PARA CALCULAR ANCHO DE PULSO SEGUN GRADOS //PROTO FUNCIONES static void SystemInit(void); //INICIALIZA LOS PERIFERICOS NECESARIOS static S16 DetCommand(void); //DETECCION DE COMANDO DE POSICION EN GRADOS //PROGRAMA PRINCIPAL int main(void) { S08 inpChar; //CONTIENE CARACTER RECIBIDO DESDE LA TERMINAL S16 ActServoPos = 0; //CONTIENE LA POSICION ACTUAL DEL SERVO (0 A 180) SystemInit(); //INICIALIZA PERIFERICOS Delayms(1000); //RETARDO PARA INICIALIZACION

}

31

//BUCLE DE PROGRAMA while(true) { inpChar = getc(UART0_BASE); //CAPTURA UN CARACTER DESDE EL PUERTO SERIE if(inpChar > 0) ServoStep ++; Delayms(1); //BUCLE DE PROGRAMA 1000/S }

TIPOS DE HARDWARE LIBRE Y SOFTWARE DE PROGRAMACIÓN ARDUINO.

HARDWARE LIBRE • Se llama hardware libre a los dispositivos de hardware cuyas especificaciones y diagramas esquemáticos son de acceso publico, ya sea bajo algún tipo de pago o de forma gratuita.

TIPOS DE HARDWARE LIBRE • SEGÚN SU NATURALEZA:

• Dada su diferente naturaleza, al hablar de hardware abierto o libre

• •

hay que especificar de qué tipo de hardware se está hablando. A continuación se describen cada uno de los diferentes hardware según su naturaleza:

Hardware reconfigurable:

Es aquel descrito mediante un lenguaje de descripción de hardware. Su naturaleza es completamente diferente a la del hardware estático. Se desarrolla de una manera muy similar a como se hace con el software, mediante archivos de texto, que contienen el código fuente. Se les puede aplicar directamente una licencia libre, como la GPL.

• Hardware estático: • Es el conjunto de elementos materiales o tangibles de los sistemas electrónicos. Ya que el software carece de existencia física, surgen problemas que se describen en el apartado "Desventajas".

SEGÚN SU FILOSOFÍA

Al No Existir Una Definición Clara De Hardware Libre, También Existe Libertad En Su Interpretación.

• Diseño de Hardware Libre (Free hardware design)

• Se refiere a un diseño que pueda ser copiado, distribuido, modificado, y fabricado libremente. No implica que el diseño no puede también ser vendido, o que cualquier puesta en práctica de hardware del diseño estará libre de coste.

• Libre hardware design • Se refiere a la misma

clase del diseño free hardware design, pero intenta aclarar que la palabra libre, se refiere a la libertad y no al precio. • Open source hardware

• Se

refiere al hardware para el cual toda la información del diseño se pone a disposición del público en general. Open source hardware se puede basar en un free hardware design, o el diseño en el cual se basa puede ser restringido de alguna manera.

• Open Hardware • Es una marca registrada

del Open Hardware Specification Program. Es una forma limitada de open source hardware, para la cual el requisito es que



La suficiente documentación del dispositivo debe estar disponible para que un programador competente pueda escribir un controlador del dispositivo.



Es decir, solamente una cantidad de información limitada sobre el diseño necesita estar disponible; posiblemente no mucha, por ejemplo, para hacer una reparación.

• •

Free hardware

Es un término usado de vez en cuando como sinónimo para el open source hardware. Es un término que busca ser directamente paralelo entre el hardware y el software, pero vela la distinción entre el diseño y la puesta en práctica. El término de free hardware es particularmente confuso puesto que implica el estado físico del hardware, más que su diseño, el cual de alguna manera es libre.

ARDUINO. •

Es una plataforma basada en hardware y software libres que permiten realizar prototipos de circuitos electrónicos multidisciplinares de una manera muy sencilla y barata.

• •

Historia:



Homenaje al Marqués Arduino de Ivrea, que fue rey de Italia entre los años 1002-1004

Creado en el Instituto de Diseño Interactivo de Ivrea(Italia) en 2005.

• •

¿Para qué sirve Arduino?

Arduino se puede utilizar para crear elementos autónomos, conectándose a dispositivos e interactuar tanto con el hardware como con el software. Nos sirve tanto para controlar un elemento, pongamos por ejemplo un motor que nos suba o baje una persiana basada en la luz existente es una habitación, gracias a un sensor de luz conectado al Arduino, o bien para leer la información de una fuente, como puede ser un teclado o una página web, y convertir la información en una acción como puede ser encender una luz y escribir por un display lo tecleado.

FUNCIONAMIENTO: • •

El funcionamiento de la placa se compone de:



Microcontrolador: Es el cerebro de Arduino, con los datos recibidos del entorno (conexiones de entrada) es donde, a través del lenguaje de programación (open source y con una curva de aprendizaje rápida), nosotros le decimos cómo interpretar la información, qué parámetros buscar y comparar, y por último, qué acciones tomar a modo de respuesta.



Conexiones de Salida: Dependiendo del proyecto trabajando, y en función de las órdenes que le programando el microcontrolador, Arduino puede diversos actuadores (relés, pantallas, motores,…), y (otras placas, ordenadores,…) para provocar la necesitamos.



Puertos/Buses de comunicación: serie, I2C, SPI en la placa y ethernet, wifi, modbus, can bus, RS232, etc… mediante shields.

Conexiones de Entrada: A través de sensores conectados en estos pins, Arduino recibe datos del exterior (entorno)

en el que esté hayamos dado conectarse con sistemas lógicos respuesta que

PRINCIPALES CARACTERÍSTICAS • Software libre • Hardware libre • Puerto usb • Fácil de usar • Precio reducido • Completamente independiente

HARDWARE ARDUINO • Hadware libre: • Al ser open-hardware,

tanto su diseño, como su distribución es libre. Es decir, puede utilizarse libremente para el desarrollo de cualquier tipo de proyecto sin necesidad de adquirir ninguna licencia.

• Arduino esta basado en hardware libre.

SOFTWARE DE PROGRAMACIÓN DE ARDUINO • •

Software libre



Arduino esta basado en software libre porque se programa con un entorno de desarrollo de descarga gratuita, que puede modificarse y redistribuirse sin coste ni problemas de licencia.



El lenguaje puede ampliarse a través de librerías C++, y ser profundizado en el lenguaje AVR C en el que esta basado.

El software se refiere a las partes programadas de un ordenador.

SOFTWARE https://www.arduino.cc/en/main/software

ES MULTIPLATAFORMA • Se puede programar en diversos sistemas operativos. • Windows • Mac ox • Linux

• Computación física • Consiste en construir sistemas electrónicos interactivos capaces de: • Capturar información del exterior mediante sensores( detectores, botones, etc.) • Responder al mundo exterior mediante actuadores( motores, pantallas, indicadores, luminosos, etc.)

• El comportamiento del sistema esta implementando por software que se ejecuta en un microcontrolador( un ordenador completo del tamaño de un chip).

• Microcontralador • Arduino usa microcontroladores Atmega de Atmel • En un único chip se incluyen todos los componentes ordenador( control, memoria, conexión con el exterior, etc.)

necesarios de un

COMUNICACIÓN ARDUINO-MUNDO

LENGUAJE DE PROGRAMACIÓN ARDUINO • •

Lenguaje de programación C++

• •

Características de C:



Es un lenguaje de medio nivel. Trata con objetos básicos como caracteres, números, etc. También con bits y direcciones de memoria.

• •

Posee una gran portabilidad

C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido. Es el lenguaje de programación de propósito general asociado al sistema operativo UNIX.

Se utiliza para la programación de sistemas: construcción de intérpretes, compiladores, editores de texto, etc.

ELEMENTOS BÁSICOS EN LA PROGRAMACIÓN EN C++ • •

{} entre llaves

• •

; punto y coma

• •

/*… */ bloque de comentarios

• •

// línea de comentarios

Las llaves sirven para definir el principio y el final de un bloque de instrucciones. Se utilizan para los bloques de programación setup(), loop(), if.., etc.

El punto y coma “;” se utiliza para separar instrucciones en el lenguaje de programación de Arduino.

Los bloques de comentarios, o comentarios multi-línea son áreas de texto ignorados por el programa que se utilizan para las descripciones del código o comentarios que ayudan a comprender el programa.

Una línea de comentario empieza con / / y terminan con la siguiente línea de código.

TIPOS DE ARDUINO ❑ Arduino UNO Arduino Uno es una placa electrónica basada en el microcontrolador ATmega328. Cuenta con 14 entradas/salidas digitales, de las cuales 6 se pueden utilizar como salidas PWM (Modulación por ancho de pulsos) y otras 6 son entradas analógicas. Además, incluye un resonador cerámico de 16 MHz, un conector USB, un conector de alimentación, una cabecera ICSP y un botón de reseteado. La placa incluye todo lo necesario para que el microcontrolador haga su trabajo, basta conectarla a un ordenador con un cable USB o a la corriente eléctrica a través de un transformador.

❑ Arduino Leonardo El Arduino Leonardo es un tablero de microcontrolador basado en el ATmega32u4 (hoja de datos). Tiene 20 pines de entrada / salida digital (de los cuales 7 se pueden usar como salidas PWM y 12 como entradas analógicas), un oscilador de cristal de 16 MHz, una conexión micro USB, un conector de alimentación, un encabezado ICSP y un botón de reinicio. Contiene todo lo necesario para soportar el microcontrolador; simplemente conéctelo a una computadora con un cable USB o enciéndalo con un adaptador de CA a CC o una batería para comenzar. El Leonardo difiere de todas las tarjetas anteriores en que el ATmega32u4 tiene comunicación USB incorporada, lo que elimina la necesidad de un procesador secundario. Esto permite que el Leonardo aparezca en una computadora conectada como un mouse y un teclado, además de un puerto serie / COM virtual (CDC). También tiene otras implicaciones para el comportamiento de la junta; Estos se detallan en la página de inicio.

❑ El Arduino Mega Es con mucha diferencia el más potente de las placas con microcontrolador de 8 bits y el que más pines i/o tiene, apto para trabajos ya algo más complejos aunque tengamos que sacrificar un poco el espacio. Cuenta con el microcontrolador Atmega2560 con más memoria para el programa, más RAM y más pines que el resto de los modelos. El Arduino Mega 2560 es un tablero de microcontrolador basado en el ATmega2560. Tiene 54 pines de entrada / salida digital (de los cuales 15 se pueden usar como salidas PWM), 16 entradas analógicas, 4 UART (puertos de hardware en serie), un oscilador de cristal de 16 MHz, una conexión USB, un conector de alimentación, un cabezal ICSP, y un botón de reinicio. Contiene todo lo necesario para soportar el microcontrolador; simplemente conéctelo a una computadora con un cable USB o enciéndalo con un adaptador de CA a CC o una batería para comenzar. El tablero Mega 2560 es compatible con la mayoría de los escudos diseñados para el Uno y los tableros Duemilanove o Diecimila anteriores.

❑ Arduino Nano El Arduino Nano es un tablero pequeño, completo y fácil de utilizar basado en el ATmega328P (Arduino Nano 3.x). Tiene más o menos la misma funcionalidad del Arduino Duemilanove, pero en un paquete diferente. Solo le falta un conector de alimentación de CC y funciona con un cable USB Mini-B en lugar de uno estándar.

❑ Arduino LilyPad La placa principal LilyPad Arduino se basa en el ATmega168V (la versión de bajo consumo del ATmega168) o el ATmega328V. El LilyPad Arduino fue diseñado y desarrollado por Leah Buechley y SparkFun Electronics.

❑ Arduino Ethernet El Arduino Ethernet es una placa de microcontrolador basada en el ATmega328. Tiene 14 pines de entrada / salida digital, 6 entradas analógicas, un oscilador de cristal de 16 MHz, una conexión RJ45, un conector de alimentación, un encabezado ICSP y un botón de reinicio. NB: Los pines 10, 11, 12 y 13 están reservados para la interfaz con el módulo Ethernet y no deben utilizarse de otra manera. Esto reduce el número de pines disponibles a 9, con 4 disponibles como salidas PWM. También se puede agregar un módulo Power over Ethernet a la placa ❑ Arduino Due El Arduino Due es una placa de microcontrolador basada en la CPU Atmel SAM3X8E ARM Cortex-M3. Es la primera placa Arduino basada en un microcontrolador de núcleo ARM de 32 bits. Tiene 54 pines de entrada / salida digital (de los cuales 12 se pueden usar como salidas PWM), 12 entradas analógicas, 4 UARTs (puertos serie de hardware), un reloj de 84 MHz, una conexión compatible con USB OTG, 2 DAC (digital a analógico) , 2 TWI, un conector de alimentación, un encabezado SPI, un encabezado JTAG, un botón de reinicio y un botón de borrado.

HARDWARE • El hardware consiste en una placa con un microcontrolador Atmel AVR y puertos de entrada/salida.

• Los microcontroladores más usados por su sencillez y bajo coste que permiten el desarrollo de múltiples diseños son: • Atmega168 • Atmega328 • Atmega1280 • ATmega8

Arduino Uno - R3

HARDWARE • Se usa también con microcontroladores CortexM3 ARM de 32 bits

• ARM y AVR no son plataformas compatibles a nivel binario, pero se pueden programar con el mismo IDE de Arduino • Los microcontroladores CortexM3 usan 3.3V.

• La mayoría de las placas con AVR generalmente usan 5V.

Arduino Due

HARDWARE

SOFTWARE • Arduino

puede tomar información del entorno a través de sus entradas y controlar luces, motores y otros actuadores.

• El microcontrolador en la placa Arduino se programa mediante el lenguaje de programación Arduino basado en Wiring y el entorno de desarrollo Arduino basado en Processing.

• Los

proyectos hechos con Arduino pueden ejecutarse sin necesidad de conectar a un computador.

SOFTWARE

SOFTWARE •

Es posible utilizar otros lenguajes de programación y aplicaciones populares en Arduino, debido a que Arduino usa la transmisión serial de datos soportada por la mayoría de los lenguajes de programación.



Para los que no soportan el formato serie de forma nativa, es posible utilizar software intermediario que traduzca los mensajes enviados por ambas partes para permitir una comunicación fluida.

COMPARATIVA Modelo

Microcontrolador

Voltaje de entrada

Voltaje del sistema

Entradas Analógicas

Memoria Flash

Arduino Due

AT91SAM3X8E

5-12V

3.3V

84MHz

54

12

512Kb

Arduino Leonardo

ATmega32U4

7-12V

5V

16MHz

20

12

32Kb

Arduino Uno - R3

ATmega328

7-12V

5V

16MHz

14

6

32Kb

Arduino Pro 5V/16MHz

ATmega328

5 - 12V

5V

16MHz

14

6

32Kb

Arduino Mega 2560 R3

ATmega2560

7-12V

5V

16MHz

54

16

256Kb

Mega Pro 3.3V

ATmega2560

3.3-12V

3.3V

8MHz

54

16

256Kb

Mega Pro 5V

ATmega2560

5-12V

5V

16MHz

54

16

256Kb

Arduino Mini 05

ATmega328

7-9V

5V

16MHz

14

6

32Kb

Arduino Fio

ATmega328P

3.35 -12V

3.3V

8MHz

14

8

32Kb

Frecuencia de Reloj Digital I/O

PROGRAMACIÓN • Estructura: Arduino está basado en C y soporta todas las funciones del estándar C y algunas de C++.

• Variables: En cuanto al tratamiento de las variables también comparte un gran parecido con el lenguaje C.

PROGRAMACIÓN • Constantes •

HIGH/LOW: representan los niveles alto y bajo de las señales de entrada y salida. Los niveles altos son aquellos de 3 voltios o más.

• • •

INPUT/OUTPUT: entrada o salida. false: Señal que representa al cero lógico. true: Señal cuya definición es más amplia que la de false.

FUNCIONES BÁSICAS •

E/S Digital • pinMode(pin, modo)

• •



int digitalRead(pin)

E/S Analógica

• • •



digitalWrite(pin, valor)

analogReference(tipo) int analogRead(pin) analogWrite(pin, valor)

E/S Avanzada

• •

shiftOut(dataPin, clockPin, bitOrder, valor)

unsigned long pulseIn(pin, valor)

FUNCIONES BÁSICAS • Tiempo • unsigned long millis() • unsigned long micros() • delay(ms) • delayMicroseconds(microsegundos)

• Bits y Bytes •

lowByte(), highByte(), bitRead(), bitWrite(), bitSet(), bitClear(), bit()

PROGRAMACIÓN: EJEMPLO # define LED_PIN 13 void setup () {

// Activado del contacto 13 para salida digital pinMode (LED_PIN, OUTPUT); } // Bucle infinito void loop () {

// Encendido del diodo LED enviando una señal alta digitalWrite (LED_PIN, HIGH); // Tiempo de espera de 1 segundo (1000 ms)

delay (1000); // Apagado del diodo LED enviando una señal baja. digitalWrite (LED_PIN, LOW);

// Tiempo de espera de 1 segundo delay (1000); }

5/31/2020

INTRODUCCIÓN A LOS SISTEMAS EMBEBIDOS

¿QUÉ ES UN SISTEMA EMBEBIDO? 

Un sistemas embebido es aquel que tiene hardware de computador con el software incluído en él como uno de sus principales componentes.



Podemos definir un sistema embebido como "un sistema basado en un microprocesador que no se ve como un computador".



Podemos decir que se trata de "una combinación de hardware y software, y quizá adicionales piezas mecánicas u otras partes, diseñados para realizar una función específica. En algunos casos, los sistemas embebidos son parte de un sistema más grande o producto, como es el caso de un sistema de frenado antibloqueo en un coche".

1

5/31/2020

¿QUÉ ES UN SISTEMA EMBEBIDO? •

Un sistema embebido es un sistema informático de propósito específico diseñado para realizar ciertas funciones dedicadas. Por lo general, éste es embebido como parte de un dispositivo completo incluyendo el hardware y las partes mecánicas. (Wikipedia)

Significado Debido a su tamaño compacto, bajo costo y aspectos de diseño simple hacen a los sistemas embebidos muy populares y han invadido la vida humana, éstos se han vuelto indispensables. Se encuentran en todas partes desde utensilios de la cocina a las naves espaciales.

2

5/31/2020

¿Los sistemas embebidos están en todas partes? Los sistemas embebidos abarcan todos los aspectos de la vida moderna y hay muchos ejemplos de su uso:

a)

Instrumentación Biomédica - ECG- grabador de células sanguíneas, el sistema de monitor de paciente

b)

Sistemas de comunicación - localizadores, teléfonos celulares, terminales de televisión por cable, fax y transreceivers, juegos de video y así sucesivamente.

c)

Controladores de periféricos de una computadora - controlador de teclado, controlador de memoria DRAM, el controlador DMA, el controlador de impresora, el controlador de LAN, el controlador de la unidad de disco.

¿Los sistemas embebidos están en todas partes? d)

Instrumentación Industrial - Controlador de proceso, controlador de motor de corriente continua, sistemas robóticos, control de máquina CNC, controlador de motor de lazo cerrado, el controlador cum grabadora de humedad industrial.

e)

Científico - sistema de almacenamiento digital, controlador de pantalla CRT, analizador de espectro.

3

5/31/2020

¿Los sistemas embebidos existían antes? Sí, hemos podido disfrutar de las ventajas de los sistemas embebidos desde hace mucho tiempo. Pero no eran tan populares porque en esos días la mayoría de los sistemas embebidos habían sido diseñados alrededor de un microprocesador a diferencia de los sistemas actuales que son construidos alrededor de un microcontrolador. Como sabemos un microprocesador en sí mismo no posee ninguna memoria, puertos, etc. Así que todo debe conectarse externamente mediante el uso de periféricos, como 8255, 8257, 8259, etc. Así que el sistema embebido diseñado con microprocesador no sólo era complicado en el diseño, sino también es de gran tamaño. Al mismo tiempo la velocidad del microprocesador es también una limitante para aplicaciones de gama alta.

¿Por qué un microcontrolador? Un microcontrolador es un solo chip de silicio con la memoria y todos los periféricos de entrada/salida en él. Por lo tanto un microcontrolador también se conoce popularmente como un computador de un solo chip. Normalmente, un solo microcomputador tiene las siguientes características:   





Unidad lógica aritmética. Memoria para almacenamiento de programas. EEPROM para almacenamiento de datos no volatiles. RAM para almacenar datos y funciones especiales de registros. Puertos de entrada/salida.

4

5/31/2020

¿Por qué un microcontrolador?  Temporizadores y contadores.  Convertidores Analógicos Digitales.

 Circuitos

para reset, encendido, programación serial, debugging  Una unidad de control - decodificador de instrucciones y temporización.  Puerto de comunicación serial.

¿Por qué un microcontrolador? Por lo tanto, no es de extrañar decir que el microcontrolador es el dispositvo más buscado para el diseño de un sistema embebido eficiente.

5

5/31/2020

¿Qué hay dentro de un sistema embebido? Cada sistema embebido consta de hardware a la medida en torno a una unidad central de procesamiento (CPU). Este hardware también contiene chips de memoria en la que se carga el software. El software residente en el chip de memoria es también llamado el "firmware". El sistema operativo corre por encima del hardware y el software de aplicación corre por encima del sistema operativo. La misma arquitectura es aplicable a cualquier computadora que incluye un computador de escritorio. Sin embargo, existen diferencias significativas. No es obligatorio disponer de un sistema operativo en todos los sistemas embebidos.

¿Qué hay dentro de un sistema embebido? Para pequeños electrodomésticos, tales como unidades de control remoto, acondicionadores de aire, juguetes, etc, no hay necesidad de un sistema operativo y podemos escribir sólo el software específico de esa aplicación. Para aplicaciones que necesitan un tratamiento complejo, es aconsejable disponer de un sistema operativo. En tal caso, es necesario integrar el software de la aplicación con el sistema operativo y luego transferir todo el software en el chip de memoria. Una vez que el software se transfiere al chip de memoria, el programa seguirá funcionando durante mucho tiempo y no es necesario volver a cargar el nuevo software. La siguiente diapositiva muestra la arquitectura de capas de un sistema embebido.

6

5/31/2020

Arquitectura en Capas de un Sistema Embebido

¿Qué hay dentro de un sistema embebido? Ahora vamos a ver los detalles de los distintos bloques que construyen el hardware de un sistema embebido:     



Unidad Central de Proceso (CPU) Memoria (ROM de solo lectura y RAM de acceso aleatorio R/W) Dispositivos de Entrada Dispositivos de Salida Interfaces de Comunicación Circuitería de Aplicaciones Específicas

7

5/31/2020

Arquitectura de hardware de un sistema embebido

Características de un sistema embebido Los sistemas embebidos hacen una tarea muy específica, no pueden ser programados para hacer cosas diferentes. 

Los sistemas embebidos tienen recursos muy limitados, en particular la memoria. En general, no tienen dispositivos de almacenamiento secundario, tales como el CD-ROM o el disco duro.



Los sistemas embebidos tienen que trabajar en contra de algunos plazos. Un trabajo específico tiene que ser completado dentro de un plazo específico. En algunos sistemas embebidos, llamados sistemas de tiempo real, los plazos son muy estrictos. Faltar a un plazo específico puede causar una catástrofe - la pérdida de vidas o daños a la propiedad.

8

5/31/2020

Características de un sistema embebido 

Los sistemas embebidos se ven limitados por el consumo de energía, ya que muchos sistemas embebidos funcionan a través de una batería, el consumo de energía tiene que ser muy bajo.



Los sistemas embebidos tienen que ser altamente confiable. De vez en cuando, presionar CTRL-ALT-DEL está bien en el sistema de escritorio, pero no puede permitirse el lujo de reiniciar el sistemas embebido.



Algunos sistemas embebidos tienen que operar en condiciones ambientales extremas, como temperaturas muy elevadas y humedad.

Características de un sistema embebido 

Los sistemas embebidos que atienden el mercado de consumo (por ejemplo, los juguetes electrónicos) son muy rentables. Incluso una reducción de 10 dólares es mucho ahorro de costos, ya que miles o millones de sistemas pueden ser vendidos.



A diferencia de los ordenadores de escritorio en el que la plataforma de hardware está dominado por Intel y el sistema operativo está dominado por Microsoft, existe una amplia variedad de procesadores y sistemas operativos para los sistemas embebidos. Por lo tanto, la elección de la plataforma correcta es la tarea más compleja.

9

5/31/2020

Clasificación de los Sistemas Embebidos Con base en la funcionalidad y los requisitos de rendimiento, sistemas embebidos se clasifican como:  Sistemas Embebidos independientes  Sistemas Embebidos en Tiempo Real  Dispositivos de Información en Red  Dispositivos Mobiles

Sistemas Embebidos Independientes Como su nombre lo indica, los sistemas independientes funcionan en modo independiente. Toman entradas, procesan y producen el resultado deseado. Las entradas pueden ser señales eléctricas de los transductores o comandos de un ser humano, tales como la pulsación de un botón. Las salidas pueden ser señales eléctricas para conducir otro sistema, una pantalla LED o LCD para la visualización de la información a los usuarios. Los sistemas embebidos usados en el control de procesos, automóviles, artículos electrónicos de consumo, etc. entran en esta categoría.

10

5/31/2020

Sistemas en Tiempo Real Sistemas embebidos en los que algunos trabajos específicos tienen que hacerse en un período de tiempo específico se denominan sistemas de tiempo real. Por ejemplo, considere un sistema que tiene que abrir una válvula dentro de 30 milisegundos cuando la humedad cruza un umbral particular. Si la válvula no se abre en el plazo de 30 milisegundos, puede producirse una catástrofe. Tales sistemas con plazos estrictos se denominan sistemas de tiempo real.

Sistemas en Tiempo Real En algunos sistemas embebidos, los plazos de tiempo se imponen, pero el no adherirse a ellos de vez en cuando no nos llevará a una catástrofe. Por ejemplo, considere un reproductor de DVD. Supongamos, usted da una orden para el reproductor de DVD desde un mando a distancia, y hay un retraso de unos pocos milisegundos en la ejecución de ese comando. Sin embargo, este retraso no dará lugar a una implicación grave. Tales sistemas se denominan sistemas suaves en tiempo real.

11

5/31/2020

Sistema Embebido de tiempo real duro

Dispositivos de Información en Red Los sistemas embebidos que son provistos con interfaces de red y acceso a redes tales como la Red de área local o de Internet se llaman dispositivos de información en red. Tales sistemas embebidos están conectados a una red, por lo general una red que ejecuta el conjunto de protocoloes TCP/IP (Transmission Control Protocol /Internet Protocol) , como Internet o la Intranet de la empresa. Estos sistemas han surgido en los últimos años. Estos sistemas corren el protocolo TCP/IP y se conectan a través de PPP o Ethernet a una red y se comunican con otros nodos en la red.

12

5/31/2020

Dispositivos de Información en Red Estos son algunos ejemplos de este tipo de sistemas:  Un sistema de control de proceso en red consiste en un

número de sistemas embebidos conectados como una red de área local. Cada sistema embebido puede enviar datos en tiempo real a una localización central desde donde el sistema de control de todo el proceso se puede controlar. El seguimiento se puede hacer utilizando un navegador web tal como el Internet Explorer.  Una cámara web puede ser conectado a Internet. La

cámara web puede enviar imágenes en tiempo real a cualquier ordenador conectado a Internet. En tal caso, la cámara web tiene que ejecutar el software de servidor HTTP, además de la pila de protocolos TCP / IP.

Dispositivos de Información en Red  La cerradura de la puerta de su casa puede ser un

pequeño sistema embebido con el software de servidor TCP / IP y HTTP ejecutándose en él.  Cuando los niños se paran delante de la cerradura de la puerta después de su regreso de la escuela, la cámara web en la cerradura de la puerta le enviará una alerta a su escritorio a través de Internet y luego se puede abrir la cerradura de la puerta a través de un clic del ratón.

13

5/31/2020

Dispositivos de Información en Red

La figura muestra un sistema de vigilancia meteorológica conectada a la Internet. Software de servidor web HTTP y el protocolo TCP / IP se ejecutan en este sistema. Cualquier ordenador conectado a Internet puede acceder a este sistema para obtener información meteorológica en tiempo real.

Dispositivos de Información en Red

Los dispositivos de información en red necesitan correr la pila completa del protocolo TCP / IP, incluyendo los protocolos de capa de aplicación. Si el equipo tiene que proporcionar información a través de Internet, el software de servidor web HTTP también debe ejecutarse en el sistema.

14

5/31/2020

Dispositivos Móviles

Los dispositivos móviles, como teléfonos móviles, asistentes personales digitales (PDA), teléfonos inteligentes, etc. son una categoría especial de sistemas embebidos. Aunque los PDA´s hacen muchas tareas de propósito general, necesitan ser diseñados al igual que los sistemas "convencionales" embebidos

Dispositivos Móviles Las limitaciones de los dispositivos móviles - limitaciones de memoria, tamaño pequeño, la falta de buenos interfaces de usuario tales como el teclado integral y una pantalla, etc son las mismas que las que se encuentran en los sistemas embebidos discutidos anteriormente. Por lo tanto, los dispositivos móviles son considerados como sistemas embebidos. Sin embargo, los PDAs son ahora capaces de soportar aplicaciones de software de propósito general como procesadores de texto, juegos, etc.

15

5/31/2020

Lenguajes para la programación de Sistemas Embebidos El lenguaje ensamblador fue el pionero para la programación de sistemas embebidos hasta hace poco. Hoy en día hay muchos más lenguajes para programar estos sistemas. Algunos de los lenguajes son C, C++, Ada, Forth y Java, junto con su nueva mejora J2ME. La presencia de las herramientas para modelar el software en UML, SDL es suficiente para indicar la madurez de la programación de software embebido.

Lenguajes para la programación de Sistemas Embebidos La mayoría de software para sistemas embebidos todavía se hace en lenguaje C. Una encuesta reciente indica que aproximadamente el 45% del software embebido se sigue haciendo en lenguaje C. C++ también está aumentando su presencia en sistemas embebidos. Como C++ está basado en el lenguaje C, proporcionando así al programador las metodologías orientadas a objetos para cosechar los beneficios de este enfoque.

16

5/31/2020

Lenguajes para la programación de Sistemas Embebidos C es muy cercano al lenguaje ensamblador, éste permite un fácil acceso al hardware subyacente. Un gran número de compiladores de alta calidad y herramientas de depuración están disponibles para el lenguaje C. Aunque C++ es teóricamente más eficiente que C, pero algunos de sus compiladores tienen fallos debido al enorme tamaño del lenguaje. Estos compiladores pueden causar una ejecución con errores.

Lenguajes para la programación de Sistemas Embebidos El lenguaje C puede definitivamente pretender tener los compiladores más maduros que C++. Ahora, con el fin de aprovechar los beneficios adicionales de C++ y además de evitar la ejecución con errores, los expertos están haciendo esfuerzos para identificar un subconjunto de C++ que se puede utilizar en sistemas embebidos y este subconjunto sea llamado C++ Embebido.

17

5/31/2020

Interfaces de Comunicación Para sistemas embebidos que interactúan con el mundo exterior, una serie de interfaces de comunicación están disponibles. Ellos son:  Interfaces de Comunicación Serial (SCI):

RS-232, RS-422, RS-485 etc.  Interfaz de comunicación serial síncrona :

I2C, JTAG, SPI, SSC and ESSI  Universal Serial Bus (USB)

Interfaces de Comunicación 

Redes: Ethernet, Controller Area Network, LonWorks, etc.



Timers: PLL(s), Capture/Compare and Time Processing Units



Discrete IO: General Purpose Input/Output (GPIO)



Analog to Digital/Digital to Analog (ADC/DAC)

18

5/31/2020

¿Cuál es el mejor conjunto de microcontroladores para el diseño de Sistemas Embebidos? Siempre hay competencia entre la eficiencia y la disipación de energía. Para saber esto, vamos a repasar los diferentes tipos de microcontroladores , sus especificaciones y los vendedores.

19

5/31/2020

Tipos de Microcontroladores De la diapositiva anterior podemos encontrar que el procesador ARM es una opción sólida para un mejor rendimiento. Pero si tenemos en cuenta el consumo de energía, en el caso de ARM es alrededor de 400 MW y el ATmega1031, AVR microcontrolador consume baja potencia alrededor de 16,5 mW, pero proporciona bajo rendimiento.

Tipos de Microcontroladores Pero la Texas Instruments MSP430 con una amplia gama de modos de funcionamiento consume sólo 1,2 mW con bastante buen rendimiento. Así que siempre se deja al diseñador elegir un dispositivo adecuado de acuerdo con el requisito.

20

5/31/2020

Diseño de un Sistema Embebido Caso de Estudio Para entender el diseño de un sistema embebido sencillo. Consideremos en primer lugar la idea de un sistema de adquisición de datos. El sistema de adquisición de datos se muestra en la siguiente figura.

Diseño de un Sistema Embebido Caso de Estudio

Sistema de Adquisición de Datos

21

5/31/2020

Diseño de un Sistema Embebido Caso de Estudio Por ejemplo consideremos un simple caso de un sistemas embebido de medición de temperatura. En primer lugar hay que seleccionar un sensor de temperatura como una resistencia térmica o AD590 o LM35 y LM75 LM335 o etc. Después de esto, los datos analógicos se convierten en datos digitales y al mismo tiempo se realiza el acondicionamiento de señal.

Diseño de un Sistema Embebido Caso de Estudio  Esta entrada digital se alimenta al microcontrolador a

través de sus puertos.  Mediante el desarrollo de un programa adecuado (C

Embebido o Ensamblador) los datos son procesados ​y controlados.  Para este propósito Keil Ride o ARM IAR Embebido

Workbench compiladores de C pueden ser utilizados.

22

5/31/2020

Diseño de un Sistema Embebido Caso de Estudio Una vez que el programa está depurado, y está libre de errores puede ser descargado en la memoria flash del microcontrolador utilizando ISP. Ahora, el chip microcontrolador actúa como un chip embebido.

Diseño de un Sistema Embebido Caso de Estudio

23

5/31/2020

Diseño de un Sistema Embebido Caso de Estudio

Embedded C softwares Keil μvision versión de evaluación puede ser descargado desde www.keil.com Compilador Embedded C Ride puede ser descargado libremente de http://www.raisonance.com Embedded IAR ARM Workbench descargados de http://www.iar.com

pueden

ser

24

5/31/2020

Sistemas de Desarrollo Los distintos proveedores que pueden suministrar kits de microcontroladores : 1.Power systems, Chennai (www.powersoftsystems .com) 2.Vi-microsystems - Chennai(www.vimicrosystems.com) 3.ESA systems- Bangalore( www.esa india.com) 4.SPJ Embedded Technologies .Ltd. (www.spjsystems.com) 5.Advanced Electronic systems-Bangalore (www. alsindia.net) 6. Front line electronics . www. frontline-electronics. com

Bibliografía Libros de referencia de los sistemas embebidos : Barr, Michael, Programming embedded sytems in C and C++ - OReilly Publ. 2) Raj Kamal, Embedded systems, TMG 3) Valvano, Introduction to Embedded microcomputer systems, Thomson Publ. 1)

25

5/31/2020

Bibliografía Mazidi and Mazidi, The 8051 microcontroller and embedded sytems - Pearson education. 5) Peatman,J.B. Design with microcontrollers and microcomputers, McGraw Hill 6) Sewart. J.W. The 8051 Microcontroller Hardware, Software and Interfacing – Prentice Hall 4)

Bibliografía Ayala Kenneth, The 8051 Microntroller – Architecture, Programming and Applications – Delmar Publ. 8) 8) Ajay Deshmukh, Microcontrollers – TATA McGraw Hill 9) 9) Rajkamal, Microcontrollers - Architecture, Programming – Pearson Publ. 10) 10) Myke Predko, Programming the 8051 Microcontroller – McGraw Hill 7)

26

5/31/2020

Bibliografía 11) Michael J. Pont, Embedded C - Addison Wesely Publ. 12) Steve Heath, Embedded system design – Heinemann

Publ. 13) Frank Vahid, Embedded systems – a unified hardware/software Introduction – John Wiley and sons Publ. 14) Barnett Cox & O’cull, “Embedded C Programming & the Microchip PIC”, Thomson Delmar Learning.

Nuestro reto  Hay mucho más que aprender, el límite es

nuestra imaginación, es cuestión de dedicación y practicar con los Sistemas Embebidos.

27

SISTEMAS OPERATIVOS PARA SISTEMAS EMBEBIDOS UNIDAD I

SISTEMAS OPERATIVOS Un sistema operativo (SO, frecuentemente OS, del inglés Operating System) es un programa o conjunto de programas que en un sistema informático gestiona los recursos de hardware y provee servicios a los programas de aplicación, ejecutándose en modo privilegiado respecto de los restantes.

SISTEMAS OPERATIVOS Interacción del SO con el resto de las partes

SISTEMAS OPERATIVOS Es un error común muy extendido denominar al conjunto completo de herramientas sistema operativo, es decir, la inclusión en el mismo término de programas como el explorador de ficheros, el navegador web y todo tipo de herramientas que permiten la interacción con el sistema operativo, también llamado núcleo o kernel. Esta identidad entre kernel y sistema operativo es solo cierta si el núcleo es monolítico.

SISTEMAS OPERATIVOS Un ejemplo para comprender esta diferencia se encuentra en la plataforma Amiga, donde el entorno gráfico de usuario se distribuía por separado, de modo que, también podía reemplazarse por otro, como era el caso de directory Opus o incluso manejarlo arrancando con una línea de comandos y el sistema gráfico era independiente. De este modo, al arrancar un Amiga, comenzaba a funcionar con el propio sistema operativo que llevaba incluido en una ROM, por lo que era cuestión del usuario decidir si necesitaba un entorno gráfico para manejar el sistema operativo o simplemente otra aplicación.

SISTEMAS OPERATIVOS Uno de los más prominentes ejemplos de esta diferencia, es el núcleo Linux, usado en las llamadas distribuciones Linux, ya que al estar también basadas en Unix, proporcionan un sistema de funcionamiento similar

SISTEMAS OPERATIVOS Este error de precisión, se debe a la modernización de la informática llevada a cabo a finales de los 80, cuando la filosofía de estructura básica de funcionamiento de los grandes computadores se rediseñó a fin de llevarla a los hogares y facilitar su uso, cambiando el concepto de computador multiusuario, (muchos usuarios al mismo tiempo) por un sistema monousuario (únicamente un usuario al mismo tiempo) más sencillo de gestionar

SISTEMAS OPERATIVOS Uno de los propósitos del sistema operativo que gestiona el núcleo intermediario consiste en gestionar los recursos de localización y protección de acceso del hardware, hecho que alivia a los programadores de aplicaciones de tener que tratar con estos detalles. La mayoría de aparatos electrónicos que utilizan microprocesadores para funcionar, llevan incorporado un sistema operativo (teléfonos móviles, reproductores de DVD, computadoras, radios, enrutadores, etc.).

SISTEMAS OPERATIVOS Perspectiva Histórica: • Los primeros sistemas (1945-1955) eran grandes máquinas operadas desde la consola maestra por los programadores. Durante la década siguiente (1955-1965) se llevaron a cabo avances en el hardware: lectoras de tarjetas, impresoras, cintas magnéticas, etc. Esto a su vez provocó un avance en el software: compiladores, ensambladores, cargadores, manejadores de dispositivos, etc. • A finales de los años 1980, una computadora Commodore Amiga equipada con una aceleradora Video Toaster era capaz de producir efectos comparados a sistemas dedicados que costaban el triple. Un Video Toaster junto a Lightwave ayudó a producir muchos programas de televisión y películas, entre las que se incluyen Babylon 5, Seaquest DSV y Terminator II.

SISTEMAS OPERATIVOS Monitores residentes Según fue avanzando la complejidad de los programas, fue necesario implementar soluciones que automatizaran la organización de tareas sin necesidad de un operador. Debido a ello se crearon los monitores residentes: programas que residían en memoria y que gestionaban la ejecución de una cola de trabajos. Un monitor residente estaba compuesto por un cargador, un Intérprete de comandos y un Controlador (drivers) para el manejo de entrada/salida.

SISTEMAS OPERATIVOS Cargador de programas: En informática, un cargador es la parte de un sistema operativo que es responsable de cargar programas en memoria desde los ejecutables (por ejemplo, usb y cd). El cargador es usualmente una parte del núcleo del sistema operativo y es cargado al iniciar el sistema y permanece en memoria hasta que el sistema es reiniciado o apagado.

SISTEMAS OPERATIVOS Algunos sistemas operativos empotrados de computadoras altamente especializadas corren un único programa y no existen capacidades de carga de programas, por lo tanto no usan cargadores. Ejemplos de estos sistemas embebidos se encuentran en equipos de audio para automóviles.

SISTEMAS OPERATIVOS Interprete de comandos:

Un intérprete de órdenes o de comandos, es un programa informático que tiene la capacidad de traducir las órdenes que introducen los usuarios, mediante un conjunto de instrucciones facilitadas por él mismo directamente al núcleo y al conjunto de herramientas que forman el sistema operativo. Las órdenes se introducen siguiendo la sintaxis incorporada por dicho intérprete, dentro del entorno proporcionado por el emulador de terminal, mediante un inductor que espera a que le sean introducidos los comandos o instrucciones: PROMPT>nombrecomando argumento/s /ruta/hacia/el/o/los/ficheros

SISTEMAS OPERATIVOS Al ingresar la orden con la tecla 'Intro', el intérprete analiza la secuencia de caracteres ingresada y, si la sintaxis de la orden es correcta, la ejecuta, recurriendo para ello a las funciones que ofrece el sistema operativo o el programa que representa, bien sea un gestor de datos de banco, una sesión de FTP, de ssh (interprete de ordenes segura), etc. La respuesta al usuario se representa en el monitor o en forma de segundo plano. Se trabaja de manera interactiva, es decir, usuario y máquina se comunican de forma sucesiva.

SISTEMAS OPERATIVOS Incorporan características tales como control de procesos, redirección de entrada/salida, listado y lectura de ficheros, protección, comunicaciones y un lenguaje de órdenes para escribir programas por lotes o (scripts o guiones). Uno de los intérpretes más conocidos, es el Bourne Shell, el cual fue el intérprete usado en las primeras versiones de Unix y se convirtió en un estándar de facto

SISTEMAS OPERATIVOS Controlador:

Un controlador de dispositivo (llamado normalmente controlador, o, en inglés, driver) es un programa informático que permite al sistema operativo interactuar con un periférico, haciendo una abstracción del hardware y proporcionando una interfaz -posiblemente estandarizada- para usarlo. Se puede esquematizar como un manual de instrucciones que le indica cómo debe controlar y comunicarse con un dispositivo en particular. Por tanto, es una pieza esencial, sin la cual no se podría usar el hardware.

SISTEMAS OPERATIVOS Mas adelante hace aparición el disco magnético con lo que surgen nuevas soluciones a los problemas de rendimiento. Se eliminan las cintas magnéticas para el volcado previo de los datos de dispositivos lentos y se sustituyen por discos (un disco puede simular varias cintas). Debido al solapamiento del cálculo de un trabajo con la E/S de otro trabajo se crean tablas en el disco para diferentes tareas, lo que se conoce como Spool (Simultaneous Peripherial Operation On-Line).

SISTEMAS OPERATIVOS Surge un nuevo avance en el hardware: el hardware con protección de memoria. Lo que ofrece nuevas soluciones a los problemas de rendimiento: Se solapa el cálculo de unos trabajos con la entrada/salida de otros trabajos. Se pueden mantener en memoria varios programas. Se asigna el uso de la CPU a los diferentes programas en memoria. Debido a los cambios anteriores, se producen cambios en el monitor residente, con lo que éste debe abordar nuevas tareas, naciendo lo que se denomina como Sistemas Operativos multiprogramados, los cuales cumplen con las siguientes funciones: Administrar la memoria. Gestionar el uso de la CPU (planificación). Administrar el uso de los dispositivos de E/S. Cuando desempeña esas tareas, el monitor residente se transforma en un sistema operativo multiprogramado.

SISTEMAS OPERATIVOS Llamadas al sistema operativo

Definición breve: llamadas que ejecutan los programas de aplicación para pedir algún servicio al SO. Cada SO implementa un conjunto propio de llamadas al sistema. Ese conjunto de llamadas es la interfaz del SO frente a las aplicaciones. Constituyen el lenguaje que deben usar las aplicaciones para comunicarse con el SO. Por ello si cambiamos de SO, y abrimos un programa diseñado para trabajar sobre el anterior, en general el programa no funcionará, a no ser que el nuevo SO tenga la misma interfaz. Para ello: Las llamadas correspondientes deben tener el mismo formato. Cada llamada al nuevo SO tiene que dar los mismos resultados que la correspondiente del anterior.

SISTEMAS OPERATIVOS Modos de ejecución en un CPU Las aplicaciones no deben poder usar todas las instrucciones de la CPU. No obstante el Sistema Operativo, tiene que poder utilizar todo el conjunto de instrucciones del CPU. Por ello, una CPU debe tener (al menos) dos modos de operación diferentes: • Modo usuario: el CPU podrá ejecutar sólo las instrucciones del juego restringido de las aplicaciones. • Modo supervisor: la CPU debe poder ejecutar el juego completo de instrucciones.

SISTEMAS OPERATIVOS • Bibliotecas de interfaz de llamadas al sistema Las llamadas al sistema no siempre tienen una expresión sencilla en los lenguajes de alto nivel, por ello se crean las bibliotecas de interfaz, que son bibliotecas de funciones que pueden usarse para efectuar llamadas al sistema. Las hay para distintos lenguajes de programación. La aplicación llama a una función de la biblioteca de interfaz (mediante una llamada normal) y esa función es la que realmente hace la llamada al sistema.

SISTEMAS OPERATIVOS • Interrupciones y excepciones. El SO ocupa una posición intermedia entre los programas de aplicación y el hardware. No se limita a utilizar el hardware a petición de las aplicaciones ya que hay situaciones en las que es el hardware el que necesita que se ejecute código del SO. En tales situaciones el hardware debe poder llamar al sistema, pudiendo deberse estas llamadas a dos condiciones: Algún dispositivo de E/S necesita atención. Se ha producido una situación de error al intentar ejecutar una instrucción del programa (normalmente de la aplicación).

SISTEMAS OPERATIVOS En ambos casos, la acción realizada no está ordenada por el programa de aplicación, es decir, no figura en el programa. Según los dos casos anteriores tenemos las interrupciones y la excepciones: Interrupción: señal que envía un dispositivo de E/S a la CPU para indicar que la operación de la que se estaba ocupando, ya ha terminado. Excepción: una situación de error detectada por la CPU mientras ejecutaba una instrucción, que requiere tratamiento por parte del SO.

SISTEMAS OPERATIVOS Tratamiento de las interrupciones • Una interrupción se trata en todo caso, después de terminar la ejecución de la instrucción en curso. • El tratamiento depende de cuál sea el dispositivo de E/S que ha causado la interrupción, ante la cual debe poder identificar el dispositivo que la ha causado. • La ventaja de este procedimiento es que no se tiene que perder tiempo ejecutando continuamente rutinas para consultar el estado del periférico. El inconveniente es que el dispositivo debe tener los circuitos electrónicos necesarios para acceder al sistema de interrupciones del computador.

SISTEMAS OPERATIVOS

Importancia de las interrupciones. El mecanismo de tratamiento de las interrupciones permite al SO utilizar la CPU en servicio de una aplicación, mientras otra permanece a la espera de que concluya una operación en un dispositivo de E/S. El hardware se encarga de avisar al SO cuando el dispositivo de E/S ha terminado y el SO puede intervenir entonces, si es conveniente, para hacer que el programa que estaba esperando por el dispositivo, se continúe ejecutando. En ciertos intervalos de tiempo puede convenir no aceptar señales de interrupción. Por ello las interrupciones pueden inhibirse por programa (aunque esto no deben poder hacerlo las mismas).

SISTEMAS OPERATIVOS • Excepciones Cuando la CPU intenta ejecutar una instrucción incorrectamente construida, la unidad de control lanza una excepción para permitir al SO ejecutar el tratamiento adecuado. Al contrario que en una interrupción, la instrucción en curso es abortada. Las excepciones al igual que las interrupciones deben estar identificadas.

SISTEMAS OPERATIVOS Clases de excepciones. Las instrucciones de un programa pueden estar mal construidas por diversas razones: • El código de operación puede ser incorrecto. • Se intenta realizar alguna operación no definida, como dividir por cero. • La instrucción puede no estar permitida en el modo de ejecución actual. • La dirección de algún operando puede ser incorrecta o se intenta violar alguno de sus permisos de uso

SISTEMAS OPERATIVOS • El mecanismo de tratamiento de las excepciones es esencial para impedir, junto a los modos de ejecución de la CPU y los mecanismos de protección de la memoria, que las aplicaciones realicen operaciones que no les están permitidas. En cualquier caso, el tratamiento específico de una excepción lo realiza el SO. • Como en el caso de las interrupciones, el hardware se limita a dejar el control al SO, y éste es el que trata la situación como convenga. • Es bastante frecuente que el tratamiento de una excepción no retorne al programa que se estaba ejecutando cuando se produjo la excepción, sino que el SO aborte la ejecución de ese programa. Este factor depende de la pericia del programador para controlar la excepción adecuadamente.

SISTEMAS OPERATIVOS Gestión de procesos Un proceso es simplemente, un programa en ejecución que necesita recursos para realizar su tarea: tiempo de CPU, memoria, archivos y dispositivos de E/S. El SO es el responsable de: • Crear y destruir procesos • Parar y reanudar procesos • Ofrecer mecanismos para que los procesos puedan comunicarse y se sincronicen

SISTEMAS OPERATIVOS La gestión de procesos podría ser similar al trabajo de oficina. Se puede tener una lista de tareas a realizar y a estas fijarles prioridades alta, media, baja por ejemplo. Debemos comenzar haciendo las tareas de prioridad alta primero y cuando se terminen seguir con las de prioridad media y después las de baja. Una vez realizada la tarea se tacha. Esto puede traer un problema que las tareas de baja prioridad pueden que nunca lleguen a ejecutarse. y permanezcan en la lista para siempre. Para solucionar esto, se puede asignar alta prioridad a las tareas más antiguas.

SISTEMAS OPERATIVOS Gestión de la memoria principal La memoria es una gran tabla de palabras o bytes que se referencian cada una mediante una dirección única. Este almacén de datos de rápido acceso es compartido por la CPU y los dispositivos de E/S, es volátil y pierde su contenido ante fallos del sistema. El SO es el responsable de: • Conocer qué partes de la memoria están siendo utilizadas y por quién • Decidir qué procesos se cargarán en memoria cuando haya espacio disponible • Asignar y reclamar espacio de memoria cuando sea necesario

SISTEMAS OPERATIVOS Gestión del almacenamiento secundario Un sistema de almacenamiento secundario es necesario, ya que la memoria principal (almacenamiento primario) es volátil y además muy pequeña para almacenar todos los programas y datos. También es necesario mantener los datos que no convenga mantener en la memoria principal. El SO se encarga de: • Planificar los discos. • Gestionar el espacio libre. • Asignar el almacenamiento. • Verificar que los datos se guarden en orden

SISTEMAS OPERATIVOS El sistema de entrada y salida Consiste en un sistema de almacenamiento temporal (caché), una interfaz de manejadores de dispositivos y otra para dispositivos concretos. El sistema operativo debe gestionar el almacenamiento temporal de E/S y servir las interrupciones de los dispositivos de E/S.

SISTEMAS OPERATIVOS Sistema de archivos Los archivos son colecciones de información relacionada, definidas por sus creadores. Éstos almacenan programas (en código fuente y objeto) y datos tales como imágenes, textos, información de bases de datos, etc. El SO es responsable de: • Construir y eliminar archivos y directorios. • Ofrecer funciones para manipular archivos y directorios. • Establecer la correspondencia entre archivos y unidades de almacenamiento. • Realizar copias de seguridad de archivos.

SISTEMAS OPERATIVOS Existen diferentes sistemas de archivos, es decir, existen diferentes formas de organizar la información que se almacena en las memorias (normalmente discos) de los ordenadores. Por ejemplo, existen los sistemas de archivos FAT, FAT32, EXT3, NTFS, XFS, etc. Desde el punto de vista del usuario estas diferencias pueden parecer insignificantes a primera vista, sin embargo, existen diferencias muy importantes. Por ejemplo, los sistemas de ficheros FAT32 y NTFS, que se utilizan fundamentalmente en sistemas operativos de Microsoft, tienen una gran diferencia para un usuario que utilice una base de datos con bastante información ya que el tamaño máximo de un fichero con un sistema de archivos FAT32 está limitado a 4 gigabytes, sin embargo, en un sistema NTFS el tamaño es considerablemente mayor.

SISTEMAS OPERATIVOS Sistemas de protección Mecanismo que controla el acceso de los programas o los usuarios a los recursos del sistema. El SO se encarga de: • Distinguir entre uso autorizado y no autorizado. • Especificar los controles de seguridad a realizar. • Forzar el uso de estos mecanismos de protección.

SISTEMAS OPERATIVOS Sistema de comunicaciones Para mantener las comunicaciones con otros sistemas es necesario poder controlar el envío y recepción de información a través de las interfaces de red. También hay que crear y mantener puntos de comunicación que sirvan a las aplicaciones para enviar y recibir información, y crear y mantener conexiones virtuales entre aplicaciones que están ejecutándose localmente y otras que lo hacen remotamente.

SISTEMAS OPERATIVOS Programas de sistema Son aplicaciones de utilidad que se suministran con el SO pero no forman parte de él. Ofrecen un entorno útil para el desarrollo y ejecución de programas, siendo algunas de las tareas que realizan: • Manipulación y modificación de archivos. • Información del estado del sistema. • Soporte a lenguajes de programación. • Comunicaciones.

SISTEMAS OPERATIVOS Gestor de recursos Como gestor de recursos, el sistema operativo administra: • La unidad central de procesamiento (donde está alojado el microprocesador). • Los dispositivos de entrada y salida. • La memoria principal (o de acceso directo). • Los discos (o memoria secundaria). • Los procesos (o programas en ejecución). • Y en general todos los recursos del sistema.

SISTEMAS OPERATIVOS Clasificación Administración de tareas • Monotarea: Solamente permite ejecutar un proceso (aparte de los procesos del propio SO) en un momento dado. Una vez que empieza a ejecutar un proceso, continuará haciéndolo hasta su finalización y/o interrupción. • Multitarea: Es capaz de ejecutar varios procesos al mismo tiempo. Este tipo de SO. normalmente asigna los recursos disponibles (CPU, memoria, periféricos) de forma alternada a los procesos que los solicitan, de manera que el usuario percibe que todos funcionan a la vez, de forma concurrente.

SISTEMAS OPERATIVOS Administración de usuarios • Monousuario: Si sólo permite ejecutar los programas de un usuario al mismo tiempo. • Multiusuario: Si permite que varios usuarios ejecuten simultáneamente sus programas, accediendo a la vez a los recursos de la computadora. Normalmente estos sistemas operativos utilizan métodos de protección de datos, de manera que un programa no pueda usar o cambiar los datos de otro usuario.

SISTEMAS OPERATIVOS Manejo de recursos • Centralizado: Si permite usar los recursos de una sola computadora. • Distribuido: Si permite utilizar los recursos (memoria, CPU, disco, periféricos...) de más de una computadora al mismo tiempo.

SISTEMAS OPERATIVOS Ejemplos de sistemas operativos para PC • Canaima • Mac OS X • Microsoft Windows • GNU/Linux • Unix • Solaris • FreeBSD • OpenBSD • Google Chrome OS • Debian • Ubuntu • Mandriva • Sabayon • Fedora • Linpus linux • Haiku (BeOS)

SISTEMAS OPERATIVOS Ejemplos de sistemas operativos para dispositivos móviles • • • • • • • •

iOS Android Bada BlackBerry OS Windows Phone Symbian OS HP webOS Firefox OS

SISTEMAS OPERATIVOS

SISTEMAS OPERATIVOS

SISTEMAS OPERATIVOS

SISTEMAS OPERATIVOS

SISTEMAS OPERATIVOS

SISTEMAS OPERATIVOS

SISTEMAS OPERATIVOS

SISTEMAS OPERATIVOS

SISTEMAS OPERATIVOS