성능 측정
TouchGFX Core는 성능을 측정하는 데 사용할 수 있는 몇 가지 신호를 노출합니다. 사용자는 이러한 신호가 내부적으로 트리거될 때 애플리케이션을 계측하여 개별 GPIO를 트리거할 수 있기 때문에 "렌더링 시간" 및 기타 유용한 신호를 시각화하는 것이 가능합니다. This article covers how to configure GPIOs in STM32CubeMX and what each exposed signal does.
Further reading
TouchGFX Core에서 노출되는 신호
TouchGFX Core 헤더 파일 GPIO.hpp
내에서 다음과 같은 신호들이 정의되어 있습니다.
신호 | 표현 |
---|---|
VSYNC_FREQ | TouchGFX 애플리케이션은 LTDC, 외부 주변 장치 또는 하드웨어 타이머에서 발생한 인터럽트 같이 내부 또는 외부 이벤트에 의해 구동됩니다. 렌더링을 마친 TouchGFX Engine은 VSYNC 신호를 기다립니다. TouchGFX가 다음 프레임의 렌더링을 시작할 수 있도록 디스플레이 업데이트가 완료되었음을 나타냅니다. |
RENDER_TIME | 프레임이 TouchGFX로 전송된 시점부터 렌더링 단계가 끝나는 시점까지 소요되는 시간입니다. |
FRAME_RATE | 사용자 애플리케이션의 프레임 속도입니다. 프레임이 업데이트되면 신호가 토글됩니다. 렌더링 시간이 디스플레이에서 정의한 최대 렌더링 시간을 초과하면 프레임 속도가 저하됩니다. |
MCU_ACTIVE | 이 신호는 TouchGFX가 MCU를 사용할 때마다 높아집니다. MCU는 프레임 버퍼가 전송될 때, 그리고 TouchGFX가 유휴 상태에 있지 않고 작업을 수행할 때 활성화됩니다. |
STM32CubeMX GPIO 구성
STM32CubeMX를 사용해 GPIO 출력 핀을 손쉽게 구성할 수 있습니다. 각 핀에 사용자 레이블을 지정하면 TouchGFXGPIO.cpp
의 TouchGFX Generator에서 생성된 코드가 TouchGFX Core에서 내부적으로 신호가 수신될 때 토글해야 할 핀을 파악할 수 있습니다.
TouchGFXGPIO 클래스
TouchGFX Generator는 TouchGFXGPIO.cpp
파일의 GPIO 클래스를 위한 함수를 생성합니다. TouchGFX Core는 TouchGFXGPIO
클래스에서 함수를 호출한 다음, STM32CubeMX의 사용자 구성에 따라 핀을 토글합니다. GPIO::set
이 아래 스니펫에 표시됩니다.
TouchGFXGPIO.cpp
void GPIO::set(GPIO_ID id)
{
switch (id)
{
case GPIO::VSYNC_FREQ:
#if defined(VSYNC_FREQ_GPIO_Port) && defined(VSYNC_FREQ_Pin)
HAL_GPIO_WritePin(VSYNC_FREQ_GPIO_Port, VSYNC_FREQ_Pin, GPIO_PIN_SET);
#endif
break;
case GPIO::RENDER_TIME:
#if defined(RENDER_TIME_GPIO_Port) && defined(RENDER_TIME_Pin)
HAL_GPIO_WritePin(RENDER_TIME_GPIO_Port, RENDER_TIME_Pin, GPIO_PIN_SET);
#endif
break;
case GPIO::FRAME_RATE:
#if defined(FRAME_RATE_GPIO_Port) && defined(FRAME_RATE_Pin)
HAL_GPIO_WritePin(FRAME_RATE_GPIO_Port, FRAME_RATE_Pin, GPIO_PIN_SET);
#endif
break;
case GPIO::MCU_ACTIVE:
#if defined(MCU_ACTIVE_GPIO_Port) && defined(MCU_ACTIVE_Pin)
HAL_GPIO_WritePin(MCU_ACTIVE_GPIO_Port, MCU_ACTIVE_Pin, GPIO_PIN_SET);
#endif
break;
}
}
If a pin has the user label VSYNC_FREQ
STM32CubeMX will automatically generate matching symbols for Port, Pin, e.g. VSYNC_FREQ_GPIO_Port
, VSYNC_FREQ_Pin
. 구성된 신호를 측정하려면 오실로스코프 또는 로직 분석기를 사용하십시오. 아래 이미지는 4개 신호 각각을 표시하는 로직 분석기를 보여줍니다. 애플리케이션은 애니메이션화된 이미지 UI 예제와 함께 STM32F746G-DISCO에서 실행됩니다. 이 애플리케이션에 대한 VSYNC
신호가 LTDC에서 16ms마다 생성됩니다.