애플리케이션의 픽셀 형식 변경
이 문서에서는 프로젝트가 생성된 후 애플리케이션의 픽셀 형식을 변경하는 방법을 보여줍니다. 구체적으로 이 문서에서는 TouchGFX Generator를 통해 24비트 RGB888 애플리케이션을 16비트 RGB565로 수정하는 방법을 예시하고, TouchGFX 프로젝트 구성에 미치는 영향도 보여줍니다. 픽셀 형식을 변경하는 이유는 다음과 같습니다.
- 디스플레이 요구 사항 수정
- 애플리케이션 요구 사항 수정
- 초기 프로젝트 생성 중 실수 발생
Further reading
일반적으로 애플리케이션의 픽셀 형식을 변경하려면 다음과 같은 변경이 필요할 수 있습니다.
- Board Bring Up: LTDC의 픽셀 형식을 변경합니다.
- HAL Development: LTDC 설정이나 메모리 내 프레임 버퍼의 위치를 반영하도록 TouchGFX Generator 설정을 수정합니다.
- TouchGFX Designer: 설계자가 이미지 자산에 대해 이렇게 새롭게 변환된 비트 심도와 올바른 형식을 사용하고 있는지 확인합니다.
설계자부터 시작해서 디스플레이 및 이미지에 대한 현재 구성을 검사하고, 나중에 화면으로 돌아가서 유효성을 검사할 수 있습니다.
Board Bring Up
STM32CubeMX 프로젝트의 특정 설정이 LTDC의 경우처럼 애플리케이션에서 원하는 픽셀 형식에 영향을 줄 수 있는 경우, 개발자는 TouchGFX가 LTDC에서 예상하는 형식으로 렌더링을 하도록 적절한 변경을 수행해야 합니다.
Further reading
HAL Development
프레임 버퍼의 픽셀 형식과 더불어 애플리케이션의 비트 심도가 변경되는 경우(예: ARGB2222를 BRGA2222로 변경한 상태에서 여전히 8비트 애플리케이션을 사용하는 경우)에는 개발자가 프레임 버퍼의 메모리 위치를 수정해야할 수 있습니다. 아래의 경우가 여기에 해당합니다.
이 구성을 사용하여 코드를 생성하면 16비트 TouchGFX LCD
클래스를 사용하는 TouchGFXConfiguration
이 생성됩니다.
TouchGFXConfiguration.cpp
static LCD16bpp display;
TouchGFX Designer에서 프로젝트가 열려 있으면 개발자에게 새로 생성된 구성 변경 사항을 반영하도록 업데이트하라는 메시지가 표시됩니다.
{
"image_configuration": {
"images": {},
"dither_algorithm": "2",
"alpha_dither": "yes",
"layout_rotation": "0",
"opaque_image_format": "RGB565",
"nonopaque_image_format": "ARGB8888",
"section": "ExtFlashSection",
"extra_section": "ExtFlashSection"
},
아래 표에는 특정 픽셀 형식에서 오파크(opaque) 및 비 오파크 이미지 형식에 미치는 영향이 나와 있습니다.
프레임 버퍼 픽셀 형식 | 오파크 형식 | 비 오파크 형식 |
---|---|---|
Gray2 | Gray2 | Gray2 |
Gray4 | Gray4 | Gray4 |
ABGR2222 | ABGR2222 | ABGR2222 |
ARGB2222 | ARGB2222 | ARGB2222 |
BGRA2222 | BGRA2222 | BGRA2222 |
RGBA2222 | RGBA2222 | RGBA2222 |
RGB565 | RGB565 | ARGB8888 |
RGB888 | RGB888 | ARGB8888 |
TouchGFX Designer
일단 TouchGFX 프로젝트가 STM32CubeMX에 정의된 새로운 TouchGFX Generator 설정을 기반으로 업데이트되면 TouchGFX Designer 구성이 여기에 맞게 변경됩니다.
TouchGFX Designer 내에서 코드를 생성한 후에는 업데이트된 픽셀 형식이 이미지 자산 코드에 반영됩니다.
TouchGFX\generated\images\src\my_image.png
LOCATION_PRAGMA("ExtFlashSection")
KEEP extern const unsigned char my_image[] LOCATION_ATTRIBUTE("ExtFlashSection") = // 320x240 RGB565 pixels.
결론
TouchGFX Generator를 사용하면 애플리케이션의 현재 픽셀 형식을 간단하게 수정할 수 있습니다. LTDC가 있는 MCU의 경우, TouchGFX Core에서 렌더링된 형식을 준수하도록 TouchGFX가 실행되는 계층이 TouchGFX Generator 설정에 정의된 프레임 버퍼 픽셀 형식(LTDC의 경우 RGB565 및 RGB888로 제한됨)과 일치해야 합니다.
STM32CubeMX에서 코드가 생성되면 TouchGFX 프로젝트가 업데이트되고, 이후 TouchGFX Designer에서 코드가 생성될 때 이미지 자산과 프레임 버퍼 드라이버 모두 지정된 형식을 갖게 됩니다.