Download DSP/BIOS

Document related concepts
no text concepts found
Transcript
Familia TMS320C6000
de Texas Instruments:
CCS y DSP/BIOS
Septiembre 2016
Code Composer Studio (CCS)
¿Qué es CCS?: es un entorno integrado de desarrollo que
proporciona las siguientes posibilidades:
•
Herramientas de edición, debugger, gestión de proyectos
•
Compilador C/C++, optimizador de ensamblador y enlazador
•
Simulador
•
Sistema operativo en tiempo real DSP/BIOS
•
Intercambio de datos en tiempo real entre el host y el
sistema RTDXTM
•
Análisis en tiempo real y visualización de datos
Flujo de diseño
Creación de un proyecto
Configuración DSP/BIOS
Edición del código fuente
Compilación + enlazado
PC
DSK6713
Simulación
Carga del programa
(JTAG)
Ejecución en
tarjeta
Elementos del proyecto
Herramienta de
configuración
xxx.cdb
Editor
.c
.h
.asm
xxxcfg.cmd
xxxcfg.s6x
xxxcfg.h6x
Proyecto
DSP/BIOS API
CSL
BSL
Compilador (compiler)
Ensamblador (Assembler)
Enlazador (Linker)
Ejecutable
.out
CSL
Chip Support Library
•
•
Se trata de una librería que proporciona una API con
funciones en C para configurar y controlar los periféricos
internos al DSP
Constituye una capa de abstracción de los registros que
controlan los periféricos
•
Reduce el tiempo de desarrollo
•
Aumenta la portabilidad del código
Ejemplo: Multi-channel buffered serial port (McBSP)
BSL
Board Support Library
•
•
Se trata de una librería que proporciona una API con
funciones en C para configurar y controlar los periféricos
y dispositivos externos al DSP que se encuentran en la
tarjeta
Constituye una capa de abstracción de los registros que
controlan los dispositivos externos y de los periféricos
del DSP utilizados para la interconexión con ellos
•
Reduce el tiempo de desarrollo
•
Depende del diseño concreto de la tarjeta
Ejemplo: Códec de audio
DSP/BIOS
Es un sistema operativo sencillo en tiempo real que
proporciona:
•
•
•
•
Interfaz gráfica para la configuración estática del sistema
en tiempo de diseño (por ejemplo, los periféricos)
Planificador en tiempo real (tareas con prioridades)
Herramientas de análisis en tiempo real (RTA)
Intercambio de datos en tiempo real con el PC (RTDX)
Nota:
DSP/BIOS no es un sistema operativo complejo como los utilizados
en ordenadores, por lo que carece de algunas funcionalidades como
la gestión de sistemas de ficheros o el control de los fallos de
segmentación
DSP/BIOS
Permite configurar el sistema:
• Global settings
Permite definir objetos:
•Interrupciones hardware (HWI)
•Interrupciones software (SWI)
•Tareas (TSK, IDL)
•Timing (PRD, CLK)
•Logging y estadísticas (LOG, STS, TRC)
•Datos e I/O (RTDX, SIO, PIP, HST)
•Sincronización y comunicación (SEM, MBX, LCK)
Configuración de periféricos:
• Chip Support library
DSP/BIOS: Planificador
DSP/BIOS: Planificador en tiempo real
Ejemplo:
•
main ()
Cada vez que se llama a ISR1/2, el
algoritmo se ejecuta hasta el final
¿Es posible que se ejecute en tiempo
real?
•
Los algoritmos se ejecutan a
frecuencias diferentes
{
for (;;);
}
ISR1()
{
algorithm1();
}
ISR2()
{
algorithm2();
•
Solapan en su ejecución
•
El tiempo que tarda cada algoritmo no
es determinista
}
DSP/BIOS: Planificador
Posibilidad 1: algoritmos sincronizados
•
Una única ISR que procese ambos algoritmos (siempre y
cuando la potencia de procesamiento lo permita)
Posibilidad 2: algoritmos NO sincronizados
•
•
¿Cuál de los dos tiene más prioridad?
¿Es posible detener al menos prioritario?
CPU procesando
Algoritmo 1
MISSED!
Algoritmo 1
Algoritmo 2
CPU procesando Algoritmo 2
Supongamos que 1 tiene más prioridad y que 2 puede ser
suspendido
DSP/BIOS: Planificador
Solución 1: descomposición de los algoritmos
•
Supongamos que el algoritmo 2 puede descomponerse en
varias sub-funciones
algorithm2 ();
function1();
function2();
function3();
•
Cuando la CPU no ejecuta el algoritmo 1, se puede dedicar a
ejecutar las sub-funciones del algoritmo 2
Algoritmo 1
Algoritmo 2
Función 1
Función 2
Función 3
Ventaja: simple de hacer
Inconvenientes:
•
•
Difícil de escribir (timing es crítico)
Difícil de modificar (¿y si lo modificamos o añadimos algo?)
DSP/BIOS: Planificador
Solución 2: utilizar un sistema operativo
•
•
•
Fácil de escribir (algoritmos se codifican de forma
independiente)
Fácil de mantener o cambiar (sistema operativo gestiona la
planificación de tareas)
Menor tiempo de desarrollo
Elección del sistema operativo
•
•
Depende del tipo de procesador y del tipo de DSP
Linux, Windows, … (plataformas ARM, PowerPC)
DSP/BIOS
•
•
•
Sistema operativo en tiempo real con gestión de prioridades
(libera un recurso si una tarea de mayor prioridad lo reclama)
Múltiples tipos de tareas
Pequeña sobrecarga de CPU
DSP/BIOS: tareas
HWI
Interrupción hardware
Prioridad
SWI
Interrupción software
TSK
Tarea
IDL
Tarea en 2º plano
Máxima prioridad
Desencadenadas por el hardware
Una ISR (rutina) por interrupción
14 niveles de prioridad SWI
Varias SWIs en cada nivel
15 niveles de prioridad TSK
Varias TSKs en cada nivel
Mínima prioridad
Varias funciones IDL
Suelen ser bucles infinitos
DSP/BIOS: tareas
Consideraciones generales sobre las tareas
•
•
•
•
•
No se deben usar bucles infinitos ni funciones que puedan
bloquear dentro de la ISR de una interrupción HWI o SWI
Las tareas TSK pueden suspender su ejecución a la espera de
un recurso disponible (a diferencia de las SWI)
La tareas TSK tienen su propia pila
Las tareas SWI y TSK se diferencian en cuanto a sus
posibilidades de sincronización y comunicación
Los objetos CLK y PRD no son propiamente tareas
•
CLK son tareas HWI que responden a una interrupción
del timer del DSP
•
PRD son tareas SWI periódicas que se activan por el
timer o cualquier otro evento
Semáforos
Funcionamiento de los semáforos:
•
•
•
•
•
•
•
Regulan el acceso a un recurso compartido evitando las
condiciones de carrera
Normalmente se trata de variables que pueden tomar dos
valores: ocupado o libre (Objetos SEM en DSP/BIOS)
La función SEM_pend intenta reservar el recurso
comprobando y modificando el semáforo
Si el semáforo ya está ocupado la función bloquea
Si el semáforo estaba libre pasa a ocupado y continúa la
ejecución
La operación de comprobación y modificación del semáforo es
atómica, es decir, no puede interrumpirse cuando está en
curso
La función SEM_post desbloquea el semáforo cuando se ha
terminado de utilizar el recurso
Sincronización de tareas
HWI/SWI
inicio
TSK
inicio
SEM_post
SEM_pend
fin
La interrupción no puede
permanecer pendiente. Se
ejecuta y retorna
STOP
fin
La tarea sólo retorna cuando
ya no se le necesita. Si no,
sigue el bucle
DSP/BIOS: ejemplo
post
post
return
return
swi1
swi2
post return
sem2
post return
swi2
HWI
post post
sem1 sem2
return
return
SWI 2
return
SWI 1
pend
sem2
pend
sem2
pend
sem2
interrupt
TSK 2
pend
sem1
TSK 1
interrupt
interrupt
main()
return
IDL
interrupt
tiempo
pend
sem1
CCS
Ejecución
paso a paso
Compilación
Ficheros del
proyecto
Ejecución/Pa
rada
Estado
CCS
Creación de un proyecto
Configuración
base para
DSP/BIOS
Nota: Todos los archivos deben estar en la misma carpeta
CCS
Configuración
visual de
DSP/BIOS
CCS
Editor
Nota: Se aconseja trabajar siempre con el editor
de CCS
Compilación y ejecución
•
Usar el botón “Build All”
•
•
Cargar el programa en la tarjeta (File -> Load Program)
•
•
•
Antes de cargar, la tarjeta debe estar conectada, si no,
establecer conexión con Debug -> Connect
El ejecutable (.out) estará en el subdirectorio “debug”
Situar la ejecución al comienzo
•
•
Leer detenidamente los mensajes de error durante la
compilación si los hay
Debug -> Go Main
Ejecutar
•
•
De forma contínua (Debug -> Run)
Paso a paso (Debug -> Step [into, over])
Depuración básica
•
Breakpoints
•
•
•
Watch Window
•
•
Permiten detener el programa cuando se alcance un
determinado punto del código
Se activan/desactivan haciendo doble click en el margen
izquierdo del editor, junto a la instrucción donde se
desea establecer el breakpoint
Permite la visualización de las variables activas dentro el
contexto
Herramienta Graph
•
•
Permite representar el contenido de un buffer
Muy útil para visualizar el procesamiento de señales