MCU
MCU(Microcontroller Unit)는 모든 임베디드 솔루션의 핵심 부품으로, 비용과 기능면에서 다양한 옵션이 제공됩니다.
그래픽용 MCU를 선택할 때는 지원되는 디스플레이 인터페이스와 MCU 패키지, 크기 및 달성 가능한 그래픽 성능을 고려해야 하며, 그래픽 성능은 두 가지 주요 요인에 따라 달라집니다.
이미지 구성
- MCU에 통합된 그래픽 가속기의 가용성
- 시스템 내 캐시 메모리의 가용성
메모리 액세스 및 대역폭
- 클록 주파수와 서브시스템 버스 주파수
- 내부 플래시 및 RAM 메모리에 대한 액세스
그래픽과 더불어 수행하는 애플리케이션의 다른 측면(모터 제어, 무선 등)도 중요하게 고려해야 하는데, 이들 역시 MCU 선택에 영향을 미칠 수 있기 때문입니다.
이 페이지에서는 GUI 기반 애플리케이션에 사용할 STM32 MCU를 선택할 때 사용 가능한 MCU 옵션과 고려해야 할 매개변수에 대해 살펴보겠습니다.
Further reading
주파수
코어 주파수는 화면 새로 고침, 화면의 유동성 그리고 애니메이션 측면에서 그래픽 애플리케이션의 성능에 상당한 영향을 미칩니다.
또한 내/외부 메모리에서 디스플레이 프레임 버퍼로 전송할 수 있는 데이터의 양과 예상 및 애니메이션 가능성에도 영향을 줍니다.
주파수가 높을수록 주어진 기간 내에 더 많은 데이터를 전송할 수 있고 좀 더 복잡한 애니메이션을 만들 수 있습니다.
STM32 제품의 코어 주파수는 최대 480 MHz입니다.
Note
그래픽 서브시스템 주파수
코어 CPU 주파수를 그래픽 서브시스템 주파수와 구별해야 합니다. 그래픽 서브시스템 주파수에는 내부 버스의 주파수와 그래픽 가속기의 주파수를 비롯해 내/외부 메모리의 액세스 속도가 포함됩니다.
그래픽 서브시스템 주파수 역시 전반적인 그래픽 성능에 큰 영향을 미칩니다.
예시
STM32H7의 내부 RAM에서 실행할 때 이론적인 코어 및 서브시스템 성능을 평가하는 예시는 다음과 같습니다.
- CPU 코어가 480 MHz에서 실행 중입니다.
- 64비트 AXI 버스 주파수는 240 MHz입니다.
- LTDC(LCD-TFT Display Controller)는 64비트 AXI 버스를 사용하고 10 사이클에 8회 전송을 수행합니다.
- 내부 RAM에서는 눈에 띄는 지연이 발생하지 않습니다(대기 상태 0초).
LTDC 주변 장치에서 액세스를 할 때 내부 RAM의 대역폭은 다음과 같습니다.
- 대역폭 = 240MHz x 8/10 x 8바이트 = 1,536MB/s.
대역폭이 이와 같을 때 내부 RAM은 32 bpp 색 깊이에서 800x480 해상도에 대해 1000 fps를 보장할 수 있습니다. 보통은 LTDC와 내부 RAM의 대역폭에 병목이 발생하지 않도록 픽셀 클록, 포치(porch) 등을 조정하여 디스플레이로의 전송을 60 fps로 제한합니다.
임베디드 하드웨어 가속 기능
STM32 MCU마다 내장된 하드웨어 가속 기능이 서로 다른데, 이러한 가속 기능은 고성능 그래픽 애플리케이션을 달성하는 데 도움이 됩니다.
Chrom-ART
Chrom-ART는 그래픽 작업에 도움이 되는 고급 DMA로, DMA2D라고도 불립니다.
다수의 STM32 플랫폼에 통합되어 있는 Chrom-ART 가속기는 CPU 부하 없이 이미지를 조작 및 전송할 수 있습니다. 또한 색상 채우기, 이미지 복사, 혼합, 픽셀 형식 변환 등 대부분의 그래픽 작업을 가속할 수 있습니다.
Chrom-ART 가속기는 두 계층을 블렌딩하여 초기 픽셀 형식을 원하는 출력 픽셀 형식으로 변환하고, 단 한 번의 작업으로 메모리 도착지에 결과를 전송할 수 있습니다.
또한 CLUT(Color Look Up Table)를 사용하는 색상 형식도 지원하므로 메모리 절감에 도움이 됩니다.
Chrom-ART가 활성화된 상태에서 CPU 부하가 82%에서 4%로 감소하는 STM32F496-EVAL 보드에서 실행 중인 애플리케이션의 예시입니다.
또한 STM32H7 제품에서는 YCbCr 형식에서 RGB 형식으로 변환하는 기능이 Chrom-ART 주변 장치에 추가되었습니다. JPEG 하드웨어 코덱과 이 기능을 함께 사용하면 JPEG 이미지를 인코딩 및 디코딩할 때 CPU의 부담을 줄일 수 있습니다.
위에 나열된 기능을 갖춘 Chrom-ART 가속기는 그래픽 애플리케이션에 큰 이점을 제공합니다. 선택한 MCU에서 사용 가능한 경우, TouchGFX는 모든 Chrom-ART 기능을 처리하고 가능한 모든 그리기 작업을 CPU가 아닌 Chrom-ART 주변 장치로 리디렉션합니다.
Chrom-ART 주변 장치는 고성능 STM32 제품군에서 제공됩니다.
Further reading
JPEG 하드웨어 코덱
STM32H7 및 STM32F7 제품군은 이미지와 비디오를 인코딩 및 디코딩할 수 있도록 하드웨어 JPEG 코덱을 제공합니다.
이는 UI 애플리케이션에서 비디오 파일을 재생하거나 JPEG 이미지를 표시해야 하는 경우에 중요한 기능입니다.
JPEG 이미지는 일반적으로 메모리를 적게 차지합니다. JPEG 하드웨어 코덱은 CPU 과부하 없이 런타임에 이미지를 디코딩할 수 있게 해줍니다.
일부 TouchGFX 데모에서는 JPEG 하드웨어 코덱을 사용하여 MJPEG 비디오를 재생하는 동안 CPU의 부하를 줄여줍니다.
Further reading
Chrom-GRC
일부 STM32 마이크로컨트롤러의 경우 직사각형이 아닌 새로운 형태의 디스플레이 추세에 맞춰 STM32 Chrom-GRC™(GFXMMU)를 주변 장치로 사용하고 있습니다.
Chrom-GRC™ 주변 장치를 사용하면 애플리케이션이 직사각형이 아닌 디스플레이를 처리할 때 프레임 버퍼를 저장하는 데 필요한 RAM의 용량을 줄일 수 있습니다.
원형 디스플레이의 경우 Chrom-GRC™는 메모리 요구 사항을 20%까지 줄여줍니다.
정사각형이 아닌 화면을 제어할 때 Chrom-GRC™ 주변장치를 반드시 사용해야 하는 것은 아니지만 사용하는 편이 좋습니다.
Further reading
내부 플래시
비트맵 리소스를 사용하는 GUI 애플리케이션에서는 데이터를 저장하는 데 비휘발성 메모리가 필요합니다. 내부 플래시에서의 실행 및 액세스 속도는 경우에 따라 외부 플래시보다 최대 2배가량 빠릅니다.
내부 플래시는 크기가 제한되어 있기 때문에 TouchGFX 프레임워크나 화면 정의 및 UI 로직을 저장하는 데 주로 사용하고, 비트맵 데이터는 외부 플래시에 저장되는 경우가 많습니다.
그래픽 애플리케이션에 사용되는 STM32 제품 포트폴리오의 내부 플래시 메모리 용량은 수 KB에서 수 MB사이입니다.
비트맵 데이터의 양이 내부 플래시 용량을 초과할 때는 외부 메모리가 필요할 수 있습니다.
Further reading
TouchGFX 플래시 메모리의 요구사항은 다음과 같습니다.
- 프레임워크: 60 KB ~ 100 KB.
- 화면 해상도 및 GUI 로직: 1 ~ 100 KB.
이러한 수치는 사용되는 프레임워크 기능 그리고 애플리케이션의 크기와 복잡성에 따라 달라집니다.
내부 RAM
프레임 버퍼(들)의 크기가 가용 메모리의 용량을 초과하지 않는 경우에는 내부 RAM을 사용하여 프레임 버퍼를 저장할 수 있습니다. 또는 설정에 외부 메모리를 추가할 수도 있습니다.
프레임 버퍼의 크기 계산은 너비, 높이 및 색심도에 따라 달라집니다. 예를 들어, HVGA 해상도(480x320)와 16비트 색상이 지원되는 디스플레이의 경우 하나의 프레임 버퍼에 필요한 메모리는 다음과 같습니다.
하나의 프레임 버퍼 크기 = 480 x 320 x 2 = 307,200바이트
그래픽 애플리케이션에 사용되는 STM32 제품의 내부 RAM 용량은 수 KB에서 수 MB사이입니다.
Further reading
TouchGFX RAM 요구 사항:
- 프레임워크: 10 KB ~ 30 KB
- 위젯: 1 KB ~ 15 KB
메모리 요구 사항은 애플리케이션마다 다를 수 있습니다.
LCD 컨트롤러
MCU 선정 역시 사용할 디스플레이 인터페이스와 해상도에 따라 달라집니다. 예를 들어 800x480 해상도는 데이터 전송 속도 측면에서 효율적인 인터페이스에서만 달성이 가능합니다. RGB-TFT 및 MPI-DSI 인터페이스는 SPI나 병렬 8080/6800보다 대역폭이 높은 경우가 많기 때문에 높은 해상도를 위해 주로 사용됩니다. 해상도가 낮은 디스플레이의 경우 보통 컨트롤러와 GRAM가 내장되어 있으므로 간단한 SPI 또는 8080/6800 인터페이스를 통해 연결이 가능합니다.
고해상도 디스플레이(WQVGA 이상)에는 컨트롤러와 GRAM이 주로 내장되지 않기 때문에 마이크로컨트롤러 쪽에 컨트롤러가 설치되어야 합니다. RGB-TFT 및 MIPI DSI 인터페이스가 내장된 STM32 MCU에는 컨트롤러가 존재합니다.
Further reading
패키지 및 I/O
필요한 I/O의 개수는 선택한 디스플레이 및 외부 메모리에 따라 다릅니다. 병렬 RAM/플래시로 병렬 디스플레이를 실행하려면 많은 수의 I/O가 필요하므로 패키지의 크기가 커질 수 있습니다.
메모리 연결
마이크로컨트롤러의 내부 플래시와 RAM의 용량이 충분하지 않은 경우에는 가장 적합한 외부 메모리 인터페이스를 탑재한 MCU를 선택하는 것이 중요합니다. STM32 제품은 NOR, NAND, SRAM, SDRAM, LPSDR SDRAM 및 PSRAM 메모리를 연결할 수 있도록 다양한 메모리 컨트롤러 주변 장치를 제공합니다.
FMC(Flexible Memory Controller) 및 FSMC(Flexible Static Memory Controller)
FMC는 정적 RAM을 지원하는 것 외에도 FSMC에 동적 RAM 지원(SDRAM)을 추가합니다. 빠른 외부 액세스 속도와 8비트, 16비트, 특히 32비트 데이터 버스가 지원되는 FMC는 외부 RAM에서 더 높은 처리량을 지원하므로 더 높은 해상도를 효과적으로 지원할 수 있습니다. FMC에서는 각 메모리 뱅크 별로 칩을 독립적으로 선택할 수 있습니다. FMC는 그래픽 스택에서 데이터를 위한 외부 플래시 메모리와 프레임 버퍼 및 힙 확장을 위한 외부 RAM 메모리를 제어할 수 있습니다.
직렬 메모리 인터페이스
STM32 제품에 따라 직렬 메모리 인터페이스가 내장되어 있어서 QSPI, PSRAM, OPI PSRAM 및 하이퍼 RAM 메모리와 함께 싱글, 더블, 쿼드, 옥타 및 하이퍼 버스 플래시 메모리를 연결할 수 있습니다. 직렬 고속 메모리 인터페이스는 메모리 매핑 모드에서 최대 256 MB, 간접 모드에서 4 GB까지 제어할 수 있습니다.
병렬 인터페이스에 비해 직렬 메모리 인터페이스는 저가의 외부 플래시 메모리를 소형 패키지에 연결하도록 허용하기 때문에 사용되는 핀 수를 줄일 수 있습니다.
Further reading
STM32 밸류 라인 제품
가격 최적화를 위해 STM32H7 및 STM32F7 플랫폼은 내부 플래시의 용량이 제한된 밸류 라인 제품을 제공합니다. 이러한 제품에서는 그래픽 리소스가 외부 플래시에 저장됩니다.
Cortex®-M 코어
STM32 MCU는 다양한 ARM Cortex®-M 아키텍처로 출시되어 있습니다. 다음은 STM32에서 그래픽을 실행하는 데 가장 많이 사용되는 코어입니다.
Cortex®-M0+
Cortex®-M0+는 단순한 아키텍처와 저렴한 가격이 특징으로, 낮은 해상도에서 실행되는 소형 정적 그래픽 애플리케이션에 적합합니다.
Cortex®-M4
Cortex®-M4는 M0+보다 많은 기능을 제공하며 계산 속도가 빠릅니다. 여기에는 DSP 명령어 세트와 단정도(single precision) FPU 장치가 포함되어 있습니다. 이들 명령어는 CPU의 부하를 줄이고 계산 속도를 높여줍니다.
Cortex®-M7
Cortex®-M7에는 더 복잡한 아키텍처 뿐만 아니라 DSP 명령어 세트가 포함되어 있으며, 데이터와 명령어를 위한 최대 16 KB의 Level 1 캐시 메모리와 배정도(double precision)를 갖춘 보다 효율적인 FPU 장치가 함께 제공됩니다. 이러한 캐시 메모리는 페치(fetch) 시간을 최적화하기 위해 데이터와 명령어를 계산 장치 주변에 배치할 수 있게 해줍니다.
기능 개요
기능 | Cortex-M0+ | Cortex-M4 | Cortex-M7 |
---|---|---|---|
DMIPS/MHz 범위 | 0.95 ~ 1.36 | 1.25 ~ 1.95 | 2.14 ~ 3.23 |
Core Mark®/MHz | 2.46 | 3.42 | 5.01 |
DSP(Digital Signal Processing) 확장 | 아니요 | 예 | 예 |
부동 소수점 하드웨어 | 아니요 | 예(SP) | 예(SP + DP) |
빌트인 캐시 | 아니요 | 아니요 | 예(4 ~ 64KB에서 선택), I-캐시 및 D-캐시 |
버스 프로토콜 | AHB Lite,고속 I/O | AHB Lite, APB | AXI4, AHB Lite, APB, TCM |
듀얼 코어 잠금 단계 지원 | 아니요 | 아니요 | 예 |
Level 1 캐시:
STM32H7 및 STM32F7 제품군에는 명령어와 데이터 모두를 저장하는 최대 16 KB의 L1-캐시가 포함되어 있습니다. L1-캐시는 CPU와 가까운 위치에 일련의 데이터 또는 명령어를 저장하므로 CPU가 반복적으로 사용되는 동일 데이터를 계속해서 가져올 필요가 없습니다.
Further reading
듀얼 코어
STM32H7 시리즈에는 듀얼 코어 라인이 포함되어 있습니다.
Arm® Cortex®-M7 코어와 Cortex®-M4 코어는 각각 최대 480 MHz와 240 MHz를 실행할 수 있어 더 많은 프로세싱과 애플리케이션 파티셔닝이 가능합니다. 내장형 SMPS에는 동적 전력 효율을 높이기 위해 듀얼 코어 STM32H7 제품 라인이 제공됩니다.
두 번째 Cortex®-M4는 그리기/그래픽 작업을 위해 M7 코어를 열어서 과도한 계산 작업을 떠넘길 수 있습니다.
Note
버스 아키텍처
대다수의 STM32 마이크로컨트롤러는 모든 마스터(CPU, DMA 등)와 슬레이브(플래시 메모리, RAM, FSMC, AHB 및 APB 주변 장치)를 상호 연결하는 32비트 멀티 AHB 버스 매트릭스 제공합니다. 따라서 여러 개의 고속 주변 장치가 동시에 작동하는 경우에도 원활하고 효율적인 운영이 보장됩니다.
멀티 AHB 상호 연결 외에도 일부 STM32(Cortex®-M7) 제품에는 64비트 AXI가 내장되어 있어 대역폭을 확장할 수 있습니다. 따라서 성능과 전력 소모량을 최적의 상태로 조율할 수 있습니다.
가격
MCU의 가격은 내부 플래시의 크기, 내부 RAM, 그리고 패키지에 제공되는 핀의 개수에 따라 달라질 수 있습니다. 사용자는 인터페이스, 해상도, 성능 등의 요구 사항을 고려하여 적합한 MCU를 찾고 가격을 추정할 수 있습니다.