Вы находитесь на странице: 1из 7

INSTITUTO POLITÉCNICO NACIONAL

UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA


CAMPUS ZACATECAS

PRACTICAS DE LABORATORIO DE PROCESADOR DIGITAL DE SEÑALES.


PRACTICA 2. MANEJO DE MEMORIA

OBJETIVO: Entender y manejar la arquitectura de memoria del DSK C6713

DESCRIPCIÓN:

En esta practica el alumno comprenderá la arquitectura de memorias dentro del DSK C6713, interna
y externa. Además del manejo de datos y cómo es que el compilador maneja éstos en las diferentes
secciones que pueden contener.

MATERIAL:

• Tarjeta Spectrum Digital Developer Starter Kits DSK’s TMS320C6713


• Software de desarrollo 6713 DSK CCStudio v3.x

INTRODUCCIÓN:

La memoria interna del DSP está constituida por dos partes, Nivel 1 y Nivel 2.

El Nivel 1 consiste en dos memorias caché de 4KB, una para programa y la otra para datos. Como
estas memorias solo se son configurables como caché, no se mostrarán en el mapa de memoria. (El
manejo de la memoria caché se discutirá en practicas posteriores).

El Nivel 2 consiste en 256KB de RAM y cerca de ¼ puede utilizarse como caché. (Si un segmento es
configurado como caché, no se mostrará en el mapa de memoria). Esta será memoria indefinida, esto
es, puede contener código o datos.

• Memoria de Nivel 1
1. Siempre caché (No en mapa)
2. L1P (programa), L1D (Datos)
• Memoria Nivel 2 (L2)
1. 192KB RAM (programa o datos)
2. Hasta 64KB de caché

Por otra parte la memoria externa está dividida en 4 rangos externos CE (Chip Enable): , ,
, , por interfaz de memoria externa (EMIF), cada una de 1Gbytes. Cada espacio CE puede
contener memoria de programa o memoria de datos usando memoria síncrona o asíncrona. Las
direcciones de memoria que cae fuera de los rangos no se usan.

Sergio Domínguez Sánchez 1


INSTITUTO POLITÉCNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA
CAMPUS ZACATECAS

PRACTICAS DE LABORATORIO DE PROCESADOR DIGITAL DE SEÑALES.

• Cuatro rangos externos


1. Datos o Programa
2. Cada una de 128 Mbytes
3. Llamadas , , ,

En la siguiente figura se muestra un diagrama de bloques de la memoria interna y externa


disponible en el DSK C6713.
• El DSK usa las cuatro regiones de
Memoria Externa.
1. para SDRAM
2. para memoria Flash y
puertos I/O (Interruptores,
LED’s, etc.)
3. y conectadas al
conector daughter.

En el siguiete mapa de memoria se muestra el total de memoria disponible que tiene el C6713 y
cómo la memoria es usada en el DSK C6713.

Sergio Domínguez Sánchez 2


INSTITUTO POLITÉCNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA
CAMPUS ZACATECAS

PRACTICAS DE LABORATORIO DE PROCESADOR DIGITAL DE SEÑALES.

Secciones

Si se analiza un programa en C, notará que contiene código y diferentes tipos de datos (globales,
locales, etc.).

• Cada programa C consiste en diferentes


partes llamadas Secciones.
• Todos los nombres de las secciones por
defecto comienzan con “.”

En las herramientas de generación de código de Texas Instruments, estas partes de un programa


son llamadas Secciones. Separar el codigo de programa y datos en varias secciones proporciona
flexibilidad ya que nos permite colocar secciones de código en ROM y variables en RAM. En el
diagrama anterior sólo se ilustran cinco secciones:

• Variables Globales
• Valores iniciales para variables globales
• Variables locales
• Código (Las instrucciones)
• Funciones estandar I/O

A continuación se listan las secciones creadas por el compilador. Junto con la descripción, se
proporciona el nombre de la sección definido por el compilador:

Nombre de Sección Descripción Tipo de Memoria


.text Código Inicializada
.switch Tablas para instrucciones switch Inicializada
.const Cadena de literales globales y estáticas Inicializada
.cinit Valores iniciales para variables globales/estáticos Inicializada
.pinit Valores iniciales para constructores C++ Inicializada
.bss Variables globales y estáticas No Inicializada
.far Variables globales y estáticas No Inicializada
.stack Stack (variables locales) No Inicializada
.sysmem Memoria para funciones malloc (pila) No Inicializada
.cio Buffers para funciones stdio No Inicializada

Se deben posicionar estas secciones en su area de memoria apropiada. En términos sencillos,


inicializada podría pensarse como tipo de memoria ROM y No inicializada como memoria tipo RAM

Sergio Domínguez Sánchez 3


INSTITUTO POLITÉCNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA
CAMPUS ZACATECAS

