Download GITT: Sistemas Electrónicos para Procesamiento de Señales

Document related concepts
no text concepts found
Transcript
GITT: Sistemas Electrónicos para
Procesamiento de Señales
2016
PRACTICA 1:
INTRODUCCION A CODE COMPOSER
STUDIO Y DSP/BIOS
Objetivos:
El objetivo principal de esta práctica es familiarizarse con la tarjeta DSK6713 de
Texas Instruments, la cual utilizamos a los largo de todas la sesiones prácticas, y con el
sistema operativo (herramienta de configuración) DSP/BIOS. Para ello comenzaremos
por configurar todos los pasos necesarios para crear un proyecto en la herramienta de
programación proporcionada por el fabricante denominada Code Composer Studio.
Material:


Máquina virtual de Windows XP con la versión del Code Composer Studio
para la DSK6713.
Tarjeta DSK6713.
A) Creación, configuración y compilación de un proyecto
Lo primero que vamos hacer es crea un nuevo proyecto y configurar el
DSP/BIOS
Abrir un nuevo proyecto:
Desde la opción Project->New se despliega una ventana (Figura 1) donde
introducimos el nombre del proyecto (que automáticamente se añade en la línea
Location creando una carpeta con ese nombre) y donde especificamos el dispositivo
objetivo (Target), que en nuestro caso debe ser C67XX.
Figura 1. Ventana de creación de proyecto
Una vez creado el proyecto, en la parte izquierda del entorno CCS (Figura 2)
aparece el proyecto (ej1.prj) con una serie de carpetas que se irán llenando a medida que
avancemos en el proyecto. Por ejemplo, la carpeta Source contendrá los fuentes en C y
la carpeta Include los .h. Es muy importante tener en cuenta que sólo se compila lo que
esté presente en estas carpetas. Algunos archivos hay que agregarlos manualmente
1
GITT: Sistemas Electrónicos para
Procesamiento de Señales
2016
mientras que otros se añaden automáticamente. Antes de compilar, es preciso
comprobar que todos los archivos necesarios se encuentran presentes.
Figura 2. Code Composer Studio tras crear un proyecto.
Utilización de DSP/BIOS:
Para utilizar DSP/BIOS es necesario llamar a la ventana de configuración de
DSP/BIOS, mediante File->New->DSP/BIOS Configuration, que da lugar a la ventana
de la Figura 3.
Figura 3. Configuración DSP/BIOS.
Trabajando con el sistema DSK6713 seleccionaremos la opción dsk6713.cdb, lo
que da lugar a la ventana de la Figura 4.
2
GITT: Sistemas Electrónicos para
Procesamiento de Señales
2016
Figura 4. Ventana de configuración de DSP/BIOS.
Lo primero que hay que hacer es salvar el archivo de configuración con la
opción File->Save As. Se recomienda usar siempre la opción Save as y no la opción
Save, a fin de salvar el archivo en la carpeta de proyecto y garantizar que todos nuestros
archivos quedan en esa carpeta. Le damos un nombre, como ejemplo1.cdb. Finalmente,
añadimos el archivo al proyecto con la opción Project -> Add Files to Project (Figura
5). Para ello, en tipo seleccionamos el tipo de archivo (.cdb).
Figura 5. Añadir archivo de configuración DSP/BIOS al proyecto.
3
GITT: Sistemas Electrónicos para
Procesamiento de Señales
2016
Al añadir el citado archivo se observa que ejemplo1.cdb aparece en la carpeta
DSP/BIOS Config, pero se han añadido otros archivos en la carpeta Generated Files,
necesarios para el linker.
Figura 6. Herramienta de configuración de DSP/BIOS.
Si desplegamos el archivo de configuración de DSP/BIOS, vemos que en ella se
pueden definir varias pestañas:
 System: permite configurar diversas cuestiones del sistema.
 Instrumentation: permite definir objetos de instrumentación. Para agregar estos
objetos, seleccionar “LOG – Event Log Manager” con el click derecho y luego
“Insert LOG”. En esta práctica definimos los objetos LOG0 y LOG1, que sirven
para imprimir mensajes por pantalla.
 Scheduling: aquí podemos definir diversas tareas planificables. Para esta práctica
