Memoria almacenada y no almacenada

0

Tengo esta pregunta de memoria almacenada y no almacenada específicamente para los controladores freescale s12x. Tienen memoria RAM y memoria flash tanto bancarias como no bancarizadas. Sé que empezará a poner los primeros datos en el ram no bancario, ahora supongo que supero el límite ¿empezará a colocar automáticamente el ram del banco? Si tengo que cuidarme, siento que perderé la ventaja de la memoria almacenada. Del mismo modo para la memoria flash.

    
pregunta rajesh

1 respuesta

1

En el 68HC12A4, por ejemplo, hay dos áreas disponibles para banca de datos, la primera de 0x7000 a 0x7fff (4KB) con el registro DPAGE, y 0x0000 a 0x03ff o 0x0400 a 0x07ff (1K) con el registro EPAGE. Al parecer, las dos áreas de EPAGE se superponen (el bit 10 de la dirección es un no importa).

Con el Cosmic C Cross Compiler para el HC12 / HCS12, se puede especificar una variable en el área DPAGE usando el modificador @far en la declaración. Una variable en el área de EPAGE se puede especificar usando @epage y @far. Por ejemplo,

@far int i;          // DPAGE area
@epage @far int j;   // EPAGE area

No creo que el compilador comience a usar RAM almacenada automáticamente después de llenar la RAM no almacenada, debes usar estas palabras clave.

Una variable puede ubicarse en el banco de códigos usando @far con la palabra clave const:

@far const int k;        // PPAGE area

A esta variable solo se puede acceder en una función ubicada en un área no bancarizada.

De manera similar, las funciones se ubican en un área almacenada mediante la palabra clave @far.

@far int func(void)
{
...
}

La sintaxis de otros compiladores (como CodeWarrior) puede variar, pero tendrían que usar un mecanismo similar. Consulta el manual de tu compilador.

    
respondido por el tcrosley

Lea otras preguntas en las etiquetas