Sebagian besar MCU ARM Cortex tidak memiliki fitur memori EEPROM. Sebagai gantinya, data persisten dapat ditulis ke memori flash yang sama yang juga memegang program.
- Bagaimana status CPU selama proses hapus / tulis ini?
- Apakah itu berhenti? Apakah itu mempertahankan operasi normal?
- Apakah perilaku CPU tergantung pada keluarga MCU tertentu (misalnya STM32, Kinetis L) yang digunakan?
(Untuk beberapa orang ini bisa terlihat seperti pertanyaan bodoh, tetapi Microchip PIC16 menghentikan CPU hingga 40 ms selama pemrograman mandiri flash.)
Jawaban:
Perilaku inti tidak tergantung pada implementasi. Flash bukan bagian integral dari inti ARM, dan karenanya, setiap vendor menerapkannya secara berbeda. Biasanya, selama proses hapus / tulis seseorang akan mengeksekusi dari RAM, dan eksekusi tidak akan terpengaruh.
Pada STM32, saya percaya membaca dari flash stall sementara menghapus / menulis siklus sedang berlangsung. Ini akan menyebabkan eksekusi inti terhenti hingga operasi selesai. Dengan beberapa konfigurasi flash, saya yakin Anda dapat terus menjalankan / membaca flash dan itu hanya akan berhenti ketika Anda mengakses bagian dari flash yang Anda hapus / pemrograman.
Saya telah menggunakan Cortex M lain di mana Anda harus mengeksekusi dari RAM sambil memodifikasi konten flash jika tidak Anda akan menemukan kesalahan bus (dan kemungkinan sistem crash jika penangan kesalahan bus / penangan kesalahan keras Anda dalam flash). Beberapa mikro dengan sejumlah besar flash menerapkannya sebagai dua array flash independen, dan ini biasanya memungkinkan akses penuh ke satu bank saat beroperasi di yang lain.
Anda perlu merujuk ke dokumentasi untuk bagian spesifik Anda untuk melihat batasan eksekusi saat memodifikasi konten flash.
sumber