Создайте большой буфер на pic18f с компилятором microchip c18

используя компилятор Microchip C18 с pic18f, я хочу создать" большой " буфер в 3000 байт в пространстве данных программы.

Если я помещу это в main () (on stack):

char tab[127];

у меня есть эта ошибка:

Error [1300] stack frame too large

Если я положил его в мировой, у меня есть эта ошибка:

Error - section '.udata_main.o' can not fit the section. Section '.udata_main.o' length=0x0000007f

как создать большой буфер? У вас есть учебник о том, как управлять большим буфером на pic18f с c18?

1 ответов


вот учебник по этому вопросу:http://www.dwengo.org/tips-tricks/large-variables

в принципе, вы объявляете переменную в специальном разделе, и ссылку на него в разделе по умолчанию:

  #pragma udata DATA // section DATA
  int large_table[768];

  #pragma udata // return to default section
  int *table_ptr = &large_table[0];

затем вы обновляете сценарий компоновщика, чтобы определить большой раздел, добавив что-то вроде этого:

DATABANK   NAME=data      START=0x200          END=0x7FF          PROTECTED
SECTION    NAME=DATA      RAM=data

обратите внимание, что обычно нет никакой памяти, в которой вы можете просто поместить свой раздел данных, но буферы USB обычно мой первый выбор canibalize (если вам не нужен USB в том же проекте, конечно...)