주요 내용으로 건너뛰기

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을 사용해보겠습니다.

  1. STM32H7B3-DK 보드에 TouchGFX Board Setup을 사용해 TouchGFX Designer 프로젝트를 만들고 코드를 생성합니다.

  2. STM32CubeMX를 사용해 제공되는 .ioc 파일을 엽니다.

  3. STM32CubeMX 인터페이스에서 Middleware -> FreeRTOS 설정으로 이동한 후 FreeRTOS를 비활성화합니다.

STM32H7B3-DK에 대한 STM32CubeMX의 FreeRTOS 설정

백라이트 켜기​

TouchGFX Board Setup에서는 대체로 디스플레이 백라이트가 처음부터 꺼져 있습니다. 이유는 보드를 처음 실행하여 부팅할 때 디스플레이에 글리치가 발생하는 것을 방지하기 위해서였습니다. 이후 TouchGFXHAL.cpp(TouchGFX/target 폴더 아래)에 있는 taskEntry() 함수에서 첫 번째 프레임 버퍼가 준비 되면 백라이트가 켜집니다. 하지만 OS 없이 실행하면 taskEntry() 함수가 호출되지 않기 때문에 프레임 버퍼가 정상적으로 업데이트되더라도 디스플레이가 켜지지 않습니다. 이때는 LTDC_HSYNC 핀과 VSYNC 핀을 HIGH로 설정하면 시작할 때 백라이트가 켜집니다.

  1. System Core -> GPIO 섹션에 있는 GPIO 설정으로 이동합니다. 디스플레이 백라이트에 연결된 핀을 찾아 GPIO 출력 레벨을 HIGH로 설정합니다. STM32H7B3-DK 보드에서는 PA1(User label: LCD_BL_CTRL)과 PA2(User label: LCD_ON/OFF)가 핀입니다.

STM32H7B3-DK에서 백라이트 켜기

  1. STM32CubeMX에서 코드를 생성한 다음 TouchGFX Designer에서 코드를 생성합니다.

코드 삭제하기​

STM32CubeMX와 TouchGFX Generator는 "USER CODE" 섹션에 있을 경우 RTOS 함수의 잠재적 호출 코드를 삭제하지 못합니다. 이때는 코드를 수동으로 삭제해야 합니다. 다만, STM32H7B3-DK TBS에 한해서 터치 컨트롤러를 수정해야 합니다.

  1. 프로젝트의 TouchGFX/target 폴더에 있는 STM32TouchController.cpp 파일을 엽니다. if 문에 있는 #include <cmsis_os.h>와 configASSERT(0)를 직접 삭제합니다.

  2. Core/src 폴더에서 Freertos.c 파일을 삭제합니다.

TouchGFX Designer의 보드에서 프로젝트를 플래싱하려면 먼저 OS 관련 종속성과 경로를 삭제하거나 주석 처리하여 gcc 폴더에 있는 Makefile을 삭제해야 합니다. 또한 도구 체인/IDE를 사용한 경우에는 다른 프로젝트의 OS 관련 종속 관계와 경로까지 모두 삭제해야 합니다.

이제 TouchGFX Board Setup에서 시작된 프로젝트에서도 OS 없이 프로젝트를 실행할 수 있습니다.