하드웨어
MCU들의 부팅을 위한 플래시에 대한 유행이 변하는듯 하다.
ARM Core MCU 들은 초기 NOR 플래시를 사용하였고 NAND 플래시로 이동하였다.
그리고는 대용량을 위해 SD(MMC) 타입의 iNAND, eMMC 를 지원하고 이것들을 많이 사용하였다.
이런 흐름속에서 i386 CPU는 BIOS 프로그램을 NOR 플래시에 시리얼 플래시로 갈아타고 있었다.
지금은 모두 시리얼 플래시 즉 SPI-Flash 를 사용한다.
SPI-Flash 는 DAT, CLK, CS 3개의 라인으로 이루어진다.
엑세스 속도를 빠르게 하기 위해 데이타 라인은 2-bit 를 사용하고 지금은 4-bit 를 사용한다.
4-bit 를 사용하는 칩을 QSPI 라고 부른다.
클럭속도를 최대 100MHz 를 지원한다.
로컬버스 NOR 엑세스 속도보다 월등한 성능을 자랑한다.
요즘나오는 ARM Core MCU 들은 로컬 버스에 크게 신경쓰지 않는다.
디자인하기에도 로컬버스는 천대받고 있다. (속도도 넘 느려)
QSPI-Flash 를 사용하면 우선 DMA 전송이 기본이라는 것이다.
크기도 작고.. 가격은 용량대비 NAND 보다는 비싸다.
QSPI 플래시 사용은명령어 주고 해당하는 일을 수행하는 방식이다.
모든 플래시가 그렇듯 우선 ID를 읽어 칩의 정보를 수집한다.
지우기 명령, 느리게 읽기, 빠르게 읽기, 쓰기 명령 등이 존재한다.
NAND 플래시보다는 안정적인 느낌이다. (ECC 가 없으니 SW 개발하기 넘 편하다.)
SPANSION, WINBOND, ATMEL, STMICRO, EON 등의 벤더에서 생산한다.
현재 나는 Xilinx 의 ZYNQ MCU 를 사용하여 프로젝트를 하고 있는 중이며
PS영역의 QSPI 플래시와 FPGA 파트인 PL 쪽에 QSPI IP를 넣어 사용하고 있다.
자연스럽게 QSPI 플래시 삽질을 하였다. 삽질이 끝나니 뿌듯하군 ^^
안녕하세요. 박찬규라고 합니다.
저는 이번에 GigaDevice사의 4Gb SPI NAND를 쓰려고 하는데요, 여기에 파일시스템을 올리는 것을 고려하고 있는데,
SPI NAND가 나온지 얼마 안되서 그런지 예제가 없더라구요. 혹시 도움이 될 만한 자료를 구할 수 있을까요...?
기본적인 Read/Program/Erase 등의 드라이버는 다 구현해 놨습니다. 동작도 잘 되고요...
참고로 MCU는 Cortex-M0 계열이고, 컴파일러는 KEIL을 씁니다.