PRACTICAS DE LABORATORIO DE PROCESADOR DIGITAL DE SEÑALES.


EJERCICIO:

¿Dónde anticiparías que deberían colocarse estas secciones dentro de la memoria? Intenta colocar
las 5 secciones siguientes y menciona por qué las ubicaste ahí.

Sección Ubicación ¿Por qué?


.text
.cinit
.bss
.stack
.cio

¿Cómo se colocan las secciones en las regiones de Memoria?

Ahora que hemos definido estas secciones y dónde queremos colocarlas, se crearán las areas a las
que serán enlazadas.

Enlazar codigo es un proceso de tres pasos:

1. Definir las diferentes regiones de memoria (RAM en chip vs. EPROM vs. SDRAM, etc.)
2. Describir que secciones van en que región de memoria.
3. Correr el enlazador (linker) con “build” o “rebuild”.

DESARROLLO:

1. Crear una nueva región de memoria (Usando MEM)

Primero, para crear un área especifica de memoria, abra el archivo .cdb, click derecho en
Memory Section Manager y seleccione “Insert MEM”. Nombre esta área de manera únca y
luego especifique su base y longitud. Una vez creada, puede colocar secciones en ella.

Sergio Domínguez Sánchez 4


INSTITUTO POLITÉCNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA
CAMPUS ZACATECAS

PRACTICAS DE LABORATORIO DE PROCESADOR DIGITAL DE SEÑALES.

• MEM Manager permite crear área de


memoria y colocar secciones.

2. Colocar secciones – MEM Manager Properties

La herramienta de configuración hace facil la colocación de secciones. Cada una de las


secciones predefinidas del compilador descritas antes, tienen su propio menú desplegable
para seleccionar una de las regiones que se han definido (paso 1).

• Para colocar una sección en un área de Memoria:


1. Click derecho en MEM Section Manager y
seleccione “Properties”
2. Seleccione la pestaña apropiada (ej.
Compiler).
3. Seleccione el área de memoria para cada
sección.

Hay tres pestañas de nombres de secciones predefinidos.

• Secciones de datos BIOS


• Secciones de código BIOS
• Secciones de compilador

Sergio Domínguez Sánchez 5


INSTITUTO POLITÉCNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA
CAMPUS ZACATECAS

PRACTICAS DE LABORATORIO DE PROCESADOR DIGITAL DE SEÑALES.

• El BIOS crea secciones para código y datos.


• El usuario necesita colocar éstas en la región de
memoria apropiada.

Secciones Inicializadas

La memoria ROM es una forma de memoria inicializada. Después de encender el DSK la memoria
ROM aún contiene sus valores, en otras palabras, es inicializada después de encender. Por lo tanto,
para que nuestro sistema funcione, las secciones inicializadas deben “existir” antes de que corramos
nuestro código.

Cuando usamos el cargador del CCS (File:Load Program…), el CCS automáticamente copia cada
sección inicializada (.text, .switch, .cinit, .pinit, .const, etc.) en memoria volátil del objetivo (target)
seleccionado.

(Más adelante se examinarán otras formas de localizar secciones de código y datos inicializados.
Tendremos la oportunidad de grabarlos en memoria Flash y reubicarlas en tiempo real).

3. Correr el enlazador (Linker)

Crear el archivo de comandos del Linker (via .CDB)

Cuando se haya terminado de crear las regiones de memoria y asignado las secciones a estas
áreas de memoria (ej. Cuando salvas el archivo .CDB), la herramienta de configuración del
CCS crea cinco archivos. Uno de los archivos es cfg.cmd, que es un archivo de comando
enlazador.

Este archivo contiene dos partes principales, MEMORIA y SECCIONES. (Aunque si se abre y
examina el archivo, no estará tan bien presentado como en la figura siguiente.

Sergio Domínguez Sánchez 6


INSTITUTO POLITÉCNICO NACIONAL
UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA
CAMPUS ZACATECAS

PRACTICAS DE LABORATORIO DE PROCESADOR DIGITAL DE SEÑALES.


• La herramienta de configuración genera cinco archivos
diferentes.
• Uno de ellos es el archivo de comando enlazador
• El archivo .cdm es generado de los ajustes MEM.

Corriendo el Enlazador (Linker)

El proposito principal del linker es enlazar varios archivos de objetos. Combina las secciones
de entrada con el mismo nombre de los diversos archivos de objetos y coloca cada nueva
sección de salida en ubicaciones específicas en la memoria. En el proceso, resuelve
(proporciona direcciones reales para) todos los símbolos descritos en tu código.

El Linker puede crear dos salidas, el archivo ejecutable (.out) y un reporte que describe los
resultados del enlace (.map). (El Linker corre automáticamente cuando se realiza la
compilación).

Sergio Domínguez Sánchez 7

Вам также может понравиться