definiremos una tarea periódica PRD0 en ‘Scheduling  PRD’ y una tarea IDL en
‘Scheduling  PRD’ que será IDL0.
 Synchronization: permite definir objetos de sincronización de tareas, tales como
semáforos, colas de mensajes, etc.
 Input/Output: sirve para definir objetos de comunicación con el host.
 CSL: Chip Support Library, herramienta gráfica de configuración de los periféricos
CSL.lib.
Una vez creados estos elementos, se procede a configurarlos. Haciendo click con el
botón derecho del ratón y eligiendo la opción propiedades se puede definir:
 En el caso de la tarea periódica (PRD0) su periodicidad en ticks (que por defecto es
1tick = 1 ms) y la función en código C asociada, que siempre deberá llevar un guión
bajo delante (por ejemplo, si la función asociada en C se denomina parpadea, aquí
habrá que escribir _parpadea). Destacar que las funciones que no lleven el guión
bajo son consideradas por el compilador como funciones en lenguaje ensamblador.
4
GITT: Sistemas Electrónicos para
Procesamiento de Señales

2016
En el caso de la tarea idle tan sólo es necesario definir la función en C asociada
(_idle0).
Observación: no es necesario renombrar el archivo .c con un guion bajo adelante.
Finamente, escribimos el archivo C. File->New->Source File:
void parpadea(void);
void idle0(void);
#include "ejemplo1cfg.h"
#include "dsk6713_led.h"
#include "dsk6713_dip.h"
#define APAGADO 0
#define ENCENDIDO 1
int estado=0; /* Variable global que guarda el estado del LED */
void main(){
}
void idle0(){
LOG_printf(&LOG0,"Aplicación ejecutándose");
}
void parpadea(){
switch(estado){
case APAGADO:
LOG_printf(&LOG1,"LED ON");
DSK6713_LED_on(2);
estado=ENCENDIDO;
break;
case ENCENDIDO:
LOG_printf(&LOG1,"LED OFF");
DSK6713_LED_off(2);
estado=APAGADO;
break;
}
}
Este archivo se salva con la opción File-> Save as (para garantizar que lo
guardamos en la carpeta de proyecto) con un nombre_cualquiera.c y, a continuación, lo
añadimos a la carpeta de proyecto (Project->Add Files to Project)
Observaciones al código:
1. El archivo “ejemplo1cfg.h” los genera el archivo de configuración de DSP/BIOS
y es necesario incluirlo. Su nombre es el mismo que se le ha dado al .cdb
seguido de cfg.h.
2. Nótese que el main se encuentra vacío. Tras ejecutarse el main, el scheduler
toma el mando y ejecuta las diferentes tareas definidas de forma pre-emptiva.
3. En el main sólo hay que incluir aquello que se desee que se ejecute una única
vez (configuraciones, inicialización de tablas o valores, etc.).
5
GITT: Sistemas Electrónicos para
Procesamiento de Señales
2016
4. La tarea periódica sólo se ejecutará cada vez que se cumpla la condición
definida por los ticks.
5. Durante los tiempos muertos, se ejecuta la tarea idle, que lo que hace es
imprimir un mensaje por pantalla.
6. Para manejar los elementos hardware incluido en la placa (board) del DSK6713
se utilizarán funciones de la Board Support Library (BSL), como por ejemplo
DSK6713_LED_on(2) o DSK6713_LED_off(2), que encienden o apagan el
LED definido como 2 (con un argumento diferente actuarían sobre los otros
LEDS de usuario).
Opciones de compilación:
Para que el programa se pueda compilar y linkar correctamente, el preciso
realizar los siguientes pasos previos:
Figura 7. Build options: compiler.

Project-> Build options, pestaña Compiler, picar en Preprocessor (Figura 7).
o Añadir en Include Search Path C:\CCStudio_v3.1\C6000\dsk6713\include
o Modificar Pre-Define Symbol a “_DEBUG;CHIP_6713” (sin las comillas)

