Я раньше работал с PIC16, там было всё понятно. Можно было написать
bank1 unsigned char var1;
И я знал где (по крайней мере в каком банке) находится моя переменная и сколько в этом банке есть ещё места.
Не давно я занялся проектом с процессором PIC18f4550 использую компилятор picc-18_9.50pl3_25jan2007. И у меня возникли вопросы с распределением памяти компилятором:
1. Что это и где их физическое расположение? RAM, BIGRAM, COMRAM, NVRAM
2. У меня есть структура:
...
#define STEC_STR_Length 83 // Размер Стека в Байтах
typedef volatile struct
{
unsigned char STEC_BODY[STEC_STR_Length];
unsigned char START_ADR;
unsigned char Quantity_Byte;
}STEC_STR;
...
Всё компилится прекрасно и выдаёт сообшение...
Data space:
RAM used 1ADh ( 429) of 400h bytes ( 41.9%)
BIGRAM used 18Eh ( 398) of 400h bytes ( 38.9%)
COMRAM used 10h ( 16) of 60h bytes ( 16.7%)
NVRAM used 0h ( 0) of 100h bytes ( 0.0%)
... вроде есть куча свободного места, но если поменять STEC_STR_Length со значения 83 на 84 то при компиляции будет ошибка:
(593) can't find 0x102 words (0x102 withtotal) for psect "bss" in segment "RAM"
(908) exit status = 1
В общем с чем это всё едят и как с ним бороться?