Eu compilava no SDCC 2.1 para o at89s8253 e não tinha problemas, porém começaram a surgir bugs relacionados a utilização de vetores.
Para resolver isso eu decidi atulizar meu SDCC para o atual.
Mas o SDCC modificou alguns comandos comparados ao SDCC antigo então eu fiz todas a modificações necessárias, "__interrupt" por exemplo que antes era só "interrupt".
Porém eu estou com problemas em uma função que utilizava para escrita e leitura na EEPROM interna.
A função é a seguinte:
cpp code
void ee_put(__xdata char *loc, char c)
{
EECON|=0x38;
*loc=c;
while((EECON&2)==0);
EECON&=~0x18;
msdelay0(15);
msdelay0(50);
}
char ee_get(__xdata char *loc)
{
char c;
EECON|=0x08;
c=*loc;
EECON&=~0x18;
msdelay0(15);
msdelay0(50);
return c;
}
O erro que não me deixa compilar é:
?ASlink-Error-Could not get 133 consecutive bytes in internal RAM for area DSEG.
E também existe um warning referente a ponteiros toda vez que uma dessas funções é chamada:
4canaisv2.c(1484) : warning 154: converting integral to pointer without a cast from type 'const-int literal' to type 'char xdata* fixed'
Nota-se que eu conseguia gravar tranquilamente no SDCC anterior, não entendo porque esse erro de RAM insuficiente está aparecendo.
Agluém pode me salvar em relação a isso?
Muito obrigado! Desde Já!