Download Diseño de sistemas embebidos

Document related concepts
no text concepts found
Transcript
Diseño de S.E.
usando placa
Lanín
EmTech S.A.
Que es un sistemas embebido?
Un sistema embebido se puede definir
como un sistema electrónico diseñado
específicamente
para
realizar
determinadas funciones.
 El hardware y el software están diseñados
y optimizados para resolver un problema
en concreto.

Donde encontramos un
sistema embebido?
Electrodomésticos
Juguetes
Instrumentación
Sector Aeroespacial
Aplicaciones
Comunicaciones
Automatización
Robótica
Vehículos
¿Cuál es la arquitectura de un
sistema embebido?
Interfaz con el
usuario
Alimentación
CPU
Comunicaciones
Entrada/Salida
Placa Lanín
¿Que es ARM?

ARM es un empresa que se dedica al
diseño de cores y algunos otros
aditamentos (periféricos, controladores
de memoria, etc), pero no a la fabricación
de chip.
Empresas consumidoras de
arquitecturas ARM
Familias de arquitecturas ARM
Cortex-M
Cortex-M
Cortex-M
4 LEDs y
2 Pulsadores
Ideales para corroborar el
correcto funcionamiento
de las diferentes
aplicaciones, para ingresar
estímulos externos a la
aplicación o como interfaz
de usuario
Conexión en los puertos del
microcontrolador
Conexión USB
host
Para conectar diferentes
periféricos a la placa, tales
como teclado, mouse,
pendrive, etc.
Conexión USB host con el
microcontrolador
Conexión RS 485
Posee dos canales RS485
half-duplex
Conexión RS 485 con el
microcontrolador
Zócalo para
memoria µSD
Alta capacidad de
almacenamiento tanto
para guardar datos de
adquisiciones como
para almacenamiento
de paginas web,
archivos de audio, etc.
Conexión µSD
Conexión USB
device
Para conexión de datos y
alimentación desde una
PC. Adicionalmente
permite utilizar el
bootloader del
microcontrolador.
Conexión USB device
Ethernet
Ethernet 10/100Mbps
para implementación
de stack TPC/IP
Conexión Ethernet
Headers
Pines de uso general,
compatibles con placas
DTR desarrolladas por
Emtech S.A.
Implementa algunas
líneas del periférico
FSMC para control de
memoria Nand-Flash,
Muxed-Nor-Ram o
LCD
Conexión Headers
DTRs
DTRs
Alimentación
Externa o USB,
selección mediante
jumper
Serial/USB
y
JTAG/USB
Mediante un chip de
FTDI se implementa la
conversión de UART1 a
USB para uso general y
de JTAG a USB para
programador/depurador
on-board.
JTAG
Adicionalmente se
dispone del conector
para utilizar un
programador/depurador
externo.
Entorno de
desarrollo
Que es un entorno de desarrollo?
Es aquel que permite integrar distintas
herramientas de desarrollo dentro de un
solo programa.
 Editor, compilador, depurador.
 Lanín-CM4 SDK. (Eclipse)

Porque Eclipse?
Código abierto
 Interfaz amigable
 Existen diferentes plugins que
incrementan sus capacidades

Configuración de Eclipse
Código
fuente
Toolchain
• CodeSourcery GNU
• YAGARTO GNU ARM
Plataforma
Configuración de Eclipse
CodeSourcery GNU toolchain para ARM:
Permite construir aplicaciones ARM
embebidas.
 YAGARTO GNU ARM toolchain: Es una
EABI (embedded-application binary
interface). Esto especifica las
convenciones estándares para formatos
de archivos, tipos de datos, uso de
registros, etc.

Lanin-CM4 SDK
Diseño de
aplicaciones en
sistemas
embebidos
Recordando…
Electrodomésticos
Juguetes
Instrumentación
Sector Aeroespacial
Aplicaciones
Comunicaciones
Automatización
Robótica
Vehículos
Aplicaciones

