외부 메모리
이 챕터에서는 내장형 GUI를 위한 외부 메모리를 선택할 때 도움이 될만한 내용을 중점적으로 살펴봅니다. 이 챕터를 읽기 전에 사전 고려 사항 및 MCU를 읽어보면 적합한 외부 메모리를 선택할 때 중요하게 고려해야 할 요인을 파악할 수 있습니다.
TouchGFX GUI 애플리케이션을 실행할 때는 프레임 버퍼(들), 비트맵, 글꼴, 번역 등을 저장하기 위한 외부 메모리가 필요한 경우가 있습니다. TouchGFX GUI를 실행하는 데 외부 메모리가 반드시 필요한 것은 아니지만, 프레임 버퍼(들)를 저장하기 위해서는 내부 RAM(MCU 내)이나 외부 RAM이 필요하고 데이터를 저장하기 위해서는 내/외부 플래시가 필요합니다.
아래 개요에는 STM32 MCU와 함께 사용할 수 있는 외부 메모리가 나와 있습니다. 예시로 나와 있는 메모리 중 일부는 직렬 및 병렬 인터페이스에서 모두 사용이 가능합니다.
STM32 마이크로컨트롤러마다 외부 메모리 인터페이스가 다르므로 서로 다른 외부 메모리에 연결할 수 있습니다.
비휘발성 메모리
GUI 애플리케이션에서 비휘발성 스토리지(플래시)는 주로 비트맵, 글꼴, 번역 및 TouchGFX 애플리케이션 코드와 같은 그래픽 데이터 자산의 일부 또는 전체를 저장하는 데 사용됩니다. 비휘발성 메모리는 STM32 제품에서 지원되며, 병렬/직렬 메모리와 서로 다른 구성을 사용하여 다양한 유형의 MCU 인터페이스에 연결할 수 있습니다.
비휘발성 스토리지를 선택할 때는 다음을 고려합니다.
- 밀도(용량)
- 성능
- 인터페이스 유형(병렬/직렬)
- BOM(Bill of Material)
NOR 플래시
NOR 플래시는 메모리의 어떤 영역이든 랜덤 액세스가 가능한 비휘발성 메모리입니다.
NOR 플래시의 범위는 보통 128 Mbits ~ 2 Gbits입니다.
예를 들어, 해상도가 480x320이고 색심도가 16 bpp인 사용자 인터페이스의 경우 풀 스크린 배경 이미지를 표시하려면 최대 300 Kbytes가 필요합니다. 여기서 버튼, 슬라이더, 아이콘, 사용 글꼴, 언어 수 등에 필요한 추가 비트맵은 고려하지 않았습니다. 256 Mbits(32MB) NOR 플래시는 고유한 풀 스크린 이미지를 최대 100개까지 저장할 수 있으며, 필요한 그래픽 자산의 나머지를 추가하면 저장 개수가 적어집니다.
NOR 플래시는 외부 플래시가 읽기 작업을 위해 내부 메모리처럼 보여지는 메모리 매핑 모드로 사용할 수 있습니다. 이 모드에서는 CPU가 정지된 저전력 모드에서도 시스템 마스터(예: DMA, LTDC, DMA2D, GFXMMU 또는 SDMMC)가 메모리에 자체적으로 액세스할 수 있기 때문에 모바일 및 웨어러블 애플리케이션에 가장 적합합니다.
NOR 플래시 메모리에는 다양한 인터페이스 옵션이 제공됩니다.
- 병렬 NOR 플래시(x8 또는 x16 인터페이스 포함)
- Serial NOR 플래시(직렬 메모리 및 하이퍼버스 플래시를 위한 싱글, 듀얼, 쿼드 및 옥타 데이터 라인)
직렬 NOR 플래시 메모리
직렬 NOR 플래시 메모리는 그래픽 애플리케이션에서 저장공간으로 널리 사용됩니다.
이러한 유형의 메모리에는 다음과 같은 장점이 있습니다.
- 높은 주파수
- PCB(Printed Circuit Board) 면적 단순화 및 축소
- 주소 지정 가능 영역이 최대 256 MB인 메모리 매핑 모드
- 4 ~ 12개의 핀이 필요함
NOR 싱글, 듀얼, 쿼드 및 옥타 플래시 메모리
NOR 플래시 메모리는 다양한 데이터 라인 구성에 사용할 수 있습니다.
- 싱글
- 듀얼
- 쿼드
- 옥타
데이터 라인이 더 많은 직렬 NOR 플래시 메모리로 전환하면 메모리 인터페이스의 성능과 대역폭을 개선할 수 있지만, STM32 제품을 연결하는 데 필요한 핀의 개수가 더 많아지게 됩니다.
아래에는 데이터 라인의 개수에 따른 SPI 메모리에 대한 개요가 나와 있습니다.
병렬 NOR 플래시 메모리
병렬 NOR 플래시 메모리는 성능과 구성 측면에서 직렬 플래시 메모리와 동일한 장점이 있습니다. 병렬 NOR 플래시는 메모리 매핑 모드로 구성할 수 있으며 그것은 마치 내부 메모리처럼 액세스가 가능합니다. 병렬 NOR 플래시와 직렬 NOR 플래시는 핀의 개수와 PBC의 복잡성에서 차이가 있습니다.
NOR 플래시 메모리에는 주소에 최대 24개, 데이터에 최대 16개로, 총 47개의 핀이 필요합니다.
NAND 플래시 메모리
NAND 플래시 메모리는 대량의 그래픽 자산과 더 빠른 쓰기 및 지우기 작업을 요하는 그래픽 애플리케이션에 적합합니다. NAND 플래시 메모리는 메모리 매핑 모드에서 구성이 불가능하므로 코드 실행 시에는 사용하지 않는 것이 좋습니다.
NAND 플래시의 범위는 1 Gbit ~ 512 Gbits입니다.
NAND 플래시를 사용할 때는 RAM에서 캐시를 사용해야 하는 경우가 종종 있습니다. 이렇게 해야 현재 사용되는 그래픽 자산을 RAM으로 옮기고 이를 캐시에서 끌어올 수 있습니다.
eMMC 메모리
MMC 협회 규격인 eMMC(Embedded Multi Media Card)는 마스터 통합 컨트롤러와 더불어 NAND 플래시에 해당합니다. eMMC의 확실한 이점 중 하나는 제조업체가 제품 개발의 다른 부분에 더 많은 시간을 할애하여 시장 출시 기간을 단축할 수 있도록 패키지에서 플래시 메모리에 대한 표준 인터페이스와 관리 기능을 제공하는 컨트롤러의 통합입니다.
eMMC flash 플래시의 범위는 2 Gbits ~ 128 Gbits입니다.
eMMC는 NAND와 NOR에 비해 랜덤 읽기 성능이 비교적 낮습니다. 따라서 이 랜덤 읽기의 속도 문제를 해결하기 위해 캐시를 추가해야 할 수 있습니다.
eMMC 플래시 메모리에는 데이터에 8개, 제어에 2개로, 총 최대 10개의 핀이 필요합니다.
휘발성 메모리
외부 휘발성 메모리는 내부 MCU RAM이 부족한 경우에 프레임 버퍼를 저장하는 데 주로 사용되며, 경우에 따라 메모리 매핑 모드가 아닌 플래시에서 자산을 캐싱하는 데에도 사용됩니다. 이 섹션에서는 GUI를 실행하는 내장형 시스템에서 공통적으로 사용되는 SRAM, SDRAM 및 PSRAM을 중점적으로 살펴보겠습니다. 하지만 다른 변형 버전도 출시되어 있으며, 메모리 제조사들은 "하이퍼 RAM", "IoT RAM", "옥타 RAM"용 메모리에 대해 서로 다른 명명 체계를 사용하고 있습니다. 이를 지원하는 STM32 MCU를 찾을 수 있다는 것이 공통점입니다.
적합한 외부 RAM을 선택하려면 다음 사항을 염두해야 합니다.
- 밀도(용량)
- 성능
- 전력 소모
- 인터페이스/핀 수
- 프레임 버퍼 전략
SRAM
SRAM은 전원이 공급되는 동안 비트 데이터를 유지하는 정적 랜덤 액세스 메모리입니다. 일반적으로 SRAM은 액세스 속도가 더 빠르지만 DRAM보다 가격이 더 비싸며 밀도도 작습니다. SRAM은 일반적으로 DRAM에 비해 더 빨리 액세스가 가능하므로 애니메이션과 크기 조정, 회전 등이 더 많이 필요한 GUI에 적합합니다. SRAM은 동기 모드와 비동기 모드가 모두 지원되며, 동기 모드는 더 높은 대역폭을 제공하지만 인터페이스가 더 복잡합니다.
Note
SDRAM
SDRAM은 동적 랜덤 액세스 메모리로서, 각 데이터 비트를 커패시터에 저장하므로 동일한 양의 데이터를 저장할 때 SRAM보다 물리적 공간을 적게 차지합니다. 또한 데이터를 유지하기 위해 계속 새로 고침을 해야 하므로 SRAM에 비해 전력 소모량이 많습니다.
SDRAM 밀도의 범위는 보통 16 Mbit ~ 512 Mbit이며, 100 ~ 200 MHz의 주파수에서 실행되는 8비트, 16비트 및 32비트 인터페이스에서 사용할 수 있습니다.
듀얼 프레임 버퍼 전략에서는 최대 18 Mbits의 RAM이 필요하므로, 24 bpp 800*480 해상도로 두 개의 프레임 버퍼를 저장하려면 32 Mbits SDRAM이 가장 적합합니다.
PSRAM
PSRAM은 SRAM 인터페이스를 탑재한 DRAM(제어 로직)의 내부 구조를 가진 유사 정적 랜덤 액세스 메모리로, 밀도는 보통 8 ~ 256 Mbits입니다. PSRAM은 기존의 SDRAM이나 SRAM에 비해 속도가 빠르고 전력 소모가 적다는 장점이 있습니다.
추가 메모리
새로 나온 옥타 RAM 및 하이퍼 RAM 메모리는 싱글 및 듀얼 데이터 속도 모드에서 직렬 8비트 인터페이스를 사용하여 높은 처리 속도와 우수한 통합 기능을 제공합니다.
외부 RAM 밀도 선택
프레임 버퍼(들)를 외부 RAM에 배치하려는 경우 아래 표에서 현재 출시되어 있는 다양한 RAM 밀도 정보를 살펴보시기 바랍니다.
이 외에 픽셀당 1, 2, 4, 8, 16 및 24비트(2로 나누면 싱글 프레임 버퍼에 필요한 밀도가 산출됨)로 이중 프레임 버퍼 설정을 실행하는 데 필요한 RAM에 관한 정보도 나와 있습니다.
경우에 따라 싱글 프레임 버퍼 설정으로 충분할 때도 있고, STM32 마이크로컨트롤러 중에서는 프레임 버퍼를 배치할 수 있을 만큼 내부 RAM이 충분한 것도 있습니다.