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标志来避开此检查。