1.
2.
3.
Cualquier sistema puede clasificarse en :
Sistema sin requerimientos de
respuestas en tiempo real.
Sistemas con requerimientos flexibles de
respuesta en tiempo real.
Sistemas con requerimientos estrictos
de respuesta en tiempo real.
Dos paradigmas de programación
El software tiene acceso directo
sobre
los
recursos
del
hardware.
Para llevar a cabo este método
en la placa Lanín, se utiliza la
librería CMSIS.
El software utiliza un sistema
operativo RTOS.
En nuestro ejemplo práctico en
la placa Lanín utilizaremos el
ChibiOS.
También se pueden correr
diferentes sistema operativos,
por ejemplo: Nuttx, FreeRTOS.
etc.
Método de programación:
¿Qué nos ofrece el fabricante para
interactuar con el uC?
La CMSIS es una librería común a todos los
fabricantes de procesadores ARM Cortex-M y
pretende establecer la abstracción del hardware.
1. Core Peripheral Access Layer
2. Device Peripheral Access Layer
3. Access Functions for Peripherals (optional)
CMSIS
Estas librerías deben agregarse al proyecto creado en
Eclipse, las cuales se encuentran comprimidas en un
único archivo titulado “STM32F4 DSP and standard
peripherals library”.
Link de descarga:
http://www.st.com/stonline/stappl/resourceSelector/app?page=resourc
eSelector&doctype=FIRMWARE&SubClassID=1521
Algunos archivos de la librería
system_stm32f4xx.c/.h
Lugar donde se encuentra la configuración del reloj
para los dispositivos STM32F4xx. Exporta la función
SystemInit() que configura el reloj, los factores
multiplicadores y divisores del PLL, AHB / APBx
prescalers y Flash. Esta función es invocada en la
inicialización justo después del reset y antes de
comenzar el programa principal. La llamada se realiza
dentro del archivo startup_stm32f4xx.s.
stm32f4xx.h
Lugar donde se encuentran las definiciones de todos
los registros de periféricos, bits de los registros, y
mapeo de memoria para dispositivos STM32F4xx.
startup_stm32f4xx.s
Proporciona el código de inicialización del Cortex-M4
y los vectores de interrupción para todos los
manejadores de interrupción del dispositivo
STM32F4xx.
Creación de
un proyecto
en C
Creación del proyecto
Importando librerías
Configuraciones
STM32F4XX
USE_STDPERIPH_DRIVER
*.ld
Proyecto terminado
Importar un proyecto
Configuración del Debugger
arm-none-eabi-gdb
Pasos para debuggear una aplicación
Ejemplos método:
Configuración general
La inicialización de cualquier periférico en los
cortex M4 consta de cuatro pasos básicos:
 Programación del reloj: En MCUs de muy
bajo consumo, generalmente los periféricos
tienen su señal de reloj inhabilitada.
 Programación de configuraciones: Los
pines del MCU son compartidos entre
periféricos, salvo muy contadas excepciones.

Configuración general
Configuración del periférico:
Determinar las características particulares
para el funcionamiento en una aplicación
específica.
 Configuración de la interrupción: Si
se tratan eventos del periférico a través
de INTs, éstas deben ser configuradas.

Configuración de Pines de Entrada y
Salida de propósito general GPIO
El uso de las GPIO son la forma más fácil de interactuar con
periféricos como botones, leds, interruptores, y otros
componentes.
De acuerdo al tipo de operación que se desee realiza con las
GPIO, se pueden configurar de acuerdo a los siguientes
parámetros:
1. Modo: Entrada, Salida,Análogo, Función alternativa.
2. Tipo del pin de salida: Push-pull, Open drain.
3. Velocidad del pin de salida: Baja (2MHz), Media (10MHz),
Alta (50MHz).
4. Resistencias internas: Pull-up, Pull down.
Configuración de Pines de Entrada y
Salida de propósito general GPIO
Código para configuración de las
salidas digitales
Ejercicio: Analizar y ejecutar el ejemplo
del demo de prendido y apagado de
led’s.
Entradas digitales


Modificar el ejemplo para cambiar
el estado de un led cada vez que se
pulse S2.
Ayuda: Manual de la “STM32F4 DSP
and standard peripherals library”
(stm32f4xx_dsp_stdperiph_lib_um.
chm)
Configuración de la USART
Código para configuración de la
USART
Entradas analógicas




3 conversores AD
19 canales multiplexados (16 externos)
Hasta12 bits de resolución
Muchos modo de funcionamiento:
◦ Simple, continuo, disparo interno, externo,
temporizado, ...



Transferencia por programa, interrupción,
DMA
Modos entrelazados, simultáneos
Canales “regulares” e “inyectados”
Configuración ADC
Método de programación:
SISTEMA OPERATIVO RTOS
Sistema Operativo en Tiempo Real
RTOS

