2010-06-06 36 views
6

使用帶有pic18f的Microchip C18編譯器,我想在程序數據空間中創建一個3000字節的「大」緩衝區。使用微芯片創建pic18f上的大緩衝區c18編譯器

如果我把這個在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 

如何創建一個大緩衝區?你有關於如何用c18在pic18f上管理大緩衝區的教程嗎?

回答

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 

需要注意的是,通常也沒有任何映射的內存中,你可以p你的數據部分,但USB緩衝區通常是我canibalize的第一選擇(除非你在同一個項目當然需要USB ...)