3.5 Quad Serial Peripheral Interface (QuadSPI)
3.5.1 Introduction
Quad Serial Peripheral Interface (QuadSPI) 블록은 각각 최대 4개의 양방향 데이터 라인이 있는 하나 또는 두 개의 외부 시리얼 플래시 디바이스에 대한 인터페이스 역할을 한다.
아래 기능을 지원한다:
- 다양한 플래시 디바이스 공급업체를 지원하는 유연한 시퀀스 엔진.
- 싱글, 듀얼, 쿼드 그리고 옥탈 모드의 작동.
- 시리얼 플래시 클록의 모든 에지에서 데이터가 생성되는 DDR/DTR 모드.
- DDR과 SDR 모드에서 데이터 샘플링을 위한 플래시 데이터 스트로브 신호 지원.
- AMBA AHB 버스(64비트 폭 인터페이스)나 IP 레지스터 공간(32비트 액세스)을 통해 RX 버퍼 데이터를 읽기 위한 DMA 지원.
3.5.2 Hardware Operation
일부 보드에는 Quad SPI NOR - N25Q256A가 장착되어 있고, 일부 다른 보드에는 S25FL128S가 장착되어 있다. 보드의 Quad SPI NOR 타입을 확인한 다음 올바르게 구성한다.
N25Q256A는 고성능 다중 입력/출력 시리얼 Flash 메모리 디바이스이다. 혁신적인 고성능 듀얼 및 쿼드 입력/출력 명령어(instruction)는 READ와 PROGRAM 작업을 위한 전송 대역폭을 두 배나 네 배로 늘릴 수 있다. 메모리는 512(64KB) 메인 섹터로 구성되며, 한번에 64KB 섹터를 지울 수 있다. 이 디바이스는 128MB 이상의 메모리에 액세스할 수 있는 3바이트나 4바이트 주소 모드를 제공한다. 4바이트 주소 모드가 활성화되면, 주소를 필요로 하는 모든 커맨드는 4바이트 주소 모드 커맨드(ENTER 4-BYTE ADDRESS MODE 커맨드와 EXIT 4-BYTE ADDRESS MODE 커맨드)로 진입하고 종료해야 한다. 4바이트 주소 모드는 비휘발성 구성 레지스터로 활성화될 수도 있다. 메모리는 세 가지 다른 프로토콜(Extended SPI(듀얼과 쿼드 작동으로 업그레이드된 표준 SPI 프로토콜), Dual I/O SPI와 Quad I/O SPI)로 작동할 수 있다. 각 프로토콜에는 DTR 모드에서 READ 작업을 수행하는 고유한 커맨드가 포함되어 있다. 이는 더 낮은 클럭 주파수에서 실행하면서, 높은 데이터 처리량을 가능하게 한다.
S25FL128S 디바이스는 비휘발성 플래시 메모리 제품이다. Serial Peripheral Interface(SPI)로 호스트 시스템에 연결된다. 전통적인 단일 비트 시리얼 입/출력 SPI(SIngle I/O나 SIO)는 옵션인 2비트(Dual I/O나 DIO)와 4비트(Quad I/O나 QIO) 시리얼 커맨드도 물론 지원된다. 또한 클럭의 양쪽 에지에서 주소를 전송하고 데이터를 읽는 SIO, DIO와 QIO에 대한 Double Data Rate (DDR) 읽기 커맨드에 대한 지원을 추가한다.
3.5.3 Software Operation
Flash 기반 임베디드 Linux 시스템에서, 여러 Linux 기술이 파일 시스템을 구현하기 위해 함께 작동한다. 아래 그림은 일부 표준 컴포넌트 사이의 관계를 보여준다.
Linux OS를 위한 MTD 서브시스템은 Flash와 RAM 같은 메모리 디바이스에 대한 일반적인 인터페이스로, 물리적인 메모리 디바이스에 간단한 읽기, 쓰기, 삭제 액세스를 제공한다. mtdblock 디바이스라고 불리는 디바이스는 JFFS, JFFS2와 CRAMFS 파일 시스템으로 마운트될 수 있다. SPI 액세스를 추가하여, Quad SPI NOR MTD 드라이버는 커널의 MTD 데이터 Flash 드라이버를 기반으로 한다. 초기화 단계에서, Quad SPI NOR MTD 드라이버는 JEDEC ID를 읽어 데이터 Flash를 감지한다. 그런 다음, 드라이버는 MTD 디바이스를 추가한다. SPI NOR MTD 드라이버는 NOR Flash를 읽고, 쓰고, 삭제하는 인터페이스도 제공한다.
3.5.4 Driver Features
이 Quad NOR 드라이버 구현은 아래 기능을 지원한다:
- MTD 드라이버 상위 레이어에 필요한 정보 제공.
3.5.5 Source Code Structure
Table 29. QuadSPI Driver File
File | Description |
---|---|
drivers/mtd/spi-nor/core.c | SPI-NOR 프레임워크 |
drivers/spi/spi-fsl-qspi.c | Quad SPI Driver |
3.5.6 Menu Configuration Options
Quad SPI 드라이버를 활성화하려면, 아래 옵션을 설정해야 한다:
- Device Drivers >Memory Technology Device (MTD) support > Freescale Quad SPI controller
구성을 위해 Quad Spi를 활성화하도록 설정한다.
- CONFIG_MTD_SPI_NOR: SPI 디바이스 드라이버와 SPI-NOR 디바이스 드라이버에서 사용할 수 있는 SPI NOR를 위한 프레임워크이다.
- CONFIG_SPI_FSL_QUADSPI: 마스터 모드에서 Quad SPI 컨트롤러에 대한 지원을 활성화한다.