Menghindari Penggunaan EEPROM

Ringkasan: Jika Anda memperbarui nilai secara berkala di EEPROM setiap beberapa menit (atau beberapa detik), Anda dapat mengalami masalah keausan sel EEPROM. Untuk menghindari ini, Anda perlu mengurangi frekuensi entri dalam sel. Untuk beberapa jenis EEPROM, bahkan kecepatan perekaman lebih dari sekali per jam bisa menjadi masalah.



Saat Anda merekam data, waktu berlalu dengan cepat


EEPROM secara universal digunakan untuk menyimpan pengaturan dan log operasi dalam sistem tertanam. Misalnya, Anda mungkin ingin fitur kotak hitam untuk merekam data terbaru pada saat kecelakaan atau kehilangan daya. Saya telah melihat spesifikasi yang memerlukan rekaman data tersebut setiap beberapa detik.

Tetapi masalahnya adalah bahwa EEPROM memiliki sumber daya nomor catatan terbatas. Setelah 100.000 atau sejuta catatan (tergantung pada chip spesifik), beberapa sistem Anda akan mulai mengalami masalah dengan kegagalan EEPROM. (Lihat datasheet untuk nomor tertentu. Jika Anda ingin merilis sejumlah besar perangkat, "kasus terburuk" mungkin lebih penting daripada yang "khas"). Satu juta catatan sepertinya jumlah yang besar, tetapi pada kenyataannya itu akan berakhir dengan sangat cepat. Mari kita lihat sebuah contoh, dengan asumsi bahwa kita perlu menyimpan voltase yang diukur dalam satu sel setiap 15 detik.

1.000.000 catatan dengan satu catatan dalam 15 detik memberikan catatan per menit:
1.000.000 / (4 * 60 menit / jam * 24 jam / hari) = 173,6 hari.
Dengan kata lain, EEPROM Anda akan kehabisan cadangan sejuta catatan dalam waktu kurang dari 6 bulan.

Di bawah ini adalah grafik yang menunjukkan waktu pemakaian (dalam tahun) berdasarkan periode pembaruan sel EEPROM tertentu. Garis batas untuk produk dengan usia harapan 10 tahun adalah satu pembaruan setiap 5 menit 15 detik untuk sebuah chip dengan sumber daya 1 juta catatan. Untuk EEPROM dengan sumber daya 100K, Anda dapat memperbarui sel tertentu tidak lebih dari sekali setiap 52 menit. Ini berarti Anda seharusnya tidak berharap untuk memperbarui sel setiap beberapa detik jika Anda ingin produk Anda bekerja selama bertahun-tahun, bukan bulan. Namun, skala di atas secara linear dalam perangkat ini juga ada faktor sekunder, seperti suhu dan mode akses.



Kurangi frekuensi


Cara paling mudah untuk menyelesaikan masalah adalah dengan lebih jarang menulis data. Dalam beberapa kasus, persyaratan sistem memungkinkan ini. Atau Anda hanya dapat merekam dengan perubahan besar apa pun. Namun, dengan entri yang terkait dengan peristiwa, waspadai kemungkinan skenario di mana nilainya akan terus berfluktuasi dan menyebabkan aliran peristiwa yang akan menyebabkan pemakaian EEPROM.
(Akan lebih baik jika Anda dapat menentukan berapa kali EEPROM telah direkam. Tetapi ini akan membutuhkan penghitung yang akan disimpan di EEPROM ... dan masalahnya berubah menjadi masalah keausan counter.)

Gangguan Pengurangan Nutrisi


Beberapa prosesor memiliki interupsi daya rendah yang dapat digunakan untuk menulis satu nilai terakhir ke EEPROM, sementara sistem dimatikan karena kehilangan daya. Secara umum, Anda menyimpan nilai yang menarik dalam RAM, dan hanya menyimpannya ke EEPROM ketika Anda mematikan daya. Atau mungkin Anda menulis EEPROM dari waktu ke waktu, dan menulis salinan lain ke EEPROM sebagai bagian dari prosedur mematikan untuk memastikan bahwa data terbaru ditulis.
Penting untuk memastikan bahwa ada kapasitor daya besar yang akan mempertahankan tegangan yang cukup untuk memprogram EEPROM untuk waktu yang cukup lama. Ini mungkin berhasil jika Anda perlu menulis satu atau dua nilai, tetapi bukan blok data yang besar. Perhatian, ada banyak ruang untuk kesalahan!

