Perangkat penyimpanan data SPI: kartu micro (SD), DataFlash, atau EEPROM serial?

8

Saya meninjau kembali beberapa kebiasaan desain saya, dan salah satunya di bawah pengawasan serius: perangkat penyimpanan berbasis SPI adalah kartu SD (mikro), untuk rasio harga-ke-kapasitas dan pada umumnya kecepatan yang lebih tinggi.

Di antara tiga jenis utama perangkat penyimpanan berbasis SPI - (micro) kartu SD, DataFlash dan 25Cxxseri sederhana SPI EEPROM (dan juga 24Cxxmempertimbangkan EEPROM pada mikrokontroler dan EEPROM I2C) yang merupakan media yang tepat untuk kasus penggunaan yang diberikan di bawah? Ingatlah bahwa saya menggunakan semua media sebagai perangkat blok mentah, sehingga argumen "kartu SD memerlukan sistem file" tidak berlaku.

Gunakan kasing:

  • Konfigurasi sistem dan data kalibrasi. Contoh: Alamat MAC untuk antarmuka Ethernet, tegangan yang diukur dari referensi tegangan terpasang.
  • Log. Contoh: data yang diambil dari sensor.
  • Sumber daya kode dan kode (terlalu besar untuk muat dalam memori program atau harus dibawa dengan mudah.) Contoh: pembaruan sistem, internasionalisasi dan string pelokalan, sumber daya antarmuka pengguna, font.
  • Keamanan dan manajemen hak digital. Contoh: kunci kriptografi (publik dan / atau pribadi, simetris dan / atau asimetris,) tanda tangan digital.
Maxthon Chan
sumber
1
Jawab dalam banyak kasus: Itu tergantung.
Turbo J
1
chip SPI telanjang bisa jauh lebih kecil dan lebih murah daripada kartu SD, saya telah melihat beberapa bagian BGA 2Mbyte seharga $ 2 atau lebih dan ukurannya 1,8x2,5mm, butiran beras
Sam

Jawaban:

11

Pada dasarnya, pilihan tergantung terutama pada dua kriteria: apakah data yang akan disimpan besar atau kecil, dan apakah itu sering ditulis ulang atau tidak:

  • EEPROM bagus untuk data kecil yang sering berubah. Alasannya adalah: itu dijual hanya untuk ukuran kecil, tetapi biasanya bisa dihapus satu byte. Apalagi daya tahan EEPROM sangat tinggi (jutaan siklus).
  • Flash sangat bagus untuk data besar yang tidak sering berubah. Ini tersedia murah untuk ukuran besar, tetapi ketika Anda perlu menimpa data, Anda dapat melakukannya hanya untuk seluruh halaman, yang bisa beberapa kB. Dan daya tahannya lebih di kisaran 100.000 siklus.

Saya tidak akan membahas lebih lanjut tentang perbedaan antara keduanya, sudah dibahas:

Mengenai kartu SD: Kartu SD adalah jenis flash yang dapat dilepas, dan karenanya, ia mengikuti batasan yang sama dengan flash biasa. Namun, biasanya menggunakan NAND flash sedangkan biasanya, chip flash serial menggunakan NOR flash. NAND flash lebih nyaman untuk menulis (halaman lebih kecil, lebih cepat dihapus) tetapi kurang dapat diandalkan. Anda mungkin mendapatkan blok buruk setelah beberapa saat, jika Anda banyak menulis. Levelling aus dapat mengurangi ini, tetapi tidak selalu diimplementasikan dalam kartu SD murah ( Apakah benar bahwa SD / MMC Card melakukan leveling aus dengan controller sendiri? ). Anda bisa mengimplementasikannya dalam perangkat lunak, tetapi itu tidak sepele.

Namun pilihan antarmuka (I2C atau SPI) sama sekali tidak terkait. I2C lebih lambat tetapi menggunakan pin lebih sedikit. EEPROM I2C juga biasanya lebih murah daripada SPI, tetapi Anda biasanya memutuskan untuk menggunakan satu atau yang lain tergantung pada cara Anda menghubungkan pin MCU dalam aplikasi Anda.

Sekarang, Anda telah memberikan kasus penggunaan khusus, jadi mari kita lihat satu per satu:

Konfigurasi sistem dan data kalibrasi

