컴파일 및 플래싱
이 섹션에서는 TouchGFX 애플리케이션 코드에서부터 프로그램 실행까지, 특정 설정에 따른 컴파일 및 플래싱 방법을 알아보겠습니다.
TouchGFX 애플리케이션 컴파일
TouchGFX 애플리케이션을 컴파일할 때는 PC 시뮬레이터 컴파일과 타겟 하드웨어 컴파일의 두 가지 옵션이 있습니다.
PC 시뮬레이터 컴파일
PC 시뮬레이터 프로젝트를 컴파일하는 데는 GCC와 Visual Studio의 두 가지 옵션이 있습니다.
두 옵션 모두 TouchGFX Designer에서 생성되기 때문에 언제든지 사용할 수 있습니다.
GCC
Makefile의 위치는 다음과 같습니다. <touchgfx_application_root_folder>/simulator/gcc/Makefile
TouchGFX는 GCC 컴파일러와 GNU Make가 사전 설치된 MinGW 환경을 제공하므로 PC 시뮬레이터 용도로 생성된 Makefile을 쉽게 실행할 수 있습니다.
TouchGFX 환경은<touchgfx_installation_directory>/env/MinGW/msys/1.0/msys.bat
파일에서, 혹은 Windows 시작 메뉴에 추가되는 단축키("TouchGFX x.y.z Environment")를 통해 실행할 수 있습니다. 단축키에서 x, y 및 z는 버전 번호를 나타냅니다.
TouchGFX 환경을 실행하여 TouchGFX 애플리케이션 루트 폴더로 이동한 후 아래와 같이 간단한 명령을 실행하면 simulator.exe 파일이 생성됩니다.
make -f simulator/gcc/Makefile
그런 다음 TouchGFX 환경에서 다음 명령을 사용하면 시뮬레이터 실행 파일을 실행할 수 있습니다.
./build/bin/simulator.exe
PC 시뮬레이터는 TouchGFX Designer에서도 Run Simulator 명령을 사용해 컴파일하여 실행할 수 있습니다.
Visual Studio
Visual Studio를 사용해 PC 시뮬레이터를 컴파일하려면 Visual Studio를 사용하여 <touchgfx_application_root_folder>/simulator/msvs/Application.sln
위치에 생성된 솔루션 파일을 열면 됩니다.
PC 시뮬레이터는 코드 디버깅을 활성화하여 Visual Studio에서 바로 실행할 수 있습니다.
Note
대상 하드웨어 컴파일
STM32 평가 키트 프로젝트 컴파일은 TouchGFX Board Setup 기반 애플리케이션일 때 매우 간단합니다.
각 TouchGFX Board Setup에는 GCC, STM32CubeIDE, IAR 및 Keil에 사용할 수 있는 프로젝트 파일이 포함되어 있습니다.
- GCC:
<project_root_folder>/gcc/MakeFile
- STM32CubeIDE:
<project_root_folder>/STM32CubeIDE/.cproject
- IAR:
<project_root_folder>/EWARM/Project.eww
- Keil:
<project_root_folder>/MDK-ARM/<STM32_evaluation_kit_name>.uvprojx
활성 도구 체인은 STM32CubeMX에서 설정되며, 기본적으로 STM32CubeIDE로 설정되어 있습니다. 단, 일부 프로젝트 파일은 한 번에 표시되지 않습니다. 생성되는 프로젝트 파일은 STM32CubeMX에서 선택된 도구 체인에 따라 다릅니다.
TouchGFX는 GNU Embedded Toolchain for Arm과 GNU Make가 사전 설치된 MinGW 환경을 제공하므로 대상 하드웨어 용도로 포함되는 Makefile을 쉽게 실행할 수 있습니다.
TouchGFX 환경은<touchgfx_installation_directory>/env/MinGW/msys/1.0/msys.bat
파일에서, 혹은 Windows 시작 메뉴에 추가되는 단축키("TouchGFX x.y.z Environment")를 통해 실행할 수 있습니다.
TouchGFX 환경을 실행하여 프로젝트 루트 폴더로 이동한 후 아래와 같이 간단한 명령을 실행하면 대상 하드웨어 프로젝트가 컴파일됩니다.
make -f gcc/Makefile
Note
STM32 평가 키트 플래싱
STM32 평가 키트 프로젝트 플래싱은 사전 제작된 TouchGFX Board Setup 기반 프로젝트일 때 매우 간단합니다.
각 프로젝트마다 빌드되면 ST Link Utility 또는 STM32CubeProgrammer를 사용해 플래싱할 수 있는 바이너리가 생성됩니다.
따라서 플래싱을 진행하려면 이 두 가지 도구를 먼저 설치해야 합니다.
두 도구는 기본 위치에 설치하는 것이 좋습니다.
- ST Link Utility의 기본 설치 위치:
C:/Program Files (x86)/STMicroelectronics/STM32 ST-LINK Utility/ST-LINK Utility
- STM32CubeProgrammer의 기본 설치 위치:
C:/Program Files/STMicroelectronics/STM32Cube/STM32CubeProgrammer
Note
GCC 및 TouchGFX Designer
TouchGFX Board Setup에서 제공하는 Makefile은<project_root_folder>/gcc/MakeFile
에 위치하며, 여기에는 아래와 같이 ST Link Utility 또는 STM32CubeProgrammer(AT에 따라 다름)를 사용해 STM32 평가 키트를 플래싱하는 flash 명령이 내장되어 있습니다. 물론 데스크톱 버전 플래시 도구를 사용해 .hex 파일로 보드를 플래싱하는 방법도 있습니다.
make -f gcc/Makefile flash
.hex 파일의 위치는 다음과 같습니다.<project_root_folder>/TouchGFX/build/bin/target.hex
내부 플래시에만 데이터를 작성하고 외부 플래시를 건너뛰는 것도 가능합니다. 특히 이미지가 많을 때 이러한 방법을 사용하면 플래시 시간을 크게 줄일 수 있습니다. 다만 마지막에 외부 플래시에 작성한 이후로 외부 플래시의 내용이 바뀌지 않았는지 확인해야 합니다. 만약 바뀌었는데도 다시 플래싱하지 않으면 이상한 동작이 일어나게 됩니다. 이때는 내부 플래시와 외부 플래시를 모두 플래싱하십시오.
make -f gcc/Makefile intflash
.hex 파일의 위치는 다음과 같습니다. <project_root_folder>/TouchGFX/build/bin/inttarget.hex
TouchGFX Board Setup은 TouchGFX Designer에서 Run Target 명령을 통해 프로젝트를 플래싱할 수 있는 구성도 제공합니다. TouchGFX Designer에서 플래싱에 사용되는 이 명령은 TouchGFX Designer의 Config View에 있는 Build Section에서 확인 및 재정의할 수 있습니다.
STM32CubeIDE
TouchGFX Board Setup은 STM32CubeProgrammer를 통해 STM32CubeIDE에서 출력되는 .elf 파일을 사용해 컴파일된 프로젝트의 플래싱을 지원합니다.
.elf 파일의 위치는 다음과 같습니다. <project_root_folder>/STM32CubeIDE/Debug/<STM32_evaluation_kit_name>.elf
예를 들면 다음과 같습니다. C:/TouchGFXProjects/MyApplication/STM32CubeIDE/Debug/STM32F746G_DISCO.elf
IAR
TouchGFX Board Setup은 STM32CubeProgrammer를 통해 IAR에서 출력되는 .hex 파일을 사용해 컴파일된 프로젝트의 플래싱을 지원합니다.
.hex 파일의 위치는 다음과 같습니다. <project_root_folder>/EWARM/<STM32_evaluation_kit_name>/Exe/<STM32_evaluation_kit_name>.hex
예를 들면 다음과 같습니다. C:/TouchGFXProjects/MyApplication/MDK-ARM/STM32F469I-DISCO/STM32F469I-DISCO.hex
Keil
TouchGFX Board Setup은 STM32CubeProgrammer를 통해 Keil에서 출력되는 .hex 파일을 사용해 컴파일된 프로젝트의 플래싱을 지원합니다.
.hex 파일의 위치는 다음과 같습니다. <project_root_folder>/MDK-ARM/<STM32_evaluation_kit_name>/<STM32_evaluation_kit_name>.hex
예를 들면 다음과 같습니다. C:/TouchGFXProjects/MyApplication/MDK-ARM/STM32F469I-DISCO/STM32F469I-DISCO.hex
커스텀 하드웨어 플래싱
그 밖에 플래싱해야 하는 대상이 STM32 평가 키트와 같이 사전 정의된 하드웨어 구성이 아닌 커스텀 하드웨어라고 해도 STM32CubeProgrammer를 계속 사용할 수 있습니다. STM32CubeProgrammer는 특정 외부 메모리에 필요한 플래시 로딩 메커니즘을 항상 제공하지는 않습니다. 하지만 커스텀 플래시 로더는 생성할 수 있습니다. 자세한 내용은 외부 메모리에 필요한 커스텀 로더 개발 사용자 매뉴얼을 참조하십시오.