Buffer dering


Solusi klasik untuk masalah keausan adalah dengan menggunakan buffer cincin FIFO yang berisi entri nilai terakhir N. Anda juga perlu menyimpan pointer ke ujung buffer di EEPROM. Ini mengurangi keausan EEPROM dengan nilai yang sebanding dengan jumlah salinan dalam buffer ini. Misalnya, jika buffer melewati 10 alamat berbeda untuk menyimpan nilai tunggal, setiap sel tertentu dimodifikasi 10 kali lebih sedikit dan sumber tulis bertambah 10 kali. Anda juga akan memerlukan penghitung atau cap waktu yang terpisah untuk masing-masing dari 10 salinan, sehingga Anda dapat menentukan mana yang terakhir pada saat penutupan. Dengan kata lain, Anda membutuhkan dua buffer, satu untuk nilainya, dan satu untuk counter. (Jika Anda menyimpan penghitung di alamat yang sama, ini akan menyebabkan kemundurannya, karena itu akan meningkat setiap siklus pencatatan.) Kerugian dari metode ini adalahAnda membutuhkan ruang 10 kali lebih banyak untuk mendapatkan kehidupan 10 kali lebih lama. Anda bisa menjadi pintar, dan mengemas konter bersama dengan data. Jika Anda menulis sejumlah besar data, menambahkan beberapa byte ke penghitung bukanlah masalah besar. Tetapi bagaimanapun juga, Anda akan membutuhkan banyak EEPROM.
Atmel telah menyiapkan appnote yang berisi semua detail berdarah:
AVR-101: High Endurance EEPROM Storage: www.atmel.com/images/doc2526.pdf

Kasus khusus untuk penghitung jumlah catatan


Terkadang Anda perlu menyimpan penghitung, bukan nilai sendiri. Misalnya, Anda mungkin ingin tahu berapa kali perangkat dihidupkan, atau waktu pengoperasian perangkat Anda. Hal terburuk tentang penghitung adalah mereka terus-menerus mengubah bit yang paling tidak signifikan, membuat sel EEPROM lebih rendah lebih cepat. Tetapi di sini dimungkinkan untuk menerapkan beberapa trik. Ada beberapa ide cerdas dalam applet dari Microchip, seperti menggunakan kode Gray sehingga hanya satu bit dari penghitung multibyte yang berubah ketika nilai penghitung berubah. Mereka juga merekomendasikan penggunaan kode korektif untuk mengkompensasi keausan. (Saya tidak tahu seberapa efektif penggunaan kode tersebut, karena akan tergantung pada seberapa independen kesalahan dalam bit dalam byte counter, gunakan dengan risiko Anda sendiri, kira-kira Penulis). Lihat Appnote:ww1.microchip.com/downloads/en/AppNotes/01449A.pdf

Catatan: bagi mereka yang ingin tahu lebih banyak, Microchip telah menyiapkan dokumen yang berisi informasi terperinci tentang pengaturan sel EEPROM dan pemakaiannya dengan diagram:
ftp.microchip.com/tools /memory/total50/tutorial.html

Beri tahu saya jika Anda memiliki ide menarik tentang anti-pakai EEPROM.

Sumber: Phil Koopman, Better Embedded System SW
Betterembsw.blogspot.ru/2015/07/avoiding-eeprom-wearout.html

Catatan Penerjemah: dalam beberapa tahun terakhir, chip EEPROM telah muncul dengan organisasi penghapus halaman (mirip dengan chip FLASH), di mana dimungkinkan untuk secara logis menangani sel (baca, tulis, dan hapus) byte-by-bye, tetapi chip menghapus seluruh halaman tanpa terlihat oleh pengguna dan menimpanya dengan data baru. Itu Setelah menghapus sel pada alamat 0, kami benar-benar menghapus dan menulis ulang sel dengan alamat 0 ... 255 (dengan ukuran halaman 256 byte), jadi trik buffer tidak akan membantu dalam kasus ini. Ketika sumber daya rekaman dari sirkuit mikro seperti itu habis, tidak satu sel gagal, tetapi seluruh halaman. Dalam lembar data untuk sirkuit mikro semacam itu, sumber daya perekaman ditunjukkan untuk halaman , dan bukan untuk sel tertentu. Lihat, misalnya, lembar data pada 25LC1024 dari Microchip.

Source: https://habr.com/ru/post/id385213/


All Articles