Флэш -программирование и библиотека утилит эмуляции EEPROM для устройств PIC32MX. До сих пор эта библиотека поддерживает только устройства PIC32MX1XX/2XX/5XX 64/100PIN из таблицы DATASHIT D60001290.
Эта библиотека предполагает, что у вас установлена цепочка компилятора xc32-gcc . Если у вас нет, вы можете найти его здесь.
eeprom_read_word считывает слово из эмулированного eeprom, если включеноeeprom_write_word записывает слово для эмулирования eeprom, если включеноflash_write_word записывает слово для программы флэш -памятиflash_program_page_offset Read/Modify/Algorithm Write, чтобы написать страницу, которая смещена на размер страницы. Обратите внимание, что эта функция напишет только одну страницу. Если предоставленные данные больше страницы, дополнительные данные не будут записаны.flash_program_page Read/Modify/Algorithm записи для записи страницы для программы Flash Memory. Возврат FLASH_NOT_ALIGNED если предоставленный адрес не выровнен страницейflash_write_page записывает страницу для программы флэш -памяти. Обратите внимание, что это будет стереть все, что находится на странице раньше.flash_write_row записывает строку для программы флэш -памятиflash_erase_page стирает страницу программной флэш -памятиflash_erase_all_program_memory стирает всю программную флэш -память - включая эмулированный сектор EEPROM. Использовать с осторожностью. Примечание, эта функция включена по умолчанию, но может быть отключена, чтобы избежать аварий с переменной DISABLE_ERASE_ALL_PROGRAM_MEM Cmake Просто добавьте папку в качестве подкаталог. Не забудьте установить компилятор в компилятор xc32-gcc .
add_subdirectory(path/to/flashlib)
...
target_link_libraries(target flashlib)
Теперь вы можете включить файл flashlib.h и использовать определенные в нем функции.
Вы можете указать во время компиляции, какой раздел Flash вы хотите посвятить эмуляции EEPROM. Доступны следующие переменные Cmake:
-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
Переменные начального и конечного сектора требуются, если вы хотите использовать эмуляцию EEPROM. Если ENABLE_EEPROM_EMU не определен, не нужно определять начальный и конечный секторов. Обратите внимание, что все адреса Flash должны быть в пространстве ядра (KSEG0/1). Ниже приведен пример использования:
cmake -DENABLE_EEPROM_EMU=1 -DEEPROM_SECTOR_START=0x9D070000 -DEEPROM_SECTOR_END=0x9D07FFFF ..
Если ваш MCU поддерживает программирование двойного слова (не все), вы можете компилироваться с поддержкой этого с помощью переменной флага ENABLE_DOUBLEWORD_PROGRAMMING cmake.
Вы можете защитить сегмент вспышки, так что библиотека отказывалась писать адресам в этом сегменте. Используйте эти переменные cmake, чтобы определить защищенный сегмент:
-DPROTECTED_FLASH_SECTOR_FROM=<ksegaddr> # Determines start address for flash protection
-DPROTECTED_FLASH_SECTOR_TO=<ksegaddr> # Determines end address for flash protection
Если у вас есть какие -либо дополнения, которые вы хотите отправить, не стесняйтесь открыть запрос на тягу или проблему. Обязательно добавьте себя в список авторов в соответствующих файлах.
Cmake пытается проверить, является ли предоставленный компилятор I «действительным», но xc32-gcc не поддерживает стандартный -rdynamic флаг. Эта проверка можно обойти, предоставив CMAKE с флагом -DCMAKE_C_COMPILER_WORKS=1 .