ทุกวันนี้หน่วยความจำแฟลชถูกใช้เพื่อเก็บรหัสโปรแกรมและ EEPROM (หน่วยความจำแบบอ่านอย่างเดียวที่ลบได้ด้วยระบบไฟฟ้า) ถูกใช้เพื่อเก็บข้อมูลถาวร ย้อนกลับไปเมื่อ 30 ปีก่อนก่อนที่แฟลชจะมา EEPROM จะถูกใช้เพื่อเก็บรหัสโปรแกรม
จริงๆ ROM (หน่วยความจำอ่านอย่างเดียว) มาก่อนจากนั้น PROM (ROM ที่ตั้งโปรแกรมได้เพียงครั้งเดียว), EPROM (PROM ลบข้อมูลด้วยแสง UV), EEPROM และแฟลชในที่สุด ROM ยังคงใช้สำหรับแอปพลิเคชันที่มีปริมาณมากและราคาต่ำ (เช่นการพูดถึงการ์ดอวยพร)
ความแตกต่างที่สำคัญกับไมโครคอนโทรลเลอร์ปัจจุบันคือคุณไม่สามารถเรียกใช้โค้ดจาก EEPROM ได้โดยทั่วไปและเป็นเรื่องที่น่าอึดอัดใจสำหรับโปรแกรมที่จะเก็บข้อมูลในแฟลช (ข้อมูลถูกเก็บไว้ในแฟลชเมื่อเช่นคุณใช้คำสำคัญ "const" ในการประกาศข้อมูลหรือกำหนดสตริง แต่ถูกจัดการเบื้องหลังโดยคอมไพเลอร์และลิงเกอร์)
สามารถใช้พื้นที่ EEPROM เพื่อเก็บการกำหนดค่าหรือข้อมูลอื่น ๆ ที่คุณต้องการให้ใช้งานได้ในการเริ่มต้นใหม่รวมถึงหากไมโครคอนโทรลเลอร์สูญเสียพลังงานและได้รับพลังงานสำรอง ในทางปฏิบัติคุณสามารถนึกถึง EEPROM ว่าเป็นฮาร์ดไดรฟ์ขนาดเล็กมากหรือการ์ด SD
ในไมโครคอนโทรลเลอร์ที่ไม่มี EEPROM เป็นไปได้ที่จะเก็บข้อมูลถาวรในหน่วยความจำแฟลช แต่สิ่งนี้กลายเป็นเรื่องยากเนื่องจากไมโครคอนโทรลเลอร์ไม่ได้ถูกออกแบบมาสำหรับสิ่งนี้และคุณต้องหาจุดพิเศษที่จะไม่เข้าไปยุ่งกับรหัสโปรแกรม กับลิงเกอร์ นอกจากที่กล่าวถึงด้านล่างคุณสามารถอัปเดต EEPROM มากกว่าแฟลชได้หลายครั้ง
ถ้าคุณทำข้อมูลโปรแกรมในแฟลชนี่ไม่ได้หมายความว่าคุณสามารถเข้าถึงข้อมูลเป็นตัวแปรในโปรแกรม C ของคุณเพราะไม่มีวิธีที่จะบอกคอมไพเลอร์ว่าตัวแปรเหล่านี้อยู่ในรหัสของคุณ (เช่นคุณไม่สามารถผูก const ตัวแปรในพื้นที่ของแฟลชนี้) ดังนั้นการอ่านมันจะต้องทำผ่านชุดรีจิสเตอร์พิเศษที่ใช้เขียนมัน หมายเหตุข้อ จำกัด นี้ใช้กับข้อมูลใน EEPROM ด้วยดังนั้นจึงไม่มีข้อได้เปรียบในเรื่องนี้
ในการตั้งโปรแกรมแฟลชหรือ EEPROM บล็อกหน่วยความจำก่อนจะต้องถูกลบ จากนั้นจะถูกตั้งโปรแกรม สำหรับแฟลชการเขียนมักจะทำบล็อกในเวลาเดียวกัน สำหรับ EEPROM นั้นสามารถทำได้โดยบล็อกหรือไบต์ในแต่ละครั้งขึ้นอยู่กับไมโครคอนโทรลเลอร์
สำหรับทั้งแฟลชและ EEPROMs มีจำนวนครั้งสูงสุดที่คุณสามารถอัปเดตได้ก่อนที่คุณจะหมดหน่วยความจำ หมายเลขนี้ให้ไว้ในแผ่นข้อมูลเป็นค่ารับประกันขั้นต่ำ โดยทั่วไปแล้วจะสูงกว่า EEPROM มากกว่าหน่วยความจำแฟลช สำหรับแฟลชฉันเห็นตัวเลขต่ำสุดที่ 1,000 สำหรับ EEPROMs ฉันเห็นตัวเลขสูงถึง 1,000,000
ข้อดีอย่างหนึ่งของ EEPROM ที่มีต่อแฟลชคือคุณสามารถลบได้หลายครั้งมากกว่าที่จะลบแฟลช
"ระบบที่ตั้งโปรแกรมได้เอง" นั้นหมายถึงว่าไมโครคอนโทรลเลอร์สามารถอัปเดตแฟลชของตัวเองในขณะที่ทำงาน โดยปกติคุณสมบัตินี้จะใช้เพื่ออัปเดตรหัสในฟิลด์ เคล็ดลับคือคุณต้องทิ้งโค้ดไว้ในระบบในขณะที่โปรแกรมหลักกำลังได้รับการอัพเดตเรียกว่า bootloader แบบแผนนี้ใช้ในระบบ Arduino เพื่อเขียนโปรแกรมชิป