跳轉到主要內容

將IDE與TouchGFX組合使用

當創建新的TouchGFX專案時,無論是通過TouchGFX Designer還是STM32CubeMX,提供以下專案檔案和庫以便使用專有的IDE:

  • Keil uVision(僅目標)
  • IAR Embedded Workbench(僅目標)
  • STM32CubeIDE(僅目標)
  • Microsoft Visual Studio (僅模擬器)

注意!並非所有專案檔案都同時出現在專案中。 在STM32CubeMX中選擇的工具鏈就是將要生成的工具鏈,預設情況下選擇STM32CubeIDE。

Further reading
如何更改工具鏈在此處介紹。

此外,還提供生成檔和庫(用於基於shell的編譯)和GCC交叉編譯器(用於ARM目標)。 本文將說明您配置用於TouchGFX應用開發的的第三方廠商的GCC-based IDE。 基本上,任何能夠呼叫GCC交叉編譯器的IDE都是可用的。

Note
請注意,本文只是概述設置過程(無法提供對所有各種IDE的支援),但希望此處提供的資訊足以讓您在最喜歡的IDE中使用TouchGFX。

本文將描述兩種將TouchGFX與其他IDE組合使用的方法。 一種方法是從IDE內部調呼叫TouchGFX Makefile。 這可能是最簡單的方法,但如果您想更好地控制編譯過程和檔案位置,這種方法並非總是適當的選擇。 或者,可以手動將必要的TouchGFX檔案和配置選項添加到現有專案中。

先決條件:GCC版

本文假設您將使用通過TouchGFX環境shell分發的GCC交叉編譯器工具鏈,或者使用您自己特有的GCC工具鏈(能夠連結使用環境shell工具鏈編譯的TouchGFX核心庫)。

使用的GCC編譯器:

$ arm-none-eabi-gcc.exe -v
Target: arm-none-eabi
Thread model: single
gcc version 6.3.1 20170620 (release) [ARM/embedded-6-branch revision 249437] (GNU Tools for ARM Embedded Processors 6-2017-q2-update)

該編譯器可以從https://launchpad.net/gcc-arm-embedded獲得。

從IDE呼叫TouchGFX Makefile

在IDE中編譯TouchGFX應用程式的一種快速而粗略的方法是直接呼叫TouchGFX Designer所創建的專案中包含的Makefile。 要使用TouchGFX環境shell編譯對目標的應用程式,必須導航到TouchGFX應用程式根資料夾並執行以下指令:

$ make -f target/gcc/Makefile

現在,除了從TouchGFX環境shell呼叫make指令,還可以從IDE中呼叫。 Shell使用的可執行檔(make, arm-none-eabi-gcc, ..)實際上是普通的Windows x86可執行檔,所以make應用程式可以通過普通的指令提示符執行,前提是已經配置了以下環境變數。

C:\<touchfx_installation_directory>\touchgfx\env\MinGW\bin
C:\<touchfx_installation_directory>\touchgfx\env\MinGW\msys\1.0\Ruby193\bin
C:\<touchfx_installation_directory>\touchgfx\env\MinGW\msys\1.0\bin
C:\<touchfx_installation_directory>\touchgfx\env\MinGW\msys\1.0\gnu-arm-gcc\bin

在設置了所需的Windows環境變數之後,現在可以直接從IDE中呼叫make指令作用於適當的TouchGFX生成文件。 您需要執行的指令與從shell編譯時相同,即:

$ make -f target/gcc/Makefile
Note
請注意,目前的目錄必須是要編譯的應用程式的根目錄。

將TouchGFX程式碼檔添加到自己的專案中

如果您想更好地控制編譯過程和檔案位置,可以將相關的TouchGFX程式碼檔集成到自己的現有專案中,並添加必要的包含路徑和編譯器開關以使其能夠編譯。

所需的文件

基本上,您需要向IDE專案添加的TouchGFX檔與使用make指令從TouchGFX環境shell編譯時相同。 具體包含哪些檔取決於您的目標開發板,因為每個開發板的底層驅動程式不同。 為了確定您需要哪些檔案,建議直接使用TouchGFX環境shell編譯對適當開發板的應用程式。 編譯過程會提到正在編譯的每個檔,從而列出您需要添加的檔。

包含路徑

