不需要依賴笨重的虛擬機(jī),也不需要安裝雙系統(tǒng)。拋開繁瑣的環(huán)境準(zhǔn)備,在Windows上輕松搭建交叉編譯環(huán)境。本文將介紹如何在Windows上搭建交叉編譯環(huán)境,不借助Linux系統(tǒng),直接進(jìn)行交叉編譯。
?前言
嵌入式Linux系統(tǒng),由于系統(tǒng)資源的匱乏,通常無法安裝本地編譯器進(jìn)行本地開發(fā),而需要在借助一臺主機(jī)進(jìn)行交叉開發(fā)。一般情況下,在主機(jī)安裝相應(yīng)的交叉編譯器,將在主機(jī)編輯好的程序交叉編譯后,通過一定方式如以太網(wǎng)或者串口將程序下載到目標(biāo)系統(tǒng)運(yùn)行,或者進(jìn)行調(diào)試。一般的交叉開發(fā)流程如圖1所示。

圖1 嵌入式Linux交叉開發(fā)一般流程
ZMC600E/900E開發(fā)的一般模型如圖2所示。通常需要一臺PC主機(jī),在其中安裝好各種進(jìn)行交叉編譯所需要的軟件,通過串口和以太網(wǎng)和目標(biāo)板相連。在主機(jī)上進(jìn)行程序編輯和編譯,得到的可執(zhí)行文件通過串口或者以太網(wǎng)下載到ZMC600E/900E中運(yùn)行或者進(jìn)行調(diào)試。

圖2 嵌入式Linux交叉開發(fā)一般流程通常
常見的交叉編譯環(huán)境中,主機(jī)會選用Linux系統(tǒng)。如果主機(jī)是Windows系統(tǒng),通常會采用虛擬機(jī)的方式運(yùn)行Linux系統(tǒng)來搭建環(huán)境。其實(shí)Windows系統(tǒng)中同樣也可以搭建交叉編譯環(huán)境,在Windows上就可以開發(fā)ZMC600E/900E的程序,接下來將介紹如何實(shí)現(xiàn)。 ?測試環(huán)境
1. 遠(yuǎn)程設(shè)備:ZMC900E主站控制器2. 主機(jī):Win103. IDE: VS Code4. 所需軟件環(huán)境:
- cmake版本3.xx,推薦3.20及以上版本
- mingw64(主要需要mingw32-make.exe)獲取最新版本s
- aarch64-linux-gnu(windows)交叉編譯鏈,包括:① 編譯器aarch64-linux-gnu-gcc.exe aarch64-linux-gnu-g++.exe等;② aarch64-linux-gnu.cmake 交叉編譯工具鏈配置文件;③ 可以聯(lián)系我們技術(shù)支持獲取。
5. VSCode需要的插件:
圖3 VSCode中需要的插件6. 環(huán)境變量:
- 將交叉編譯鏈解壓到D:/aarch64-linux-gnu(或其他容易找到的地方),將D:/aarch64-linux-gnu/bin 加入環(huán)境變量。
- 將CMake和mingw64也加入到環(huán)境變量。
- 重啟使其生效。

