Sei sulla pagina 1di 48

Introducción al Desarrollo de Sistemas Embebidos

Clase 2: Herramientas para el desarrollo


de sistemas embebidos

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

Temario:

– Plataforma de desarrollo
– Herramientas de software
– Herramientas CAD
– Herramientas EDA
– Herramientas para planificación
– Entorno integrado de desarrollo (IDE)
– Editor de texto
– Cadena de herramientas de programación (Toolchain)
• Pre-Procesador
• Compilador
• Ensamblador
• Enlazador
– Cadena de herramientas de síntesis
• Sintetizador
• Simulador
– Programador/Depurador
– Plataforma de hardware

– Selección de la plataforma de desarrollo

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.1.- Plataforma de desarrollo

¿Qué herramientas se necesitan para


desarrollar un sistema embebido?

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

Ingeniero
Metodología definida (Análisis, planificación, estándares)

Diseñador
Metodología definida (Planificación, reglas)

Aficionado (Maker)
Metodología no definida (Prueba y error)

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.1.- Plataforma de desarrollo

vs

Arduino Raspberry Pi

vs

Raspberry Pi FPGA

= Microcontrolador

Arduino

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

Producto Clasificación Nivel de Herramientas


Abstracción

Single Board Computer Software Sistema operativo


(contiene un SoC) y lenguaje de
programación.
Raspberry Pi 3
(Linux, Python)

Microcontrolador Firmware Lenguaje de


(contiene un MCU de 8-bits) programación
(Assembly, C)
Arduino Mega 2560

PLD Hardware Lenguaje de


(contiene un FPGA) descripción
de hardware
(Verilog, VHDL)
DE0 - Nano

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.1.- Plataforma de desarrollo

Ecosistema
de desarrollo

Plataforma
de desarrollo

Plataforma
de hardware

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.1.- Plataforma de desarrollo

Plataforma de hardware

Programador/
Software Depurador

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.2.- Herramientas de software

Planificación EDA

CAD Programación

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.3.- Herramientas para planificación

Sistema Lógica Interfaz

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.4.- Diseño asistido por computadora (CAD)

Dibujo 2D Dibujo 3D

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.5.- Diseño electrónico automatizado (EDA)

Circuito esquemático Ruteo de PCB

Simulación Visualización 3D

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.6.- Entorno integrado de desarrollo (IDE)

IDE IDE + Toolchain

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.7.- Editor de texto

Autocompletar

Resaltar

Archivo(s) fuente

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.8.- Cadena de herramientas de programación/síntesis (Toolchain)

Portabilidad
Estándares
Mantenimiento

Modularidad Optimización
Trabajo en equipo

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.8.- Cadena de herramientas de programación/síntesis (Toolchain)

Idea

Programa
implementado

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.9.- Lenguaje de programación

Suma OK
Transmite ¿Dónde?

Suma 1000110
Transmite 1010011

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.9.- Lenguaje de programación

Java
Python
(Intérprete)

C, Pascal, Fortran
Tiempo de (Palabras) Tiempo de
ejecución desarrollo

Macro Assembler
(Mnemónicos)

Direct Assembler
(Binario o Hexadecimal)

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.9.- Lenguaje de programación

- Diseñado para ser simple y compacto. - Diseñado para proporcionar ALTA confiabilidad.

- Requiere que el programador sea cuidadoso. - Limita al programador para evitar errores.

- No es fácilmente escalable a sistemas muy complejos. - Eficiente para sistemas de alta complejidad.

- Empleado en diferentes campos de la industria. - Empleado en aplicaciones militares y espaciales.

- Herramientas libres disponibles (GCC). - Herramientas libres disponibles (GNAT).

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.10.- Pre-Procesador

Verificación de la sintaxis

for
else
if
while

+- x / << >= && ||

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.10.- Pre-Procesador

Evaluación de directivas

#include

stdio.h
stdint.h Pre-Procesador
math.h

archivo.c archivo.i

Contiene Evalúa las directivas No contiene


directivas en el archivo fuente y directivas
en las cabeceras.

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.11.- Compilador

Alto Nivel Bajo Nivel

Toma dos piezas de pan de la


alacena.
Toma queso y jamón de la nevera.
Pon una pieza de pan como base.
Prepara un sandwich mixto. Pon queso sobre el pan.
Pon jamón sobre el queso.
Pon la otra pieza de pan sobre el
jamón.
Pon todo el grupo en la waflera.

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.11.- Compilador

C Assembly

movlw 3
movwf x
x = 3; movwf z
movf y,w
z = x + y; addwf z
Estándar Depende del
hardware
if(z > 5) movlw 5
z = 5 subwf w
btfss status, r
goto CONTINUA
movlw 5
movwf z

