6

pic18f で Microchip C18 コンパイラを使用して、プログラム データ空間に 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

大きなバッファを作成するには? c18でpic18fの大きなバッファを管理する方法に関するチュートリアルはありますか?

4

1 に答える 1

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

通常、DATAセクションを配置できるマップされていないメモリはありませんが、通常、USBバッファは最初にカニバリゼーションを選択することに注意してください(もちろん、同じプロジェクトでUSBが必要な場合を除きます...)

于 2010-06-06T10:36:12.117 に答える