Une programmation flash et une bibliothèque d'utilité d'émulation EEPROM pour les périphériques PIC32MX. Jusqu'à présent, cette bibliothèque ne prend en charge que les périphériques PIC32MX1XX / 2XX / 5XX 64 / 100pin de la fiche technique D60001290.
Cette bibliothèque suppose que la chaîne de compilateur xc32-gcc est installée. Si vous ne l'avez pas fait, vous pouvez le trouver ici.
eeprom_read_word lit un mot de eeprom émulé, si activéeeprom_write_word écrit un mot pour imiter eeprom, si activéflash_write_word écrit un mot pour programmer la mémoire flashflash_program_page_offset Read / Modify / Write Algorithme Pour écrire une page décalée à la taille de la page. Remarque, cette fonction n'écrira qu'une seule page. Si les données fournies sont plus grandes qu'une page, les données supplémentaires ne seront pas écrites.flash_program_page Read / Modify / Write Algorithme Pour écrire une page pour programmer la mémoire flash. Retournera FLASH_NOT_ALIGNED si l'adresse fournie n'est pas alignée sur la pageflash_write_page écrit une page pour programmer la mémoire flash. Remarque, cela effacera ce qui est sur la page auparavant.flash_write_row écrit une ligne pour programmer la mémoire flashflash_erase_page efface une page de la mémoire flash du programmeflash_erase_all_program_memory efface toute la mémoire flash du programme - y compris le secteur EEPROM émulé. Utiliser avec prudence. Remarque, cette fonction est activée par défaut mais peut être désactivée pour éviter les accidents avec la variable DISABLE_ERASE_ALL_PROGRAM_MEM Cmake Ajoutez simplement le dossier en tant que sous-répertoire. N'oubliez pas de définir le compilateur sur le compilateur xc32-gcc .
add_subdirectory(path/to/flashlib)
...
target_link_libraries(target flashlib)
Vous pouvez désormais inclure le fichier flashlib.h et utiliser les fonctions définies qui y sont définies.
Vous pouvez spécifier à Compile-Time quelle section de Flash que vous souhaitez consacrer à l'émulation EEPROM. Les variables Cmake suivantes sont disponibles:
-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
Les variables du secteur de début et de fin sont requises si vous souhaitez utiliser l'émulation EEPROM. Si ENABLE_EEPROM_EMU n'est pas défini, il n'est pas nécessaire de définir les secteurs de début et de fin. Notez que toutes les adresses flash doivent être dans l'espace du noyau (KSEG0 / 1). Vous trouverez ci-dessous un exemple d'utilisation:
cmake -DENABLE_EEPROM_EMU=1 -DEEPROM_SECTOR_START=0x9D070000 -DEEPROM_SECTOR_END=0x9D07FFFF ..
Si votre MCU prend en charge la programmation Double Word (pas toutes), vous pouvez compiler avec la prise en charge de celle avec la variable de l'indicateur CMake ENABLE_DOUBLEWORD_PROGRAMMING .
Vous pouvez protéger un segment de Flash, de sorte que la bibliothèque refuse d'écrire aux adresses dans ce segment. Utilisez ces variables Cmake pour déterminer votre segment protégé:
-DPROTECTED_FLASH_SECTOR_FROM=<ksegaddr> # Determines start address for flash protection
-DPROTECTED_FLASH_SECTOR_TO=<ksegaddr> # Determines end address for flash protection
Si vous avez des ajouts que vous souhaitez soumettre, n'hésitez pas à ouvrir une demande de traction ou un problème. Assurez-vous de vous ajouter dans la liste des auteurs dans les fichiers appropriés.
CMake essaie de vérifier si le compilateur fourni I "valide", mais xc32-gcc ne prend pas en charge l'indicateur -rdynamic standard. Ce chèque peut être contourné en fournissant à CMake l' -DCMAKE_C_COMPILER_WORKS=1 drapeau.