TouchGFX Board Setup 기반에서 RTOS 없이 실행하기
이 섹션에서는 TouchGFX Designer에서 제공하는 ST 개발 키트 중 하나에서 TouchGFX Board Setup 기반에서 운영 체제 없이 TouchGFX 프로젝트를 실행하는 방법을 설명합니다. STM32CubeMX나 STM32CubeIDE에서 시작하는 커스텀 프로젝트는 이 섹션에서 다루지 않습니다.
TouchGFX Board Setup에서 프로젝트 시작하기
TouchGFX Designer에서 제공하는 대부분의 TouchGFX Board Setup에서는 OS FreeRTOS가 기본적으로 지원됩니다. 운영 체제 없이 실행하려면 몇 단계를 따라야 합니다. 여기서는 STM32H7B3-DK 보드에 TouchGFX Board Setup을 사용해보겠습니다.
STM32H7B3-DK 보드에 TouchGFX Board Setup을 사용해 TouchGFX Designer 프로젝트를 만들고 코드를 생성합니다.
STM32CubeMX를 사용해 제공되는
.ioc
파일을 엽니다.STM32CubeMX 인터페이스에서 Middleware -> FreeRTOS 설정으로 이동한 후 FreeRTOS를 비활성화합니다.
백라이트 켜기
TouchGFX Board Setup에서는 대체로 디스플레이 백라이트가 처음부터 꺼져 있습니다. 이유는 보드를 처음 실행하여 부팅할 때 디스플레이에 글리치가 발생하는 것을 방지하기 위해서였습니다. 이후 TouchGFXHAL.cpp
(TouchGFX/target
폴더 아래)에 있는 taskEntry()
함수에서 첫 번째 프레임 버퍼가 준비 되면 백라이트가 켜집니다. 하지만 OS 없이 실행하면 taskEntry()
함수가 호출되지 않기 때문에 프레임 버퍼가 정상적으로 업데이트되더라도 디스플레이가 켜지지 않습니다. 이때는 LTDC_HSYNC 핀과 VSYNC 핀을 HIGH로 설정하면 시작할 때 백라이트가 켜집니다.
- System Core -> GPIO 섹션에 있는 GPIO 설정으로 이동합니다. 디스플레이 백라이트에 연결된 핀을 찾아 GPIO 출력 레벨을 HIGH로 설정합니다. STM32H7B3-DK 보드에서는 PA1(User label: LCD_BL_CTRL)과 PA2(User label: LCD_ON/OFF)가 핀입니다.
- STM32CubeMX에서 코드를 생성한 다음 TouchGFX Designer에서 코드를 생성합니다.
코드 삭제하기
STM32CubeMX와 TouchGFX Generator는 "USER CODE" 섹션에 있을 경우 RTOS 함수의 잠재적 호출 코드를 삭제하지 못합니다. 이때는 코드를 수동으로 삭제해야 합니다. 다만, STM32H7B3-DK TBS에 한해서 터치 컨트롤러를 수정해야 합니다.
프로젝트의
TouchGFX/target
폴더에 있는STM32TouchController.cpp
파일을 엽니다. if 문에 있는#include <cmsis_os.h>
와configASSERT(0)
를 직접 삭제합니다.Core/src
폴더에서Freertos.c
파일을 삭제합니다.
TouchGFX Designer의 보드에서 프로젝트를 플래싱하려면 먼저 OS 관련 종속성과 경로를 삭제하거나 주석 처리하여 gcc
폴더에 있는 Makefile
을 삭제해야 합니다. 또한 도구 체인/IDE를 사용한 경우에는 다른 프로젝트의 OS 관련 종속 관계와 경로까지 모두 삭제해야 합니다.
이제 TouchGFX Board Setup에서 시작된 프로젝트에서도 OS 없이 프로젝트를 실행할 수 있습니다.