Günümüzde, Flash bellek program kodunu tutmak için ve EEPROM (Elektrikle Silinebilir Salt Okunur Bellek) kalıcı verileri tutmak için kullanılır. Yaklaşık 30 yıl önce, Flash gelmeden önce, EEPROM'lar program kodunu tutmak için kullanıldı.
Aslında ROM (Salt Okunur Bellek) önce geldi, ardından PROM (yalnızca bir kez Programlanabilir ROM), EPROM (UV ışığı ile PROM Silinebilir), EEPROM ve son olarak Flash. ROM'lar hala çok yüksek hacimli, düşük maliyetli uygulamalar (örneğin, tebrik kartları) için kullanılmaktadır.
Mevcut mikrodenetleyicilerdeki önemli fark, genellikle EEPROM dışında bir kod yürütememenizdir ve programların flaş içinde veri depolaması gariptir. (Örneğin, veri bildiriminde "const" anahtar sözcüğünü kullandığınızda veya bir dize tanımladığınızda, ancak derleyici ve bağlayıcı tarafından sahne arkasında işlenen veriler flaşta depolanır.)
EEPROM alanı, mikro denetleyicinin gücü kesilmiş ve daha sonra yedeklenmiş olması da dahil olmak üzere, yeniden başlatmalarda bulunmasını istediğiniz yapılandırmayı veya diğer verileri tutmak için kullanılabilir. İşlevsel olarak, EEPROM'u çok küçük bir sabit sürücü veya SD kart olarak düşünebilirsiniz.
EEPROM içermeyen mikrodenetleyicilerde, kalıcı verileri flash bellekte saklamak mümkündür, ancak mikrodenetleyiciler bunun için gerçekten tasarlanmadığından ve program koduna müdahale etmeyecek özel bir yer bulmanız ve bunu bir kenara bırakmanız gerektiğinden bu zorlaşır. bağlayıcı ile. Ayrıca, aşağıda belirtildiği gibi, EEPROM'u genellikle flaştan çok daha fazla güncelleyebilirsiniz.
Program verilerini flash olarak yaparsanız, bu, C programınızda verilere değişken olarak erişebileceğiniz anlamına gelmez, çünkü derleyiciye bu değişkenlerin kodunuzda nerede olduğunu söylemenin bir yolu yoktur (yani bir sabit bağlayamazsınız) ) Bu nedenle, bunları yazmak, bunları yazmak için kullanılan özel kayıt kümeleri aracılığıyla yapılmalıdır. Bu kısıtlamanın EEPROM'daki veriler için de geçerli olduğunu unutmayın, bu nedenle bu konuda bir avantajı yoktur.
Flaş veya EEPROM'u programlamak için, önce bir bellek bloğunun silinmesi gerekir. Sonra programlanır. Flaş için, yazma genellikle bir seferde bir blok yapılır. EEPROM'lar için, mikro denetleyiciye bağlı olarak bir seferde bloklar veya bir bayt ile yapılabilir.
Hem flaş hem de EEPROM'lar için, belleği takmadan önce maksimum güncelleme sayısı vardır. Bu sayı veri sayfasında minimum garanti edilen değer olarak verilir. EEPROM'lar için genellikle flash bellekten çok daha yüksektir. Flaş için 1000 kadar düşük sayılar gördüm. EEPROM'lar için 1.000.000 kadar yüksek sayılar gördüm.
EEPROM'ların flaşa göre bir avantajı, flaşı silebileceğinizden daha fazla silmenizdir.
"Sistem İçi Kendinden Programlanabilir", mikrodenetleyicinin çalışırken kendi flaşını güncelleyebileceği anlamına gelir. Özellik genellikle alandaki kodu güncellemek için kullanılır. İşin püf noktası, ana program güncellenirken bootloader adı verilen sistemde bazı kodlar bırakmanızdır. Bu şema Arduino sisteminde çipi programlamak için kullanılır.