2010-06-06 5 views
6

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

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

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?

ответ

2

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^