Actualmente lo estoy pasando mal intentando utilizar un chip de RAM externa (512 kB) con un PIC18F8720 y el compilador Microchip XC8 (v1.35, modo PRO).
Cada vez que intento escribir algún código para modificar una variable en la memoria externa, el enlazador lanza un error (712): "no se puede generar código para esta expresión". Esto no ocurre al leer lejos variables: sólo cuando escribir en ellos.
Este error es reproducible, incluso en este pequeño programa de ejemplo:
#include <xc.h>
#include <stdio.h>
far int intArray[10];
far int intVariable;
void main(void) {
intVariable = 2; // --> ERROR 712
intArray[1] = 3; // --> ERROR 712
printf("%d\n", intVariable);
printf("%d\n", intArray[0]);
}
Los comandos de compilación+enlace son generados por MPLAB X v3.20:
"/opt/microchip/xc8/v1. 35/bin/xc8" --pass1 --chip=18F8720 -Q -G --double=24 --float=24 --emi=byteselect --ram=default,+20000-9FFFF --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=require --mode=pro -P -N255 --warn=-3 --asmlist --summary=default, -psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,-plib --output=-mcof,+elf: multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s" -obuild/default/production/main. p1 main.c
"/opt/microchip/xc8/v1.35/bin/xc8" --chip=18F8720 -G -mdist/default/production/Test01.X.production. map --double=24 --float=24 --emi=byteselect --ram=default,+20000-9FFFF --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=require --mode=pro -P -N255 --warn=-3 --asmlist --summary=default, -psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,-plib --output=-mcof,+elf: multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s" --memorysummary dist/default/production/memoryfile. xml -odist/default/production/Test01.X.production.elf build/default/production/main.p1
Salida de compilación:
main.c:9: error: (712) no se puede generar código para esta expresión
main.c:10: error: (712) no se puede generar código para esta expresión
Microchip MPLAB XC8 Compilador C (Modo PRO) V1.35
Fecha de construcción: Jul 7 2015
Soporte de piezas Versión: 1.35
Copyright (C) 2015 Microchip Technology Inc.
Tipo de licencia: Configuración de nodo
¿Qué estoy haciendo mal? La salida del compilador no ayuda mucho, ya que el error es demasiado genérico para dar alguna pista.