Создайте большой буфер на pic18f с помощью компилятора microchip c18 - PullRequest
6 голосов
/ 06 июня 2010

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

Если я положу это в main () (в стек):

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 Ответ

2 голосов
/ 06 июня 2010

Вот урок именно об этом: 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

Обратите внимание, что, как правило, в карте нет какой-либо несопоставленной памяти, в которую вы можете просто поместить свой раздел DATA, но USB-буферы, как правило, мой первый выбор для канализации (если, конечно, вам не нужен USB в том же проекте ...) 1010 *

...