임베디드 용어 정리
Flash Memory
minhyeok.lee
2025. 4. 15. 23:42
반응형
💾 Flash Memory란?
1. Flash Memory는 전원이 꺼져도 데이터가 유지되는 비휘발성 메모리(Non-volatile Memory)의 일종임
2. 오늘날 대부분의 임베디드 시스템, MCU, SSD, USB 등에서 널리 사용됨
📌 기본 개념
- 비휘발성 메모리: 전원 제거 후에도 데이터를 보존
- EEPROM과 달리 블록 또는 섹터 단위로 데이터를 지우고 씀
- NAND와 NOR 두 가지 기본 구조가 있음
🧠 내부 동작 구조
- 셀(cell): 트랜지스터 기반 저장 구조로 0 또는 1을 저장
- 페이지(page): 가장 작은 쓰기 단위 (보통 256~2048 bytes)
- 섹터/블록(block): 가장 작은 지우기 단위 (보통 4KB~64KB)
- 읽기(read): 개별 바이트 또는 페이지 단위 가능 (빠름)
- 쓰기(write): 페이지 단위로만 가능 (지우기 없이 덮어쓰기 불가)
- 지우기(erase): 반드시 블록 단위로 수행
📊 주요 특징
항목 | 설명 |
---|---|
비휘발성 | 전원이 꺼져도 데이터 유지 |
지우기 단위 | 일반적으로 4KB, 64KB 등 섹터 단위 |
쓰기 단위 | 페이지 단위 (보통 256B) |
쓰기 전에 지우기 필요 | 기존 데이터를 덮어쓰기 위해서는 반드시 해당 섹터 전체를 지워야 함 |
수명 | 보통 100,000~1,000,000번의 지우기/쓰기 사이클 |
속도 | 읽기 빠름, 쓰기 느림, 지우기는 매우 느림 |
XIP 지원 | 일부 Flash는 직접 실행 (Execute in Place, XIP) 가능 |
비용 | 비휘발성 메모리 중 가장 저렴하며, 고용량 구현이 용이 |
🔄 쓰기 과정 (일반적 순서)
- Flash Read: 기존 데이터 확인
- Flash Erase: 전체 섹터를 지움 (필수)
- Flash Program: 원하는 위치에 새 데이터를 씀
// Flash write 예시 (RP2040)
flash_range_erase(offset, FLASH_SECTOR_SIZE);
flash_range_program(offset, buffer, size);
🧩 Flash 종류
유형 | 설명 |
---|---|
NOR Flash | 빠른 읽기 속도, 코드 실행에 적합 (XIP 가능) |
NAND Flash | 높은 저장 밀도, 대용량 저장에 적합 (SSD, USB 등) |
⚠️ Flash 사용 시 주의점
- 섹터 단위 지우기 → 작은 데이터도 큰 단위로 삭제됨
- 쓰기 전 반드시 지우기 → 데이터를 덮어쓰려면 항상 erase 필요
- 수명 고려 → 잦은 쓰기/지우기는 수명을 단축시킴
- 전원 차단 위험 → 쓰기 중 전원 차단 시 데이터 손상 가능성
📦 MCU에서의 Flash 메모리 사용
사용 목적 | 예시 |
---|---|
부트로더 저장 | 펌웨어 업데이트 시 사용됨 |
프로그램 코드 저장 | MCU의 main code 저장 |
설정값/상태 저장 | EEPROM 대체용 저장 공간 |
파일시스템 저장 | LittleFS, SPIFFS 등 파일시스템 구동 시 사용 |
📚 관련 용어
- XIP (Execute in Place): Flash에서 직접 코드 실행
- Wear Leveling: Flash 쓰기 수명 분산 알고리즘
- Bad Block Management: 손상된 섹터를 우회 처리
- MTD (Memory Technology Device): Linux 기반 Flash 인터페이스
🧠 요약
1. Flash는 읽기 성능이 뛰어나고 대용량 구현에 적합
2. 쓰기 전 반드시 섹터 단위로 지우기가 필요하며, 쓰기/지우기 수명이 존재함
3. 설정 저장처럼 읽기 위주, 쓰기 적은 작업에 매우 적합하며, RTOS나 임베디드 환경에서 널리 사용됨
반응형