مكتبة برمجة فلاش ومضاهاة EEPROM لأجهزة PIC32MX. حتى الآن ، تدعم هذه المكتبة فقط الأجهزة PIC32MX1XX/2XX/5XX 64/100PIN من ورقة البيانات D60001290.
تفترض هذه المكتبة أن لديك سلسلة برنامج التحويل البرمجي 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 واستخدام الوظائف المحددة فيه.
يمكنك تحديد في وقت الترجمة ما هو قسم 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 ، فلا داعي لتحديد قطاعات البدء والانتهاء. لاحظ أن جميع عناوين الفلاش يجب أن تكون في مساحة kernel (KSEG0/1). فيما يلي مثال على الاستخدام:
cmake -DENABLE_EEPROM_EMU=1 -DEEPROM_SECTOR_START=0x9D070000 -DEEPROM_SECTOR_END=0x9D07FFFF ..
إذا كان MCU الخاص بك يدعم برمجة الكلمات المزدوجة (لا تفعل جميعًا) ، فيمكنك تجميعها مع دعم ذلك باستخدام متغير علامة CMAKE ENABLE_DOUBLEWORD_PROGRAMMING .
يمكنك حماية شريحة من الفلاش ، بحيث ترفض المكتبة الكتابة إلى العناوين داخل هذا الجزء. استخدم متغيرات CMake هذه لتحديد الجزء المحمي:
-DPROTECTED_FLASH_SECTOR_FROM=<ksegaddr> # Determines start address for flash protection
-DPROTECTED_FLASH_SECTOR_TO=<ksegaddr> # Determines end address for flash protection
إذا كان لديك أي إضافات تريد تقديمها ، فلا تتردد في فتح طلب سحب أو مشكلة. تأكد من إضافة نفسك في قائمة المؤلفين في الملفات (الملفات) المناسبة.
يحاول CMake التحقق مما إذا كان المترجم المقدم "صالحًا" ، لكن xc32-gcc لا يدعم العلم القياسي -rdynamic . يمكن أن يتم تجنب هذا الشيك من خلال توفير cmake مع -DCMAKE_C_COMPILER_WORKS=1 .