flashlib
v1.2.1
PIC32MX設備的Flash編程和EEPROM仿真實用程序庫。到目前為止,該庫僅支持DATASHEET D60001290的PIC32MX1XX/2XX/5XX 64/100PIN設備。
該庫假定您安裝了xc32-gcc編譯器鏈。如果沒有,可以在這裡找到它。
eeprom_read_word如果啟用了仿真的eeprom中的單詞eeprom_write_word寫一個單詞以模擬eeprom,如果啟用了flash_write_word寫一個單詞到程序閃存flash_program_page_offset read/modify/寫算法以編寫偏移到頁面大小的頁面。注意,此功能只會編寫一個頁面。如果提供的數據大於頁面,則不會編寫其他數據。flash_program_page讀取/修改/編寫算法以編寫頁面以編程閃存。如果未提供的地址為單位,將返回FLASH_NOT_ALIGNED如果提供的地址flash_write_page將頁面寫入編程閃存。請注意,這將刪除之前的頁面上的任何內容。flash_write_row將行寫入程序閃存flash_erase_page刪除程序閃存的頁面flash_erase_all_program_memory刪除了所有程序閃存 - 包括模擬的EEPROM扇區。謹慎使用。注意,默認情況下啟用了此功能,但可以禁用以避免使用DISABLE_ERASE_ALL_PROGRAM_MEM cmake cmake cmake變量發生事故只需將文件夾添加為子目錄。不要忘記將編譯器設置為xc32-gcc編譯器。
add_subdirectory(path/to/flashlib)
...
target_link_libraries(target flashlib)
現在,您可以包含flashlib.h文件並使用其中定義的功能。
您可以在編譯時指定要專用於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 ,則無需定義開始和結束扇區。請注意,所有閃存地址都應在內核空間(KSEG0/1)中。以下是一個示例用法:
cmake -DENABLE_EEPROM_EMU=1 -DEEPROM_SECTOR_START=0x9D070000 -DEEPROM_SECTOR_END=0x9D07FFFF ..
如果您的MCU支持雙詞編程(並非全部),則可以使用ENABLE_DOUBLEWORD_PROGRAMMING cmake flag變量進行編譯。
您可以保護閃存的一段,以便庫將拒絕寫入該細分市場中的地址。使用這些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標誌。可以通過提供-DCMAKE_C_COMPILER_WORKS=1標誌來避開此檢查。