2017-08-02 7 views
2

MPLABでは、PIC32MX795F512Lのブートローダを使用する必要があります。私はブートセクションを0x8fc00000までksegブートメモリにプログラムし、アプリケーションコードを0x9d000000のkseg0_program_memにプログラムすることができます。私はブートローダからアプリケーションへジャンプすることができます。しかし、アプリケーションからブートローダにジャンプする際に問題に直面しています。 addr(ブートローダのアドレス)にジャンプしてみましたが、うまくいきません。助けてくださいPIC32MX795F512LのC、ブートローダ設定の埋め込み

答えて

0

リセットコマンドを使用すると、プロセッサの開始アドレスに戻ります。 SWリセットのPORビットをチェックして、リセットが発生したかどうか、またはボードの電源がオンになったかどうかを確認してください。

+0

同じ手順を確認しました。しかし、ブートローダのアドレス –

+0

にリセットされないようにしてください:asm( "reset");ブートローダーで(RCONbits.SWR)/ *がブートローダ*/ – blsmit5728

+0

を起動したかどうかを確認します。ありがとう –

0

私はそれが全体のPIC32MXファミリの一貫だと信じて、私のPIC32MX270のための多くのPDFののいずれかでこれを見つけた:

/* The following code illustrates a software Reset */ 
// assume interrupts are disabled 
// assume the DMA controller is suspended 
// assume the device is locked 
/* perform a system unlock sequence */ 
// starting critical sequence 
SYSKEY = 0x00000000; //write invalid key to force lock 
SYSKEY = 0xAA996655; //write key1 to SYSKEY 
SYSKEY = 0x556699AA; //write key2 to SYSKEY 
// OSCCON is now unlocked 
/* set SWRST bit to arm reset */ 
RSWRSTSET = 1; 
/* read RSWRST register to trigger reset */ 
_excep_code = RSWRST; 
/* prevent any unwanted code execution until reset occurs*/ 
while(1); 

しばらくウォッチドッグがすべきように、(1)ものuCをロックします他のすべてが失敗した場合はデバイスをリセットしてください。私は例外ハンドラにもこのコードを持っています(もしあなたがHarmonyを使用しているならsystem_exceptions.c)、何かがうまくいけば(DMAの災害やsprintf(foo_string、 "%f"、NAN)文鎮になる代わりにリセットされます。