Я раньше работал с 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
В общем с чем это всё едят и как с ним бороться?
--------------------
|