Tôi sẽ thảo luận về lập trình bộ nhớ flash, nhưng rất nhiều tài liệu sẽ tương tự như EEPROM (ROM lập trình có thể xóa bằng điện), vì bộ nhớ flash được lấy từ EEPROM vào giữa những năm 1980. Như được mô tả dưới đây, từ quan điểm vật lý, trạng thái mặc định là 1 giây. Nhưng quan trọng hơn, tôi sẽ giải thích tại sao có là một trạng thái mặc định - bạn không thể chỉ tùy tiện chương trình trên đầu trang của những gì đã được lập trình từ thời gian qua.
Flash flash hầu như luôn được chọn cho flash chương trình vì giao diện phù hợp nhất để đặt dữ liệu trong bản đồ bộ nhớ của vi điều khiển - địa chỉ đầy đủ và dữ liệu bắt chước RAM và cho phép truy cập ngẫu nhiên vào bất kỳ vị trí nào. Dữ liệu có thể được đọc một từ tại một thời điểm, trong đó một từ được định nghĩa là độ rộng dữ liệu của vi điều khiển, thường là 8, 16 hoặc 32 bit. Mặt khác, đèn flash NAND được phát triển để thay thế ổ đĩa cứng và hoạt động tuần tự.
Tuy nhiên lập trình trở nên phức tạp hơn một chút. Như đã đề cập, trạng thái mặc định cho flash NOR và các bộ nhớ không bay hơi khác như flash NAND, EEPROM và thậm chí EPROM là logic 1. Bạn không thể lập trình 1 vào các thiết bị này, bạn chỉ có thể lập trình 0. Vì vậy, ví dụ nếu bạn có một byte chứa 0x0123 và bạn muốn thay đổi nó thành 0x3210, bạn không thể làm như vậy trực tiếp như ghi trên một byte trong RAM.
Thay vào đó, các bit trong bộ nhớ phải bị xóa, điều này đặt chúng vào trạng thái 1 mặc định đã được đề cập. Điều này chỉ có thể được thực hiện trong các khối, không phải từ. Trên Microchip PIC32, mà tôi đã làm việc gần đây nhất, kích thước khối tối thiểu có thể bị xóa là 4096 byte. Vì vậy, nếu bạn muốn thay đổi chỉ một từ (32 bit), bạn sẽ phải đọc 4K bộ nhớ, xóa khối, sau đó ghi lại 4K bộ nhớ thành flash nhưng bao gồm giá trị 32 bit mới nếu cần. Việc xóa này có thể mất một thời gian - một phần tốt của một giây.
Sau đây là hình ảnh của một ô nhớ flash. Flash lưu trữ dữ liệu bằng cách loại bỏ hoặc đặt các điện tử trên cổng nổi. Khi các electron có mặt trên cổng nổi, không có dòng điện chạy qua bóng bán dẫn, chỉ ra 0. Khi các electron bị loại bỏ khỏi cổng nổi, bóng bán dẫn bắt đầu tiến hành, chỉ ra 1. (Đây là theo quy ước - nó có thể là cách khác nhưng sẽ yêu cầu biến tần trên tất cả các dòng dữ liệu.)
Xóa hoạt động. Trạng thái mặc định của các ô nhớ flash (một ô flash đơn cấp NOR) là 1 vì các cổng nổi không mang điện tích âm. Xóa một ô nhớ flash (đặt lại 1) bằng cách đặt một điện áp trên cổng nguồn và cổng điều khiển (dòng từ). Điện áp có thể nằm trong phạm vi từ -9V đến -12V. Và cũng áp dụng khoảng 6V cho nguồn. Các electron trong cổng nổi được kéo ra và chuyển về nguồn bằng đường hầm lượng tử . Nói cách khác, các đường hầm điện tử từ cổng nổi đến nguồn và chất nền.
Bởi vì việc xóa sử dụng điện áp cao, do đó, việc xóa trong các khối đòi hỏi diện tích chết ít hơn. Vì vậy, điện áp chỉ có thể được áp dụng cho toàn bộ hàng bóng bán dẫn tại một thời điểm.
Để viết, một ô flash NOR có thể được lập trình hoặc đặt thành 0 theo quy trình sau. Trong khi viết, một điện áp cao khoảng 12V được đặt vào cổng điều khiển (dòng từ). Nếu điện áp cao khoảng 7V được đặt vào Đường dây bit (đầu cuối cống), thì 0 được lưu trong ô. Kênh hiện được bật, vì vậy các electron có thể chảy từ nguồn đến cống. Dòng thoát nguồn đủ cao để khiến một số electron năng lượng cao nhảy qua lớp cách điện lên cổng nổi thông qua một quá trình gọi là phun electron nóng.
Để đọc, điện áp khoảng 5V được đặt vào cổng điều khiển và khoảng 1V cho cống. Trạng thái của ô nhớ được phân biệt bởi dòng chảy giữa cống và nguồn.
Tuổi thọ có thể sử dụng của bộ nhớ không bay hơi được đo bằng các chu kỳ xóa. Nhược điểm của NOR là số chu kỳ xóa là khoảng 1/10 so với bộ nhớ NAND. Nhiều phiên bản của PIC32 chỉ cho phép bộ nhớ flash được cập nhật 1000 lần, ít hơn 100.000 chu kỳ xóa thông thường cho EEPROM.
Vì vậy, nó không quá quan trọng nếu các nhà thiết kế đưa ra trạng thái mặc định là 1 hoặc 0 (họ đã chọn giá trị cho phép thực hiện dễ dàng nhất); điều quan trọng là người ta phải xóa một khối flash trước (cần có thời gian), sau đó lập trình lại toàn bộ khối (ngay cả khi một từ duy nhất đang được thay đổi (cần một lượng RAM đáng kể).
Việc xóa khối này của thiết bị quay trở lại các EPROM đầu tiên (ROM có thể lập trình xóa được), tiến hành EEPROM Mã được lập trình thành chip (như 16KB 27128) và được đặt trong ổ cắm. Những con chip này có một cửa sổ nhỏ trên đỉnh cho phép ánh sáng chiếu vào khuôn. Khi chương trình phải được thay đổi, các con chip được đưa vào một cục tẩy UV trong 20 phút hoặc lâu hơn, nó sẽ xóa toàn bộ con chip. Sau đó, chip sẽ được lập trình với chương trình mới.
Một số EEPROM yêu cầu xóa các khối bộ nhớ trước khi lập trình; những người khác cho phép viết một byte tại một thời điểm (bộ điều khiển EEPROM thực sự xóa byte đầu tiên và các chương trình của nó).