CONTINUA:

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.11.- Compilador

Compilador
(Compiler)

Compilador cruzado
(Cross compiler)

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.12.- Ensamblador

movlw 3 11000000000011
movwf x 00000010100001

movwf z 00000010100011
movf y,w 00100000100010
addwf z 00011110100011

Archivos ensamblador Objetos reubicables

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.13.- Enlazador (Linker)

Objetos reubicables:

file1.o

file2.o

file3.o

file4.o

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.13.- Enlazador (Linker)

Objetos reubicables Programa ejecutable


ó
Archivo binario

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.14.- Lenguaje de descripción de hardware (HDL)

a=sck (t−1 )
b=sck (t−2 )
sckfall=a . b

Descripción Diseño Implementación

assign sck_fall = ~a & b;

always@(posedge clk)
begin
a <= sck;
b <= a;
end

Descripción Diseño Implementación


(HDL) (RTL) (CPLD / FPGA)

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.14.- Lenguaje de descripción de hardware (HDL)

Lenguajes de descripción de hardware (HDL) estándar.

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.15.- Sintetizador inicial

input a, b,c;
output f; 

assign f = (~a & ~b & c) |
           (a & ~b & ~c) |
           (a & ~b & c)  |
           (a & b & ~c);

HDL RTL

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.16.- Sintetizador lógico

Traducción literal Versión optimizada

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.17.- Sintetizador de disposición

Lógica (RTL) Ubicación e interconexiones


en hardware (Netlist)

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.18.- Generador de secuencia de bits

11000000000011
00000010100001
00000010100011
00100000100010
00011110100011
...

Netlist Secuencia de bits

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.19.- Simulador

Simulación en el tiempo

Simulación funcional

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.20.- Programador

Configuración
Secuencia
Archivo de bits
binario Sofware Hardware (bitstream)
Programador Programador

MCU
objetivo

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.21.- Depurador (Debugger)

Encontrar JTAG
errores

Monitoreo

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.21.- Depurador (Debugger)

Microprocesador
(Sistema Operativo)

libreria.o

hola.c hola.i hola.s hola.o hola


Editor de Pre
Compilador Ensamblador Enlazador Depurador
texto Procesador

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.21.- Depurador (Debugger)

Microcontrolador

libreria.o configuración

hola.c hola.i hola.asm hola.o hola.hex ...101100...


Editor de Pre
Compilador Ensamblador Enlazador Programador
texto Procesador

Depurador

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.21.- Depurador (Debugger)

PLD

Editor de Pre Sintetizador


texto Procesador Inicial

Simulador Sintetizador Sintetizador de


(funcional) Lógico Disposición

...101100...
Simulador Generador de
Programador
(Tiempo) secuencia de bits

Depurador

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.22.- Plataforma de hardware

Dispositivos

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.22.- Plataforma de hardware

Tarjetas de desarrollo

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

1.- CONCEPTOS Y DEFINICIONES

1.22.- Plataforma de hardware

Beaglebone
Black

Raspberry Pi 3

Placa computadora (SBC) Sistema operativo

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

2.- SELECCIÓN DE LA PLATAFORMA DE DESARROLLO

2.1.- CAD y EDA

Producción Investigación y Desarrollo

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

2.- SELECCIÓN DE LA PLATAFORMA DE DESARROLLO

2.2.- IDE y Toolchain

Interfaz amigable Tendencia Costo asequible

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

2.- SELECCIÓN DE LA PLATAFORMA DE DESARROLLO

2.3.- Plataforma de hardware

Memoria Poder de procesamiento


(Programa y Datos) (Bus de datos y ciclo de instrucción)

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

2.- SELECCIÓN DE LA PLATAFORMA DE DESARROLLO

2.3.- Plataforma de hardware

Cantidad de pines Distribución de pines

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

3.- REFERENCIAS

[1] Randal Bryant & David O’Hallaron, Computer Systems: A Programmer’s


Perspective, Second Edition, Prentice Hall, 2011.

[2] David Patterson & John Hennessy, Computer Organization and Design:
The Hardware/Software Interface, Fourth Edition, Morgan Kauffman, 2012.

[3] Steve Heath, Embedded Systems Design, Second Edition, Newnes,


2003.

[4] Michael Barr & Anthony Massa, Programming Embedded Systems with
C and GNU Development Tools, Second Edition, O’Reilly, 2006.

[5] Stephen Brown & Zvonko Vranesic, Fundamentals of Digital Logic with
Verilog Design, First Edition, McGraw Hill, 2003

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro


Introducción al Desarrollo de Sistemas Embebidos

4.- PREGUNTAS

Clase 2 – Herramientas de desarrollo Miguel A. Torres Lázaro

Potrebbero piacerti anche