การเขียนโปรแกรมแฟลชและไลบรารียูทิลิตี้การจำลอง EEPROM สำหรับอุปกรณ์ PIC32MX จนถึงตอนนี้ไลบรารีนี้รองรับอุปกรณ์ PIC32MX1XX/2XX/5XX 64/100PIN จากแผ่นข้อมูล D60001290
ห้องสมุดนี้จะถือว่าคุณติดตั้งโซ่คอมไพเลอร์ xc32-gcc หากคุณยังไม่ได้พบที่นี่
eeprom_read_word อ่านคำจาก EEPROM ที่เลียนแบบหากเปิดใช้งานeeprom_write_word เขียนคำเพื่อจำลอง EEPROM หากเปิดใช้งานflash_write_word เขียนคำไปยังโปรแกรม Flash Memoryflash_program_page_offset อัลกอริทึมการอ่าน/แก้ไข/เขียนเพื่อเขียนหน้าเว็บที่ชดเชยกับขนาดหน้า หมายเหตุฟังก์ชั่นนี้จะเขียนหน้าเดียวเท่านั้น หากข้อมูลที่ให้นั้นใหญ่กว่าหน้าข้อมูลเพิ่มเติมจะไม่ถูกเขียนflash_program_page อัลกอริทึมการอ่าน/แก้ไข/เขียนเพื่อเขียนหน้าไปยังโปรแกรม Flash Memory จะส่งคืน FLASH_NOT_ALIGNED หากที่อยู่ที่ระบุไม่ได้จัดแนวหน้าflash_write_page เขียนหน้าเพื่อโปรแกรมหน่วยความจำแฟลช หมายเหตุสิ่งนี้จะลบสิ่งที่อยู่บนหน้าเว็บมาก่อนflash_write_row เขียนแถวถึงโปรแกรม Flash Memoryflash_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 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 มาตรฐาน การตรวจสอบนี้สามารถลดลงได้โดยการให้ cmake ด้วย -DCMAKE_C_COMPILER_WORKS=1 แฟล็ก