將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
本文將描述兩種將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 檔進行燒錄。