Red de conocimiento informático - Material del sitio web - ¿Cuál es el papel del compilador de c en la programación DSP TMS320F2812? ¿Cuál es la función del archivo cmd utilizado en el vinculador?

¿Cuál es el papel del compilador de c en la programación DSP TMS320F2812? ¿Cuál es la función del archivo cmd utilizado en el vinculador?

Los chips DSP se han utilizado ampliamente debido a sus ventajas incomparables, como una precisión, rendimiento y velocidad de computación extremadamente altos. El TMS320F2812 es el mejor chip producido por TI hasta ahora en el campo del control digital. En el proceso de desarrollo de un chip DSP, el vinculador debe asignar el código y los datos generados por el compilador al espacio de almacenamiento apropiado. Por lo general, el archivo de comando del vinculador .cmd lo escribe el propio usuario y no está escrito correctamente. El desarrollo de simulación es imposible. Aunque TI lo introdujo en la "Guía del usuario de optimización del compilador C/C TMS320C28x 6" y en la "Guía del usuario de herramientas de lenguaje ensamblador TMS320C28x 6", el contenido está relativamente disperso y requiere que los lectores comprendan todo el sistema de desarrollo. Comprensión integral, que es más difícil para los principiantes. A continuación se toma el chip TMS320F2812 como ejemplo y se explica con ejemplos específicos de simulación y depuración para que todos puedan comprender de forma rápida y precisa el método de asignación de archivos .cmd.

1 Configuración del espacio de almacenamiento

La memoria DSP del TMS320F2812 se divide en tres espacios seleccionados de forma independiente: espacio de programa, espacio de datos y espacio de E/S. La memoria del programa almacena los programas. Los coeficientes (constantes) utilizados en las instrucciones y la ejecución pueden estar compuestos por RAM, ROM o EPROM dentro o fuera del chip. La memoria de datos almacena los datos generados durante la ejecución de la instrucción y puede estar dentro o fuera del chip.

se compone de RAM y ROM; la memoria de E/S almacena datos relacionados con la interfaz periférica de la imagen y también se puede utilizar como espacio de almacenamiento de datos adicional. La Tabla 1 es la distribución del espacio de almacenamiento de TMS320F2812.

Método de asignación de archivos 2CMD

Los archivos objeto creados por el nuevo ensamblador y enlazador de TI utilizan un COFF (Common Object File Format), que es más propicio para la programación orientada a módulos y proporciona una potente y método de programación flexible para gestionar segmentos de código y memoria del sistema de destino. Los usuarios pueden colocar la información del vínculo en un archivo escribiendo un archivo de comando de vínculo (archivo .cmd) para poder llamarlo cuando se use la misma información del vínculo varias veces. Utilice dos pseudoinstrucciones muy útiles MEMORIA y SECCIONES en el archivo de comando para especificar la estructura de la memoria y la asignación de direcciones en aplicaciones reales. La memoria se utiliza para especificar la estructura de la memoria de destino. En Memoria, puede configurar el espacio de direcciones a través de la opción PÁGINA. El vinculador trata cada página como un espacio de almacenamiento independiente. Normalmente, PÁGINA0 representa la memoria de programa, que se usa para almacenar programas, y PÁGINA1 representa la memoria de datos, que se usa para almacenar datos. El código reubicable y los bloques de datos generados por el compilador se denominan "SECCIONES" (las SECCIONES se utilizan para controlar la composición y asignación de direcciones de las secciones). Para diferentes configuraciones del sistema, los métodos de asignación de "SECCIÓN" también son diferentes. El vinculador controla la asignación de direcciones a través de "SECCIONES", por lo que la asignación de "SECCIONES" se convierte en una parte importante de la configuración del archivo .cmd. La siguiente es una introducción detallada a la definición y asignación de "SECCIONES".

(1)

"SECCIONES" inicializadas (incluidas tablas de datos y códigos ejecutables)

.text Incluye todos los códigos ejecutables y constantes, debe colocarse en la página del programa;

.cinit incluye variables inicializadas y tablas de constantes, y debe colocarse en la página del programa

.pinit incluye variables y constantes inicializadas por el constructor global (C); las tablas deben colocarse en la página del programa;

.const incluye cadenas, declaraciones y variables globales y estáticas inicializadas explícitamente, y deben colocarse en la página de datos con una dirección baja

.econst se usa cuando se usa el modo de memoria grande, incluidas cadenas, declaraciones y variables globales y variables estáticas inicializadas explícitamente, y se puede colocar en cualquier lugar de la página de datos.

.switch Incluye la tabla configurada para la declaración de conversión, que se puede colocar en la página del programa o en la página de datos en una dirección baja.

(2) "SECCIONES" no inicializadas (espacio reservado en la memoria para variables creadas y almacenadas durante la ejecución del programa)