Nah, yang ini tidak menaruh banyak kendala: data ini biasanya sangat kecil dan tidak sering berubah. Jadi, di sini, yang paling sederhana adalah dengan meletakkannya di tempat yang biayanya lebih murah:

  • baik EEPROM MCU internal jika Anda memilikinya
  • atau beberapa flash eksternal jika Anda sudah membutuhkannya untuk tujuan lain
  • atau akhirnya kartu SD jika Anda tidak memiliki penyimpanan persisten lainnya. Namun perlu dicatat bahwa, karena kartu SD pada akhirnya dapat dihapus dan dimasukkan ke perangkat lain, data kalibrasi tidak akan konsisten lagi. Jadi, Anda mungkin ingin menghindari itu.

Jika tidak ada kebutuhan lain untuk penyimpanan persisten di perangkat Anda dan tidak ada EEPROM internal di MCU, Anda akhirnya bisa menggunakan halaman flash tertentu dalam flash MCU itu sendiri (jika MCU mengizinkan ini). Jika tidak, Anda dapat kembali ke EEPROM eksternal kecil.

Perhatikan bahwa dalam kasus khusus alamat MAC, ada EEPROM yang dijual dengan alamat MAC yang diprogram sebelumnya, dijamin unik (mis. Microchip 24AAxxx). Jadi itu akan menjadi cara untuk pergi, kecuali jika Anda secara resmi dikaitkan dengan blok alamat oleh IEEE atau bersedia mengambil risiko menggunakan alamat yang dikaitkan secara lokal.

Log

Ini biasanya besar, dan sering berubah. Besar artinya flash, bukan EEPROM. Jadi Anda bisa menggunakan chip flash atau kartu SD, tetapi jika log sering ditulis ulang, Anda sebaiknya menggunakan kartu SD. Kalau tidak, Anda berisiko kehabisan chip flash, dan jika itu disolder di papan, itu akan lebih sulit untuk diganti daripada kartu SD. Juga perhatikan bahwa, ketika menulis log dengan bersepeda di seluruh halaman flash, memakai leveling sebenarnya menjadi sepele untuk diterapkan.

Jika ini adalah log kecil, Anda beruntung, gunakan EEPROM (selama daya tahannya dapat diterima).

Perhatikan bahwa, jika daya tahan adalah masalah nyata, ada solusi tambahan dengan daya tahan yang praktis tak terbatas dan ukuran yang relatif besar: F-RAM dan MRAM. Tetapi ini membutuhkan lengan dan kaki, dan Anda tidak menyebut mereka sebagai pilihan. Juga perhatikan bahwa kedua teknologi baru ini mencapai kecepatan hapus / tulis yang jauh lebih baik daripada flash, jadi untuk pencatatan terus menerus, ini mungkin menarik.

Sumber kode dan kode

Biasanya besar, tetapi tidak sering berubah. Chip flash eksternal (biasanya flash NOR) sangat ideal untuk ini.

Keamanan dan manajemen hak digital

Yang ini lebih rumit. Jika benar - benar berisi data sensitif yang tidak boleh diekstraksi, lebih baik Anda benar-benar menggunakan kartu pintar dalam faktor bentuk SIM (akhirnya dengan beberapa firmware khusus di dalamnya). Tapi ini tentu saja mempersulit desain banyak . Solusi alternatif (lebih mudah dan lebih murah) mungkin merupakan chip keamanan khusus seperti seri Atmel AT88SC, tetapi perintah yang tersedia pada chip harus masuk akal untuk aplikasi spesifik Anda. Apa yang dapat dilakukan pada chip ini dan dalam kondisi apa harus direncanakan dengan hati-hati.

Jika Anda hanya membutuhkan keamanan "dasar", cara termudah adalah menggunakan MCE EEPROM internal. Ini tidak akan seaman kartu pintar atau chip khusus (yang berisi langkah-langkah keamanan spesifik, seperti perlindungan terhadap serangan cahaya, penanggulangan terhadap analisis daya / gangguan dalam chip, dll ...), tetapi ini adalah yang terbaik yang Anda bisa melakukan.

Jika tidak, jika tidak ada EEPROM internal, Anda akan berakhir dengan opsi yang sama seperti untuk konfigurasi / data kalibrasi. Namun, menggunakan chip eksternal untuk menyimpan data aman adalah risiko karena jalur data dapat dengan mudah dipantau dengan penganalisa logika sederhana, dan data sensitif diekstraksi. Jadi, bahkan jika EEPROM dikatakan lebih sulit untuk diubah daripada flash, memilih satu atau yang lain dalam kasus chip eksternal tidak membuat perbedaan dari sudut pandang keamanan.

Akhirnya, kartu SD jelas merupakan ide terburuk di sini, karena dapat dilepas. Data sensitif kemudian dapat dibaca dari PC, tanpa perlu perangkat keras khusus.

redup
sumber