Eine Flash -Programmierung und EEPROM -Emulations -Dienstprogrammbibliothek für PIC32MX -Geräte. Bisher unterstützt diese Bibliothek nur die PIC32MX1XX/2xx/5xx 64/100pin -Geräte von DataSheet D60001290.
In dieser Bibliothek wird davon ausgegangen, dass die xc32-gcc -Compiler-Kette installiert ist. Wenn Sie es nicht getan haben, können Sie es hier finden.
eeprom_read_word liest ein Wort aus emuliertem EEPROM, falls aktivierteeprom_write_word schreibt ein Wort an emuliertes EEPROM, falls aktiviertflash_write_word schreibt ein Wort zum Programmflash -Speicherflash_program_page_offset Read/Modify/Write Algorithmus, um eine Seite zu schreiben, die an die Seitengröße ausgestattet ist. Beachten Sie, dass diese Funktion nur eine einzelne Seite schreibt. Wenn die bereitgestellten Daten größer als eine Seite sind, werden die zusätzlichen Daten nicht geschrieben.flash_program_page Lesen/Ändern/Schreiben von Algorithmus, um eine Seite zum Programmieren von Flash -Speicher zu schreiben. Gibt FLASH_NOT_ALIGNED zurück, wenn die angegebene Adresse nicht die Seite ausgerichtet istflash_write_page schreibt eine Seite, um Flash -Speicher zu programmieren. Beachten Sie, dass dies das, was schon einmal auf der Seite ist, ausgelöscht wird.flash_write_row schreibt eine Zeile, um Flash -Speicher zu programmierenflash_erase_page löscht eine Seite mit dem Programm Flash -Speicher ausflash_erase_all_program_memory löscht den gesamten Programm Flash -Speicher - einschließlich emulter EEPROM -Sektor. Verwendung mit Vorsicht. Beachten Sie, dass diese Funktion standardmäßig aktiviert ist, kann jedoch deaktiviert werden, um Unfälle mit der CMAKE -Variablen DISABLE_ERASE_ALL_PROGRAM_MEM zu vermeiden Fügen Sie einfach den Ordner als Unterverzeichnis hinzu. Vergessen Sie nicht, den Compiler auf den xc32-gcc -Compiler einzustellen.
add_subdirectory(path/to/flashlib)
...
target_link_libraries(target flashlib)
Sie können jetzt die Datei flashlib.h einfügen und die darin definierten Funktionen verwenden.
Sie können bei Compile-Time angeben, welchen Abschnitt von Flash Sie der EEPROM-Emulation widmen möchten. Die folgenden CMake -Variablen sind verfügbar:
-DENABLE_EEPROM_EMU # Enabling compilation of eeprom emulation
-DEEPROM_SECTOR_START=<ksegaddr> # Determines start address for eeprom dedicated flash memory
-DEEPROM_SECTOR_END=<ksegaddr> # Determines end address for eeprom dedicated flash memory
Die Variablen für Start- und Endsektor sind erforderlich, wenn Sie die EEPROM -Emulation verwenden möchten. Wenn ENABLE_EEPROM_EMU nicht definiert ist, müssen Sie den Start- und Endsektor nicht definieren. Beachten Sie, dass alle Flash-Adressen im Kernel-Raum (KSEG0/1) sein sollten. Unten finden Sie eine Beispielverwendung:
cmake -DENABLE_EEPROM_EMU=1 -DEEPROM_SECTOR_START=0x9D070000 -DEEPROM_SECTOR_END=0x9D07FFFF ..
Wenn Ihre MCU das Doppel -Word -Programmieren unterstützt (nicht alle tun), können Sie dies mit der CMake -Flag -Variablen ENABLE_DOUBLEWORD_PROGRAMMING kompilieren.
Sie können ein Flash -Segment schützen, sodass die Bibliothek sich weigert, an Adressen in diesem Segment zu schreiben. Verwenden Sie diese CMake -Variablen, um Ihr geschütztes Segment zu bestimmen:
-DPROTECTED_FLASH_SECTOR_FROM=<ksegaddr> # Determines start address for flash protection
-DPROTECTED_FLASH_SECTOR_TO=<ksegaddr> # Determines end address for flash protection
Wenn Sie Ergänzungen haben, die Sie einreichen möchten, können Sie eine Pull -Anfrage oder ein Ausgabe öffnen. Stellen Sie sicher, dass Sie sich in die Liste der Autoren in den entsprechenden Dateien (en) hinzufügen.
CMake versucht zu überprüfen, ob der bereitgestellte Compiler i "gültig", aber xc32-gcc die Standard -rdynamic -Flagge nicht unterstützt. Diese Überprüfung kann durch Bereitstellung von CMAKE mit dem Flag -DCMAKE_C_COMPILER_WORKS=1 abgeleitet werden.