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
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.
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.
- 1. Schnittstelle pic32mx795f512l mit DS3234
- 2. Komponententest für Embedded-C-Entwicklung
- 3. Entspricht NOP in C für Embedded?
- 4. Embedded C Test Entwicklungsmanagement
- 5. atmega embedded C Programmierung
- 6. Python Embedded C++
- 7. C/C++ HTTP Client Bibliothek für Embedded Projekte
- 8. C++ Programmausführungszeitschätzung auf Embedded-System
- 9. Embedded SQL in Dev C++
- 10. C# UWP Embedded SQLite-Datenbank
- 11. genaue Stoppuhr von Embedded C
- 12. Embedded Excel-Benutzersteuerung in C#
- 13. C++ Embedded Lambda in Initializer-Liste für const Vektor Mitglied
- 14. Windows Embedded-Standard keine gültige Win32 C++
- 15. Embedded Redis für Spring Boot
- 16. Diagnose-Tool für Embedded-Gerät
- 17. SSL-Algorithmen für Embedded-Gerät
- 18. kleine embedded-Datenbank für Frühlingsdaten
- 19. Embedded Javascript Interpreter für PHP
- 20. Embedded HTML-Steuerelement für Blackberry?
- 21. Logging-Frameworks für Embedded Linux?
- 22. Konfiguration für Embedded Broker ActiveMQ
- 23. Python Embedded Für Bereich Loops
- 24. Wie MongoDB für Embedded-Array
- 25. Mongoose, Abfrage für Embedded-Array
- 26. LVDS-Bildschirm für Embedded Linux
- 27. Embedded C - Wahl zwischen Switch/Case & Hashtable
- 28. Startpunkt für Symbian/embedded Programmierung lernen
- 29. C/C++ CGI auf Embedded-Gerät, POST, GET, LOGIN?
- 30. RFID-Scanner unterstützt Embedded Visual C++
Das gleiche Verfahren wurde überprüft. Aber es wird nicht auf Bootloader Adresse –
zurückgesetzt verwenden: asm ("reset"); und im Bootloader überprüfen, ob (RCONbits.SWR)/* I ausgelöst Bootloader */ – blsmit5728
Es hat funktioniert. Danke –