Variables Pic32
Distribución de memoria y Bootloader PIC32MX
Jorge Lara Espitia
La representación de los datos y como estos son almacenados en la memoria del microcontrolador es un factor importante a la hora de estar programando el dispositivo. Este documento muestra algunos fundamentos básicos en la distribución de la memoria del PIC32MX y como a partir de un gestor de arranque (Bootloader) puede ser actualizado sin necesidad de un programador externo.
ALMACENAMIENTO DE LA INFORMACION Y REPRESENTACIÓN DE DATOS
PIC32MX DISTRIBUCION DE MEMORIA Las variables son almacenadas en el segmento de memoria KSEG1 Program RAM.
Por ejemplo cuando se crean variables en el programa estas se almacenan en la memoria del programa.
GenericTypeDefs.h Esta librería permite ver de forma simplificada los distintos tipos de variables en el compilador C. Aquí se muestran a continuación:
DOUBLE Y LONG DOUBLE
En la distribución de memoria del microcontrolador PIC32MX en el Linker Script, se muestra como los datos son almacenados en esas posiciones de memoria. El segmento de memoria es el kseg1_data_mem donde su inicio de almacenamiento de datos es la posición 0xA0000000 con una longitud de 0x1000 posiciones o 4096d.
Aun no se sabe si al partir la memoria flash, puede garantizar almacenamiento de variables en esa localización. LINKER SCRIPT DEL PIC32MX795F512L La ruta donde se encuentra instalado el archivo Linker es: C:\Program Files\Microchip\mplabc32\v2.02\pic32mx\lib\proc\32MX795F512L
La extensión del Linker es *.ld
CAPACIDAD DE MEMORIA RAM DEL PIC32MX Para el PIC32 se construye un vector de 30000 posiciones con formato doublé, recordando que el formato doublé tiene una capacidad de longitud de 32bits.
Se alcanza un 92% total de la memoria RAM del PIC32MX hasta la dirección de memoria 0xA001D4C0. Este 92% equivale a 131KB. MANEJO DE LAS VARIABLES Variables constantes (Const) Las variables const se guardan en la memoria Flash del microcontrolador, es decir, el valor de estas variables no pueden ser modificadas por el programa, solamente de consulta (lectura). Es importante trabajar con este tipo de variables cuando estas no necesiten de modificación. Por lo general utilizar el comando #define es muy parecido, pero por compilador Viendo el siguiente ejemplo de como estas variables son almacenadas en las memorias Flash y RAM.
Se declaran variables tipo const que se pueden ver de diferentes maneras: La variable radio es un vector de 4 posiciones tipo char (8 bits) y tiene sus propios datos ya precargados en el inicializador de la variable. La variable radio2 es igual que radio pero con la diferencia que no están precargados los valores. La variable radio4 no es del tipo const, por tanto es modificable para el programa.
En el simulador se denota que la variable se encuentra en la memoria Flash por la letra P. Cuando la variable es declarada tipo Const y esta no esta precargada con sus valores. La variable pasa a ser parte de la memoria RAM pero únicamente usándose como de lectura. Para tener en cuenta basta con mirar la capacidad de memoria del microcontrolador.
Variables estáticas (Static) Son variables que retienen su valor cuando se hacen llamadas entre funciones, debido a que el compilador les crea una posición fija en memoria. Veamos el siguiente ejemplo implementando variables tipo auto y tipo static en C32.
Se crean variables dentro de una función. La variable x es de tipo char y es estática. Vemos que la posición en memoria RAM del microcontrolador inicia en 0xA0000002. La variable y también es estática pero tipo short. La posición en memoria RAM es la 0xA0000008. La variable Z también ...
Regístrate para leer el documento completo.