2

これはこの質問に最適な場所ではないかもしれませんが、Microchipフォーラムを試しましたが、まだ回答がありませんでした。PIC24FJ64GB002を使用して構築したプロトタイプボードでHIDブートローダープロジェクトを動作させるように取り組んでいます。ボードで動作するようにサンプルのHIDBootloaderプロジェクトを変更し、ボードでも動作するようにサンプルのHIDMouseプロジェクトを変更しました。ブートローダーコードを使用してデバイスをプログラムすると、正常に実行され、Microchip Bootloader Windowsプログラムがデバイスを検出し、「デバイスが接続されています」と表示されます。しかし、マウスプログラムのhexファイルをデバイスにロードしようとすると、正常に完了したと表示されますが、マウスプログラムは実行されません。正しいリンカースクリプトを使用しているかどうかわかりません。

4

1 に答える 1

2

マイクロチップ HID ブートローダーとマイクロチップ HID マウス アプリで動作するブレッドボード PIC24FJ64GB002 を入手できました。

重要なことは、ブートローダーとアプリに正しいリンカー スクリプトを使用することです。

ブートローダー リンカの変更:
MEMORY
{
...
program (xr) : ORIGIN = 0x400, LENGTH = 0x1000
app_ivt : ORIGIN = 0x1400, LENGTH = 0xC0
...
}
__CODE_BASE = 0x400;

アプリ リンカーの変更:
MEMORY
{
...
app_ivt : ORIGIN = 0x1400, LENGTH = 0xC0
program (xr) : ORIGIN = 0x14C0, LENGTH = 0x96E8
...
}
__CODE_BASE = 0x200;

ブートローダーを介してアプリケーションをロードした後、デバイスをリセットする必要があります。ブートローダーの main() の先頭にある次のコードにより、ブートローダーがアプリケーションにジャンプします。

mInitSwitch2();
if((sw2==1) && ((RCON & 0x83) != 0))
{
    __asm__("goto 0x1400");
}
于 2010-12-23T20:37:29.123 に答える