2017-08-02 2 views
2

In MPLAB muss ich Bootloader für PIC32MX795F512L verwenden. Ich bin in der Lage, Boot-Abschnitt in Kseg Boot-Speicher bis 0x8fc00000 und Anwendungscode in kseg0_program_mem um 0x9d000000 zu programmieren. Ich kann vom Bootloader zur Anwendung springen, indem ich zum addr Befehl spring, aber ich habe Probleme beim Sprung von der Anwendung zum Bootloader. Ich habe versucht, mit der Adresse (Bootloader-Adresse) zu springen, aber es wird nicht funktionieren. Bitte helfen Sie mirEmbedded C, Bootloader-Konfiguration für PIC32MX795F512L

Antwort

0

Verwenden Sie einfach einen Reset-Befehl, es wird Sie zurück auf die Prozessor-Startadresse setzen. Überprüfen Sie die POR-Bits auf einen SW-Reset, um zu sehen, ob Sie den Reset verursacht haben oder ob die Karte gerade eingeschaltet wurde.

+0

Das gleiche Verfahren wurde überprüft. Aber es wird nicht auf Bootloader Adresse –

+0

zurückgesetzt verwenden: asm ("reset"); und im Bootloader überprüfen, ob (RCONbits.SWR)/* I ausgelöst Bootloader */ – blsmit5728

+0

Es hat funktioniert. Danke –

0

ich das für meine PIC32MX270 in eines der viele PDF-Dateien gefunden, ich glaube, es für die ganze PIC32MX Familie konsistent ist:

/* 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); 

Die while (1) wird auch die uC einsperren, so dass der Watchdog sollte Setzen Sie das Gerät zurück, wenn alles andere fehlschlägt. Ich habe diesen Code auch in meinem Exception-Handler (system_exceptions.c, wenn Sie Harmony verwenden), so, wenn etwas schief geht (DMA-Disaster oder Sie versuchen, sprintf (foo_string, "% f", NAN)), das Gerät wird zurückgesetzt, anstatt ein Briefbeschwerer zu werden.