後は XC8 の結果を C18 に近づけるだけ…と思うのですが、
どうも関数を特定アドレスに配置するのがうまくいかない。
ユーザマニュアルには
void f() @ 0x0008
{
...
}
みたいに指定すると書いてあったので
void High_ISR (void) @ 0x08
{
#asm
goto REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS
#endasm
}
みたいにしたんですが、プログラムメモリーの0x08付近に
goto文が現れない(汗)
PIC24みたいに __attribute__*1 をつけてみても
同じ。(errorもwarningも出ないから質が悪い)
コンパイルオプションのAddress qualifiers をいろいろ変えてもダメ。
ブートローダ分ずらす必要があるので
リンカーオプションの codeoffset でずらすとその前領域は0xFFになる
まあ、ブートローダ無効にしても動かないので根本的原因じゃないかも。
無変更でも XC8 でコンパイルが出来るようになるまで
Microchip Application Library や XC8 のアップデート待ちの方が精神衛生上いいかも…
というかリリースノートに
前回アップデートで「XC16 and XC32 support added.」
と書いてあったから PIC24 や PIC32 に移行すべきか。
(USBの使えるPIC24F***GB***シリーズが秋月で替えないのが問題ですが…)
いや、素直にC18で開発したほうがいいのか?(汗)
*1:address=0x08