1.
2.
Un RTOS, es un Sistema Operativo
especializado en operaciones de respuesta
en tiempo real y debe cumplir con las
siguientes características:
Respuesta de tiempo Previsible.
Determinista.
Ejemplo de Sistema en tiempo Real
Sensore
s
Entorno
Externo
Software de
Tiempo Real
Reloj
Tarea
Actuadores
Tarea
SO
Tarea

Ej: Sistema de control de un automóvil.
RTOS



Un RTOS permite diseñar la aplicación por bloques
funcionales, donde cada bloque en teoría sería un hilo
(thread).
Cada hilo se responsabilizaría de una parte de la
aplicación, respondiendo a diferentes restricciones de
tiempo, por lo cual deberán tener diferentes
prioridades.
Un SO ofrece las ventajas de asegurar la correcta
ejecución de tareas de tiempo real con tiempos de
ejecución críticas, las cuales no se ven afectadas por la
ejecución de tareas con menos prioridad.
RTOS

Un sistema operativo, ofrece, la posibilidad de asignar
prioridades a las tareas, así como los mecanismos para
que se comuniquen entre ellas, y las herramientas que
aseguren que las tareas que tienen tiempo crítico, sean
ejecutadas dentro de las restricciones de tiempo real
establecidas.
Características de un RTOS





Tiempo de Respuesta: Un RTOS eficaz sólo añade una pequeña
sobrecarga en el tiempo de respuesta mínimo teórico del sistema
por ejemplo:
◦ El tiempo desde una petición de interrupción y el de
interrupción.
◦ El tiempo de un evento de hardware, por lo general una
interrupción y el reinicio de la tarea que debe manejarlo.
◦ El tiempo de cambio de contexto, necesario para cambiar de
forma sincronizada desde el contexto de un hilo en el contexto
de otro hilo.
Bajo Jitter.
Tamaño: Un RTOS más compacto es preferible siendo todos los
demás parámetros iguales, por el costo de memoria.
Confiabilidad: Algunos sistemas pueden ser más fiables que otros,
la asignación dinámica es un buen ejemplo, tanto falta de fiabilidad y
el tiempo de imprevisibilidad.
Primitivas de Sincronización: Variedad de primitivas
disponibles para utilizar.
ChibiOS - Características

El ChibiOS es una opción fiable, ya que de acuerdo a sus
especificaciones responde positivamente a las
características de un buen sistema operativo y ofrece
herramientas que facilita la programación de
aplicaciones incluso sin restricciones de tiempo real.
Como funciona un sistema
operativo en tiempo real?
El kernel es el cuerpo del SO,
contiene todas las funciones y
características del RTOS.
Kernel
El Programador (schedule) es el
corazón del SO y decide que
tarea debe correr.
Scheduler
T1
T2
Tn
Eventos
Semáforos
Mensajes
Colas
Los mensajes y las colas
son usadas para enviar
datos entre tareas.
Las tareas son las trabajadoras
del SO y contienen el código de
la aplicación.
Los eventos y semáforos
son señales de
sincronización entre las
diferentes tareas.
Asignando prioridades

Utilice el menor número de niveles de
prioridad como sea posible. Esto para
reducir la cantidad de cambios de
contexto en el sistema.

Asegúrese de que la restricciones críticas
de tiempo se cumplan en la aplicación.
ChibiOS - Componentes
ChibiOS esta
componentes:
internamente
divido
 Kernel
 Port Layer
 Hardware Abstraction Layer
 Platform Layer
 Board Initialization
en
varios
Kernel
Bloque principal del sistema operativo. Se subdivide en
varios componentes
 System: Se encarga de la inicialización.
 Timers: Timers virtuales y temporización
 Scheduler: Todo el mecanismo de sincronización se
implementa a través de este subsistema.
 Threads
