Пишу в IAR Assembler for AVR 5.20.1 (5.20.1.50092) под ATmega128
В программе очень много работы со строками;
Например
Код
printf ("HRNOFF: %3d Hours",hmi->hrnoff);
printf ("HRNON: %3d Hours",hmi->hrnon);
printf ("UEID:\n%s",hmi->ueid);
strcpy((char *)modem_resiver,"AT+CGDCONT=1,\"IP\",\"");
strcmp((char *)modem_resiver,"\r\n+CPIN: SIM PIN\r\n\r\nOK\r\n")
printf ("HRNON: %3d Hours",hmi->hrnon);
printf ("UEID:\n%s",hmi->ueid);
strcpy((char *)modem_resiver,"AT+CGDCONT=1,\"IP\",\"");
strcmp((char *)modem_resiver,"\r\n+CPIN: SIM PIN\r\n\r\nOK\r\n")
Так компилятор все эти строки
Код
"HRNOFF: %3d Hours","HRNON: %3d Hours"….
кидает в RAM при чем со всего кода. Которой (RAM) потом нехватает.
Можно ли сделать, чтоб :
Код
"string"
– не загоняло в RAM эту строку и возвращало Код
const char *
а возвращало просто адрес флеша Код
__flesh const char *