SSブログ

PIC24のコンパイルで悩んだ [電子工作]

(2018.08.15)

PICプログラム開発にはMicrochip社が無償で提供しているCコンパイラを使います。PIC16ならxc8コンパイラ、PIC24ならxc16コンパイラです。同じ会社が提供する似た名前のコンパイラなのですが、違いが色々あって戸惑います。(聞いた話では開発した事業部が違うらしい)

xc8コンパイラでは、SRAM(データを格納する)やFlash Memory(プログラム・コードを格納する)の使用範囲をRAM ranges propertyとROM ranges propertyで指定していました。これと同じことをxc16コンパイラでやりたいのですが・・・

CodeGuard categoryにそれらしいpropertyを見つけました。しかし設定がsmall,medium,largeの三択で期待していたものとは違うようです。(<==使い方が判らない)

あれこれ調べて、CONFIGURATION REGISTERのFBSMLIMを使えば目的とする(Boot プログラムの後ろにユーザ・プログラムを配置する)機能を実現できることが判りました。

残るRAM ranges相当の機能は、どうやれば実現するのか?

(暫し悩む)>(あれこれ調べる) >(暫し悩む) >> ん!
無理矢理ですが、『ユーザ・プログラムにはこれ(↓)を付けてコンパイルしてもらう』という方法にたどり着きました。
int boot_area[0x400] __attribute__((noload,unused,address(0x800)));

noload==>実行時に初期化しない
unused==>使用していなくても領域を確保する
address(0x800)==>SRAMの先頭に配置する

Bootプログラムの方にはこれ(↓)を付けてコンパイルします。
asm (".section my_stack, stack address(0x0f00)");
asm (".space 0x100");
int user_area[0x1c00] __attribute__((noload,unused,address(0x1000)));

Bootプログラムで自由に使える範囲を0x800~0x0effに制限します。

パチパチパチ~
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
正しい方法が判ったらあとで書き足すことにして、今はこの方法で先に進みます。
(<==結果オーライな奴)


nice!(1)  コメント(0) 
共通テーマ:日記・雑感

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。