逆襲のユージオログ

ジオログ->Y!ブログ->はてなと漂流してきました。

USB…さて、どうしようか

PIC USB 挑戦継続中。

後は 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