엔진 아키텍처
그래픽이란 최종적으로 물리적 디스플레이에 무언가를 표시하는 것을 의미합니다. 물론 속도도 빨라야 합니다.
임베디드 그래픽이란 많은 의미를 가지고 있습니다.
먼저 임베디드에 대한 해석은 사람마다 다릅니다. 어떤 사람들은 임베디드 시스템을 운영 체제가 없고, RAM, ROM 또는 GPIO도 거의 없이 정말로 신뢰할 수 있는 구형의 8비트 마이크로컨트롤러라고 생각하는가 하면, 또 어떤 사람들은 모든 것을 기가바이트 수준으로 높인 최신 스마트폰으로 여깁니다.
두 번째, 그래픽이라는 표현에 대해서도 해석이 엇갈립니다. 즐겨 사용하는 페인팅 프로그램에 원하는 픽셀을 그리는 것이라고 해석하는 사람이 있는가 하면, 게이밍 콘솔에서 실행되는 3D 렌더링 소프트웨어라고 해석하는 사람들도 있습니다.
TouchGFX에게 임베디드 시스템이란 STM32 마이크로컨트롤러 기반의 시스템을 총칭합니다. 또한 그래픽이란 초당 60프레임으로 실행되는 대화형 애플리케이션을 말합니다.
4가지 요소
이러한 플랫폼에서 그래픽 애플리케이션을 실행하려면 먼저 직접 관련된 4가지 주요 구성요소를 고려합니다. 그 밖에도 여러 가지 구성요소가 임베디드 시스템에 포함될 수 있지만 그래픽 디스플레이에 대한 관련성은 비교적 낮습니다.
요약 하자면, TouchGFX는 MCU를 사용해 플래시에서 요소들을 조합하여 이미지를 생성한 후 RAM에 업데이트합니다. 이렇게 조합된 이미지는 디스플레이로 전송됩니다. 이러한 프로세스가 필요한 만큼 최대한 많이 반복됩니다.
MCU
MCU는 이 프로세스에서 중요한 역할을 하는데, 플래시에서 이미지를 읽어와서 RAM에 작성합니다. 예를 들어 반투명의 빨간색 텍스트를 병합할 경우 해당하는 색상을 계산하여 이를 RAM에 저장합니다. 그 밖에도 원의 픽셀을 모두 렌더링하여 RAM에 저장하는 등 다양한 작업을 처리합니다.
STM32 MCU는 그래픽을 구현하는 데 도움이 될 수 있는 전용 기능들을 제공합니다. 여러 가지 MCU에 대한 자세한 내용은 MCU를 참조하십시오.
RAM
RAM은 계산된 이미지가 저장되는 공간입니다. 이러한 RAM에 저장된 이미지를 읽고 쓰는 것은 MCU입니다. 이후 최종 이미지를 디스플레이로 전송할 때 한 번 더 읽어옵니다.
RAM은 MCU에 내장되는 경우가 대부분입니다. 다만 최종 이미지를 내부 RAM에 저장할 수 없는 경우에는 외부 RAM을 구성에 추가할 수 있습니다.
플래시
플래시는 모든 정적 데이터가 저장되는 공간으로, 이미지, 글꼴, 텍스트가 여기에 해당합니다. 플래시에 저장된 내용은 MCU에서 읽어와서 RAM에 작성되거나 RAM과 조합됩니다.
내부 플래시는 보통 그래픽 애셋을 모두 저장할 만큼 용량이 크지 않기 때문에 외장 플래시를 구성에 추가하는 경우가 대부분입니다.
플래시는 메모리 매핑을 지원하는 것이 좋은데, 이는 플래시에서 픽셀을 바로 읽어와서 RAM에 작성할 수 있기 때문입니다. 메모리 매핑을 지원하지 않는다면 플래시의 내용을 RAM에서 버퍼링하여 해당 위치에서 바로 읽어올 수 있습니다.
디스플레이
디스플레이는 이미지를 사람들에게 실제로 보여주는 공간입니다.
RAM에 저장된 이미지가 MCU를 통해 디스플레이에 주기적으로 전송됩니다.
성능
이러한 구성에서, 그리고 최종적으로 디스플레이에서 애니메이션을 자연스럽게 실행하려면 임베디드 그래픽을 처리할 때 주의를 기울여야 합니다.
일반 전략
항상 고려해야 할 사항이 몇 가지 있습니다.
- 변화가 없는 요소를 그리는 데 시간을 허비하지 마십시오.
- 플래시에서 RAM으로 전송되는 데이터를 최소화하십시오.
- RAM에서 디스플레이로 전송되는 데이터를 최소화하십시오.
- 그래픽 품질과 애니메이션 속도 사이에서 적절한 균형점을 찾으십시오.
- 하드웨어 기능을 이용할 것
TouchGFX 엔진은 이러한 사항을 모두 해결하는 데 유용하지만 개발자 역시 주의해야 합니다.
구성별 전략
임베디드 시스템을 광범위하게 구성할 수 있기 때문에 구성에 따라 구현할 수 있는 시스템에도 큰 차이가 있습니다.
가능한 구성을 간략하게 나타내면 다음과 같습니다.
- STM32 MCU
- 클럭 속도 50~500MHz
- 가능한 그래픽 관련 IP 범위: Chrom-ART, Chrom-GRC, JPEG 코덱, ...
- RAM
- 내부 0~1MB
- 외부 0~100MB
- 플래시
- 내부 0~1MB
- 외장 0~1GB
- 디스플레이
- 색상 1~24비트
- 픽셀 100x100~1000x1000
한 가지 구성에서 구현 가능한 UI 애플리케이션이라고 해도 다른 구성에서는 구현조차 못할 수도 있습니다. 따라서 실제 구성에 따라 원하는 UI 애플리케이션을 조정할 때는 각별한 주의가 필요합니다.
TouchGFX는 철저하게 위와 같은 구성을 고려하여 설계되어 STM32 MCU 기능을 최대한 활용하는 동시에 필요한 RAM과 플래시의 크기를 최소화하는 데 중점을 두고 있습니다.