您將需要添加以下包含路徑到您的編譯(這裡提到的路徑是相對于TouchGFX的目錄):

<touchgfx_application_root_directory>/gui/include
<touchgfx_application_root_directory>/generated/gui_generated/include
<touchgfx_application_root_directory>/platform/os
<touchgfx_application_root_directory>/generated/fonts/include
<touchgfx_application_root_directory>/generated/images/include
<touchgfx_application_root_directory>/generated/texts/include
<touchgfx_application_root_directory>/touchgfx/framework/include
Tip
除了上面的包含路徑,您還需要為特定開發板的程式碼添加包含路徑。 可以在 target/gcc/Makefile 中瞭解相關資訊。

編譯器開關

與包含路徑一樣,有一些必須啟用的通用編譯器開關,還有一些特定於處理器內核和具體開發板的編譯器開關。 下面針對每種內核列出了用於編譯TouchGFX核心庫的編譯器開關。 為了讓連結器工作,其中一些選項中對於程式碼編譯也是強制性的,而有些選項是可選的。 那些已知的強制性選項以粗體顯示。

Cortex-M3內核

-mcpu=cortex-m3 -march=armv7-m -Wno-psabi -DCORE_M3 -D__irq="" -fno-rtti -fno-exceptions -fno-strict-aliasing -fdata-sections -ffunction-sections

Cortex-M4f內核

-fno-rtti -fno-exceptions -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mcpu=cortex-m4 -D__irq=”“ -mthumb -mno-thumb-interwork -std=c99 -Os -fno-strict-aliasing -fdata-sections -ffunction-sections -Wno-psabi -DCORE_M4 -march=armv7e-m

Cortex-M7內核

-fno-rtti -fno-exceptions -mfpu=fpv5-sp-d16 -mfloat-abi=softfp -mcpu=cortex-m7 -D__irq=”“ -mthumb -mno-thumb-interwork -std=c99 -Os -fno-strict-aliasing -fdata-sections -ffunction-sections -Wno-psabi -DCORE_M7

連結器

核心庫

您必須連結TouchGFX核心庫。 這應該是二者選一,具體取決於您的MCU

touchgfx/lib/core/cortex-m4f/gcc/libtouchgfx.a
touchgfx/lib/core/cortex-m7/gcc/libtouchgfx.a

連結器選項

此外,您還需要一些連結器選項。 以下是TouchGFX使用的選項:

Cortex-M4f: -Wl,-static -nostartfiles -mthumb -mno-thumb-interwork -fno-exceptions -fno-rtti -Wl,--gc-sections -mcpu=cortex-m4 -march=armv7e-m -Wno-psabi
Cortex-M7: -Wl,-static -nostartfiles -mthumb -mno-thumb-interwork -fno-exceptions -fno-rtti -Wl,--gc-sections -mcpu=cortex-m7 -Wno-psabi

資產生成

如要編譯專案,還必須生成資產。 可以使用‘assets’選擇呼叫生成的Makefile以實現該目標:

make -f <path_to_Makefile> assets

另一種生成資產的方法是直接使用imageconverer(圖像轉換器)和text/font-converter(文字/字體轉換器)。

Imageconverter Imageconverter可以位於您的專案touchgfx資料夾 touchgfx/framework/tools/imageconvert/build(為Linux和Windows作業系統而構建)中。

usage: imageconvert [-c configfile] [-f inputfile -o outputfile | -r inputdir -w outputdir]

當呼叫imageconvert.out可執行檔時,它將在呼叫它的資料夾中尋找一個設定檔(application.config)。

Textconverter textconverter作為ruby檔位於專案touchfx資料夾touchgfx\framework\tools\textconvert中:main.rb

usage: main.rb file.xlsx path/to/fontconvert.out path/to/fonts_output_dir path/to/localization_output_dir path/to/font/asset calling_path

燒錄和除錯

您很可能輸出一個 .elf.hex ,具體取決於您的連結器設置。 可以從大多數IDE中配置和除錯TouchGFX應用程式,通常使用GDB伺服器或IDE提供的任何其他方法。 無法為每個可用的IDE提供具體指針,但您可能能在 編譯 & 燒錄 中找到靈感,該文解釋如何使用 GCC 生成的 ELF/HEX 檔進行燒錄。