Port Layer
Este componente es el responsable de la puesta en
marcha del sistema, interrupciones, primitivas de
bloqueo/desbloqueo, cambio de contexto y las
estructuras relacionadas con interrupción de código
Hardware Abstraction Layer
(HAL)
El HAL es un conjunto de drivers de dispositivos, que
se basa en los componentes de la placa para la
implementación de bajo nivel en el hardware
específico.
El propósito de este componente es abstraer al
usuario del hardware.
Arquitectura HAL
Platform Layer
Esta capa contiene un conjunto de implementaciones
de drivers de dispositivos.
Board Initialization Layer
Este archivo es usado por el startup del sistema para
inicializar la placa.
Dependencias
En la imagen puede verse
la interdependencia de
los compontes antes
descriptos
Externs
Son librerías que se pueden agregar al
directorio del sistema operativo para
manejo de más periféricos, como la librería
para el manejo de la FAT, el stack TCP/IP,
etc.
Ejemplos práctico utilizando un
RTOS como herramienta de
programación
SISTEMA OPERATIVO RTOS
Creación de threads

Hay dos clases de hilos en ChibiOS / RT:
Static Threads: Reserva estáticamente
la memoria en tiempo de compilación.
 Dynamic Threads: Se realiza la
asignación de memoria en tiempo de
ejecución de un conjunto de memoria o
de un banco de memoria (reduce la
fiabilidad del sistema).

Creación de un thread estático
Para crear un thread estático se debe usar
“ WORKING_AREA”
static WORKING_AREA(myThreadWorkingArea, 128);
En este caso, se reservan 128 bytes de la
pila para uso del thread
Un thread estático se puede iniciar
mediante la invocación
de chThdCreateStatic ()
Thread *tp = chThdCreateStatic (myThreadWorkingArea,
sizeof(myThreadWorkingArea),
NORMALPRIO, /* Initial priority. */
myThread,
/* Thread function. */
NULL);
/* Thread parameter. */
Ejemplo, Leds intermitentes
utilizando RTOS
Ejercicio: Modificar el ejemplo para hacer titilar
todos los leds a distintas frecuencias
Comunicación entre Tareas

La comunicación puede tener la forma de un evento, un
semáforo (flag), o un mensaje que se envía a otra tarea.
1.
La forma más básica de comunicación es mediante un
evento. Un servicio de interrupción puede enviar un
evento a una tarea, algunos SOs también pueden enviar un
evento a varias tareas.
Semáforos: Se utilizan para proteger recursos compartidos,
por ejemplo, si hay más de una tarea que necesita
escribir/leer en la misma memoria (variable) el uso de un
semáforo asegura que solamente una tarea va a escribir o
leer a la vez.
Mensajes: Permite enviar datos a uno o más tareas. Se
implementan como mailbox o queue.
2.
3.
Ejemplo de sincronización de tareas con
semáforos binarios
Recurso 2, inicia como
tomado.
Toma el recurso 1,
ejecuta la tarea.
Libera el recurso 2
Toma el recurso 2
Libera el recurso 1
Ejemplo de aplicación de mensajes
Ejemplo de aplicación de mensajes
Línea de comandos por USB
Instrucciones por medio de una línea de
texto simple.
 Generando un COM virtual mediante
CDC (Comunication Device Class)

Línea de comandos por USB
Ejemplo de utilización de librerías
externas con ChibiOS (Fatfs y Lwip)

Por las características de mensajería y
sincronización del RTOS es posible
utilizar una librería externa como Lwip o
Fatfs.
Ejemplo de utilización de librerías
externas con ChibiOS (Lwip)
Ejemplo de utilización de librerías
externas con ChibiOS (Lwip)
Ejemplo de utilización de librerías
externas con ChibiOS (Lwip)
Interactuar con la página Web
Formularios, delimitados con la
etiqueta <FORM> ... </FORM>
 METHOD:

◦ POST, envía los datos al agente de procesamiento
almacenándolos en el cuerpo del formulario
◦ GET, envía los datos agregándolos a la dirección URL
y separándolos de la dirección con un signo de
interrogación.

ACTION: indica la dirección a la que se
enviará la información.
Interactuar con la página Web
Ejercicio: Capturar la siguiente solicitud en el
server Web y cambiar el estado de un led
Ejemplo de utilización de librerías
externas con ChibiOS (Fatfs)
Ejemplo de utilización de librerías
externas con ChibiOS (Fatfs)
Ejemplo de utilización de librerías
externas con ChibiOS (Fatfs)
Wave Player
Play, Pause, Stop
Server
HTML
Lectura
SD,
escritura
DAC
Referencias
http://www.arm.com/
 http://cmsis.arm.com/
 http://www.chibios.org/
 Basic Concepts for Real Time Operating
Systems by Mats Pettersson, IAR Systems
 Desarrollo con microcontroladores ARM.
Sergio Caprile.

Preguntas?