Project-> Build options, pestaña Linker, picar en Basic (Figura 8)
o Añadir en Include libraries:
C:\CCStudio_v3.1\C6000\dsk6713\lib\dsk6713bsl.lib
6
GITT: Sistemas Electrónicos para
Procesamiento de Señales
2016
Figura 8. Build options: linker.
Visualización de resultados:
Una vez compilado y linkado el programa correctamente y sin errores, se
procede a volcarlo sobre el sistema DSK6713 con la opción:
File->Load Program, y el ejecutable está en la carpeta Debug con la extensión .out
(si previamente no hay conexión con el DSK es necesario hacer Debug->Connect)
Con la opción Debug->Go main la ejecución del programa va al main. A partir
de aquí es posible ejecutar el programa Run, detenerlo, señalar breakpoints, etc. Picando
con el botón derecho del ratón sobre una línea de código (Figura 9) se pueden señalar
breakpoints (Toggle Software Breakpoint) con lo que la línea queda marcada con un
círculo rojo a la izquierda, o visualizar el valor de una variable (Add to Watch
Window).
Es importante usar las opciones de depuración de código para saber por qué
nuestro programa no funciona correctamente. Con los breakpoints podemos comprobar
si nuestro programa entra en determinadas funciones y la visualización de los valores de
variables permite determinar si se actualizan adecuadamente.
7
GITT: Sistemas Electrónicos para
Procesamiento de Señales
2016
Figura 9. Depuración del código.
En el caso particular de esta práctica, debería observarse parpadear el LED 2 (le
frecuencia dependerá del valor introducido en los ticks).
Para visualizar los mensajes por pantalla, es necesario usar la opción del menú
DSP/BIOS->Message Log. Entonces se despliega una ventana donde se puede elegir
visualizar el objeto LOG0 o el LOG1.
Funciones de la BSL:
La Board Support Library permite la gestión de los LEDs, DIP Switches, el Codec
de audio y la memoria Flash que incorpora la tarjeta.

Funciones para el manejo de los LEDs:
o DSK6713_LED_on(numero_LED)
o DSK6713_LED_off(numero_LED)
o DSK6713_LED_toggle(numero_LED)

Funciones para lectura de los DIP Switches:
o DSK6713_DIP_get(numero_interruptor)
- ACTIVIDAD A
1. Modificar el programa para que:
a) El LED2 parpadee a velocidad doble y mitad.
b) Los 3 LEDs parpadeen a la vez , pero a diferentes velocidades.
c) Asignar el LED que parpadea a los valores de los interruptores.
8
GITT: Sistemas Electrónicos para
Procesamiento de Señales
2016
Obs.: DSK6713_DIP_get(numero_interruptor)
Valor= DSK6713_DIP_get(1);
2. Modificar el programa para, en lugar de usar una tarea periódica, utilizar el Timer 1
y una interrupción HWI.
Como ya no se utilizará la tarea periódica, se debe borrar el objeto PRD0 que se
había configurado en el apartado anterior.
Procedimiento:
• Seleccionar la ventana de configuración de DSP/BIOS, Scheduling, HWI y
seleccionar HWI_INT15
• Programar el timer y la función que manejará la interrupción como se muestra
en la figura 10. Destacar que la selección “Use Dispatcher” permite que el
compilador guarde automáticamente todos los registros utilizados en la
interrupción.
Figura 10. Configuración de HWI_INT15.
Para la configuración del Timer1, seleccionar CSL en la pantalla de
configuración de DSP/BIOS, picando sobre TIMER, como se muestra en la figura 11
9
GITT: Sistemas Electrónicos para
Procesamiento de Señales
2016
Figura 11. Configuración de los timers.
•
•
•
Insertamos una nueva configuración de Timer (en la parte derecha del
gráfico aparecen los datos a introducir)
Seleccionamos Timer_Device1
Habilitamos el dispositivo con el manejador hTimer1 y pre-inicializamos
con la configuración anterior, como se muestra en la figura 12.
Figura 12. Configuración del Timer1
Por último, habría que añadir en el main la línea de código:
IRQ_enable(TIMER_getEventId(hTimer1));
10