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