圖4 Windows環(huán)境變量配置 ?搭建交叉編譯鏈
本節(jié)以hello_world和ecat_io為例子,介紹如何搭建交叉編譯工具鏈,并通過powershell命令行進(jìn)行交叉編譯。
1. 安裝軟件環(huán)境&設(shè)置環(huán)境變量
根據(jù)第1節(jié)介紹,在本節(jié)需要準(zhǔn)備cmake、mingw64、aarch64-linux-gnu(windows)三個(gè)工具軟件,并配置環(huán)境變量。
2. 準(zhǔn)備交叉編譯工具鏈說明文件CMAKE_TOOLCHAIN_FILE
在前述交叉編譯鏈解壓路徑 D:/aarch64-linux-gnu/bin 路徑下新建文件arm-linux-toolchain.cmake,并添加以下內(nèi)容:
# arm-linux-toolchain.cmakeset(CMAKE_SYSTEM_NAME Linux)set(CMAKE_SYSTEM_PROCESSOR arm)
# 設(shè)置編譯器路徑set(CROSS_CHAIN_PATH${CMAKE_CURRENT_LIST_DIR})# 根據(jù)你的安裝路徑調(diào)整交叉編譯工具鏈的位set(CMAKE_C_COMPILER${CROSS_CHAIN_PATH}/aarch64-linux-gnu-gcc.exe)set(CMAKE_CXX_COMPILER${CROSS_CHAIN_PATH}/aarch64-linux-gnu-g++.exe)set(CMAKE_LINKER${CROSS_CHAIN_PATH}/aarch64-linux-gnu-ld.exe)set(CMAKE_AR${CROSS_CHAIN_PATH}/aarch64-linux-gnu-ar.exe)set(CMAKE_RANLIB${CROSS_CHAIN_PATH}/aarch64-linux-gnu-ranlib.exe)
3. hello_world示例
新建文件夾,在文件夾下創(chuàng)建CMakeLists.txt文件,以及main.c源代碼文件。在CMakeLists.txt中寫入以下內(nèi)容。
cmake_minimum_required(VERSION3.20)project(hello)add_executable(hello main.c)
在main.c中寫入以下內(nèi)容:
#include
intmain(intargc,char**argv){ printf("Hello world!\n"); return0;}
然后打開powershell,cd至當(dāng)前目錄,并新建build文件夾,此時(shí)當(dāng)前目錄下會有以下文件:
zmc├── build├── CMakeLists.txt└──main.
接下來在powershell下執(zhí)行以下指令,進(jìn)行交叉編譯
cdbuildcmake -G"MinGW Makefiles"-DCMAKE_TOOLCHAIN_FILE="D:\aarch64-linux\bin\aarch64-linux-gnu.cmake"..mingw32-make.exe
其中:
- cmake的-G “MinGW Makefiles”參數(shù)用于指定生成的工程類型,此處指定為MinGW工程。
- -DCMAKE_TOOLCHAIN_FILE=”D:\aarch64-linux\bin\aarch64-linux-gnu.cmake”,-D參數(shù)聲明了一個(gè)變量CMAKE_TOOLCHAIN_FILE,該變量用于指定通過cmake生成交叉編譯工程時(shí),交叉編譯工具鏈的配置文件。
- cmake ..,目前位于build文件夾下,..表示指定上層目錄中../CMakeLists.txt作為cmake生成的參考文件。
完成后將在build目錄下生成一個(gè)hello文件,該文件為Linux arm格式的可執(zhí)行文件,需要上傳到ZMC900E運(yùn)行,運(yùn)行效果如下。

圖5 測試hello_world
4. ecat_io示例
從“【ZMC900E】在線資料包 examples\zmc.zip”中獲取demo程序,其結(jié)構(gòu)如下:
zmc├── demo│ ├── ecat_io│ │ ├── Makefile│ │ ├── test.c│ │ └── test.xml│ ├── ecat_redundance│ ├── ecat_servo│ ├── esi_update│ ├── foe│ └── master├──include│ └── ecat│ ├── zecm_ex.h│ └── zecm_zh.h└── lib└── libzecm.so
打開demo/ecat_io示例,新建CMakeLists.txt文件,寫入以下內(nèi)容:
cmake_minimum_required(VERSION 3.10)
project(ecat_io)
include_directories("../../include")link_directories("../../lib")
add_executable(testtest.c)
target_link_options(testPRIVATE -lpthread -lrt -ldl -lstdc++ -lm)target_link_libraries(testzecm)
根據(jù)實(shí)際測試從站對主站程序test.c做相應(yīng)修改,具體請參考倍福I/O端子操作示例:https://manual.zlg.cn/web/#/211/11214接下來在powershell下執(zhí)行以下指令,進(jìn)行交叉編譯。
cdbuildcmake -G"MinGW Makefiles"-DCMAKE_TOOLCHAIN_FILE="D:\aarch64-linux\bin\aarch64-linux-gnu.cmake"..mingw32-make.exe
完成后將在build目錄下生成一個(gè)test文件,該文件為Linux arm格式的可執(zhí)行文件。需要將test、test.xml、libzecm.so都上傳到ZMC900E運(yùn)行。 ?VSCode搭建圖形化交叉編譯環(huán)境
1. VSCode配置CMakeTool
此步驟用到的工具鏈:CMake + make(來自mingw64里包含的mingw32-make.exe) + aarch64-linux-gnu + VS Code&插件CMake等。如果失敗需要檢查工具鏈上每一環(huán)節(jié)是否工作正常。首先,需要先自己寫一個(gè)給CMake用的交叉編譯工具鏈配置文件??梢詤⒄盏?.2節(jié)內(nèi)容。用VSCode打開項(xiàng)目文件夾,例如前面測試的ecat_io示例。然后按ctrl+shift+P,彈出菜單,輸入CMAKE查找到CMAKE: QUICK START選項(xiàng):