.bss Está reservado para variables globales y espacio para variables estáticas. Cuando el programa comienza a ejecutarse, la ruta de importación de C copia los datos de la sección .cinit y los almacena en la sección .bss, lo que requiere que se coloquen en una página de datos de baja dirección

.ebss; se accede lejos (lejos) (solo C) y se usa en modo de almacenamiento grande, que reserva espacio para variables globales y variables estáticas. Cuando el programa comienza a ejecutarse, la ruta de importación de C copia los datos de la sección .cinit y los almacena en la sección .ebss, que se puede colocar en cualquier lugar de la página de datos

.stack reserva espacio para el; Pila del sistema C, que parte de la memoria se utiliza para pasar declaraciones a funciones y reservar espacio para variables locales, y debe colocarse en páginas de datos de baja dirección

. La memoria dinámica del sistema asigna espacio reservado; . Este espacio se utiliza para la función malloc. Si no se utiliza la función malloc, el tamaño de este segmento es 0 y debe colocarse en la página de datos en una dirección baja

.esystem; Espacio reservado de asignación de memoria dinámica, este espacio se usa para la función malloc externa, si no se usa la función malloc externa, el tamaño de este segmento es 0 y se puede colocar en cualquier lugar de la página de datos.

3 Dé un ejemplo del método de asignación de archivos .cmd

La siguiente es la asignación de archivos .cmd al simular y depurar la interfaz de comunicación en serie SCI, lo cual se ha logrado bien en la aplicación de depuración de simulación TMS320F2812.

MEMORIA

{PAGE0:

/*ProgramMemory*/

RAMH0: origen=0x3F8000, longitud=0x001000

RAML0: origen=0x008000, longitud=0x001000

RAML1: origen=0x009000, longitud=0x001000

ROM:

origen=0x3FF000, longitud= 0x000FC0

RESET: origen="0x3FFFC0", longitud=0x000002M

VECTORES: origen=0x3FFFC2, longitud=0x00003EM

PÁGINA1: /*MemoriaDeDatos*/

RAMM0: origen=0x000000, longitud=0x000400

RAMM1: origen=0x000400, longitud=0x000400

RAMH0: origen=0x3F9000, longitud=0x001000

,,,

}

SECCIONES

{/*Asignar áreas de programa:*/

.cinit

:gt;RAMH0

PÁGINA=0

.pinit

:gt;RAMH0

PÁGINA=0

.text

: gt; RAMH0

PÁGINA=0

.reset

: gt, PÁGINA= 0, TYPE=DSECT

Vectores: gt; VECTORES, PÁGINA=0, TYPE=DSEC

/*Allocatesecciones de datos no inicializadas:*/

.stack

:gt;RAMM0

PAGE=1

.ebss

:gt;RAMH0

PAGE=1

.esysmem: gt; RAMH0

PAGE=1

.econst: gt; RAMM1

PAGE=1

.switch: gt; RAMM1

PAGE=1

,,,

}

Para aprovechar al máximo 18k×16 bits SARAM En este ejemplo, el SARAM H0 de 8k × 16 bits en la dirección alta se divide en dos partes. Una parte se usa para almacenar el programa y se coloca en la PÁGINA0, y la otra parte se usa para almacenar los datos y. se coloca en la PÁGINA1 para lograr una asignación razonable. El proceso de depuración de simulación real. La asignación de cuadros periféricos frame0, frame1, frame2, etc. no se presentará en detalle debido a problemas de espacio.

4 Verifique la asignación y el uso de segmentos

El archivo cmd incluye una variedad de opciones de vinculación, cada opción representa un significado diferente. Entre ellos, use la opción -m para crear un archivo de mapeo de asignación de vinculador (memoria) con la extensión .map. La sintaxis es: -m nombre de archivo (nombre de archivo).

El archivo de mapa del vinculador describe el siguiente contenido:

El posicionamiento de los segmentos de entrada y salida de la estructura de memoria y la dirección del símbolo externo después de la reubicación

La asignación de cada uno El segmento se puede ver a través del archivo de mapa, incluida la dirección inicial del segmento, el número de bytes utilizados, etc., combinado con el uso del archivo cmd, se puede determinar el uso de cada segmento, garantizando así el funcionamiento normal de. el programa y el uso mínimo de espacio.

5 Enlazador visual VisualLinker

El entorno de desarrollo de software DSP CCS producido por TI también proporciona una herramienta para generar visualmente archivos de configuración de memoria: el vinculador visual VisualLinker. Si el programa contenía originalmente un archivo de comando del vinculador (archivo .cmd), la configuración de memoria en el archivo cmd original aún se usará al crear un archivo de vínculo visual. Si el lector desea modificar la configuración de la memoria, haga doble clic en el archivo .rcp para abrir la interfaz gráfica del vinculador visual en CCS, ajuste el tamaño de cada módulo de memoria hasta que sea adecuado, y luego solo necesitará volver a compilar, y el El programa puede generar un nuevo archivo de salida y repetir los pasos anteriores hasta que aparezcan resultados satisfactorios.