PIC32MXデバイス用のフラッシュプログラミングとEEPROMエミュレーションユーティリティライブラリ。これまでのところ、このライブラリは、データシートD60001290のPIC32MX1XX/2XX/5XX 64/100PINデバイスのみをサポートしています。
このライブラリは、 xc32-gccコンパイラチェーンがインストールされていることを前提としています。そうでない場合は、ここで見つけることができます。
eeprom_read_word有効にすると、エミュレートEEPROMの単語を読み取りますeeprom_write_word有効にした場合、eepromをエミュレートする単語を書き込みますflash_write_word 、フラッシュメモリをプログラムするための単語を書き込みますflash_program_page_offset読み取り/変更/書き込みアルゴリズムは、ページサイズにオフセットされたページを書き込みます。注意してください、この関数は単一のページのみを記述します。提供されたデータがページよりも大きい場合、追加データは記述されません。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変数による事故を避けるために無効にすることができますフォルダーをサブディレクトリとして追加するだけです。コンパイラを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フラグ変数を使用してサポートをコンパイルできます。
フラッシュのセグメントを保護して、ライブラリがそのセグメント内のアドレスへの書き込みを拒否するようにすることができます。これらの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フラグをcmakeに提供することにより、回避できます。