圖6 CMakeTool工具配置Quick Start點(diǎn)擊Add a new preset,然后選擇Toolchain File,然后輸入aarch64(或其他任意)作為配置項(xiàng)名稱。完成后會生成一個(gè)CMakePresets.json配置文件。修改其中配置,令其關(guān)聯(lián)到 mingw32-make.exe + aarch64-linux-gnu。

圖7 配置CMakePresets.json
完成后,保存配置文件,點(diǎn)擊左側(cè)工具欄的CMake一欄,找到Delete Cache and Reconfigure,重新生成CMake工程。

圖8 生成CMake工程查看下側(cè)Output輸出,若無報(bào)錯(cuò),則表示CMake配置成功。

圖9 VSCode Output無報(bào)錯(cuò)輸出
2. VSCode + CMakeTool圖形化編譯
在右側(cè)工具欄點(diǎn)擊CMAKE項(xiàng),切換到圖形化編譯頁面:

圖10 圖形化編譯界面
是cmake生成Makfile,
是編譯,底部工具欄的
也是編譯。先生成cmake工程,后編譯程序。根據(jù)CMakePresets.json配置,輸出路徑為out文件夾,可以找到完成編譯的程序test。此時(shí)如果通過linux的file工具查看該程序的格式可以驗(yàn)證其是arm程序且有debug信息。

圖11 工程目錄結(jié)構(gòu)
cdbuildcmake -G"MinGW Makefiles"-DCMAKE_TOOLCHAIN_FILE="D:\aarch64-linux\bin\aarch64-linux-gnu.cmake"..mingw32-make.ex
將test程序、動(dòng)態(tài)庫libzecm.so、ENI文件上傳到ZMC900E同一目錄下,并給test程序加上x權(quán)限。然后就可以執(zhí)行主站程序了。
#ZMC900E$chmod+xtest$lstest ENI.xml libzecm.so
?ZMC900E高性能EtherCAT主站控制器

圖12ZMC900E高性能EtherCAT主站控制器
ZMC900E是ZLG致遠(yuǎn)電子開發(fā)的最新一代EtherCAT主站控制器,其核心采用多核異構(gòu)的應(yīng)用處理器,內(nèi)核包括4+1個(gè)64位的ArmCortex-A55核,主頻2GHz;3個(gè)Cortex-R5F內(nèi)核,主頻800MHz。同時(shí)板載4GB LPDDR4、8GB eMMC以及32KB FRAM。
ZMC900E EtherCAT主站控制器為了滿足不同的自動(dòng)化應(yīng)用需求,集成1路專用EtherCAT口、3路通用以太網(wǎng)、1路CANFD、1路RS485、1路TF卡、1路USB3.0 Host、1路HDMI接口、16路Dl數(shù)字輸入、16路DO數(shù)字輸出等接口,靈活滿足自動(dòng)化設(shè)備應(yīng)用需求。
ZMC900E 示意圖及接口圖如下所示:

圖13ZMC900E接口
-
WINDOWS
+關(guān)注
關(guān)注
4文章
3610瀏覽量
91178 -
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
605瀏覽量
28448 -
編譯環(huán)境
+關(guān)注
關(guān)注
0文章
13瀏覽量
8644
發(fā)布評論請先 登錄
ubuntu交叉編譯環(huán)境搭建
Windows下STM32單片機(jī)eclipse編譯環(huán)境搭建
想要自學(xué)搭建嵌入式Linux開發(fā)環(huán)境搭建的同學(xué)有福利了。
請問一下如何搭建1012的交叉編譯環(huán)境?
嵌入式交叉編譯環(huán)境的搭建解析
arm-linux的交叉編譯環(huán)境解析
嵌入式Linux開發(fā)環(huán)境搭建-(4)安裝交叉編譯工具鏈

嵌入式Linux開發(fā)環(huán)境搭建-3-安裝交叉編譯工具鏈

3568編譯環(huán)境搭建
ZMC900E 國產(chǎn)EtherCAT主站控制器 — 電源口傳導(dǎo)騷擾整改

ZMC900E控制器之ROS2環(huán)境安裝指南

如何使用VSCode+gdbserver遠(yuǎn)程調(diào)試ZMC900E

評論