詳解VisualS tudio Code開(kāi)發(fā)Arm嵌入式Linux應(yīng)用
By Toradex胡珊逢
Visual Studio Code 在軟件開(kāi)發(fā)領(lǐng)域具有十分廣泛的應(yīng)用,其支持多種編程語(yǔ)言,豐富的插件極大得提高了開(kāi)發(fā)效率,同時(shí)這也是一個(gè)非常開(kāi)放的平臺(tái)。本文接下來(lái)將介紹如何在 Visual Studio Code 中使用 Yocto Project 生成的 Linux SDK,并針對(duì) Arm 處理器進(jìn)行 C/C++ 應(yīng)用交叉編譯和調(diào)試。
首先使用 Yocto Project 生成 SDK,我們這里以 Apalis iMX8 上的 minimal console image 為例,其對(duì)應(yīng)的 SDK 為 tdx-xwayland-glibc-x86_64-Reference-Minimal-Image-aarch64-apalis-imx8-toolchain-5.2.0.sh。直接運(yùn)行該文件,將其安裝到 Linux 電腦上,例如 /home/ben/Toradex/LinuxDevelop/LinuxSDK/v5/arm64 路徑下。
然后參考這里的說(shuō)明在 Linux 電腦上安裝 Visual Studio Code。在 Extension 中安裝一些常用的插件,如 C/C++,C++ Intellisense,Makefile Creator 等。
Visual Studio Code 并不像 Visual Studio,后者集成了完整的代碼編輯、編譯和調(diào)試工具,Visual Studio Code 則提供了相應(yīng)的框架,根據(jù)具體使用的編程語(yǔ)言和用戶(hù)習(xí)慣來(lái)實(shí)現(xiàn)對(duì)應(yīng)的步驟或者任務(wù)。當(dāng)然也有很多公司、組織或者個(gè)人提供現(xiàn)成的插件,這簡(jiǎn)化了配置任務(wù)。目前 Visual Studio Code 還沒(méi)有現(xiàn)成的插件可以直接使用 Yocto Project 生成的 Linux SDK,因此我們通過(guò)直接配置 JSON 文件,制定相應(yīng)的編譯和調(diào)試步驟。vscode-tdxlinux 是配置好的例程,接下來(lái)我們將對(duì)其中配置進(jìn)行說(shuō)明,以及介紹使用方法。
下載上面的例程后,在文件夾中會(huì)有下面文件。
hello.c 是一個(gè)演示代碼,Makefile 是編譯規(guī)則文件,.vscode 文件夾中四個(gè) json 文件即用于配置 Visual Studio Code。
c_cpp_properties.json
env 中包含一些自定義的變量,例如 SDK 版本,開(kāi)發(fā)板名字,以及 SDK 根目錄??梢杂?nbsp;$ 符號(hào)對(duì)其引用,例如 ${env.sdkroot} 引用 SDK 根目錄。
configurations 中是 Visual Studio Code 規(guī)定的一些設(shè)置。includePath 包含項(xiàng)目編譯用的頭文件所在目錄,這里包括 SDK 中文件系統(tǒng)里和 gcc 本身的頭文件。browse 是瀏覽頭文件時(shí)可以查找的目錄,常用于 VS Code 編寫(xiě)代碼時(shí)用 Go To Definition 打開(kāi)對(duì)應(yīng)文件。defines 預(yù)定義一些宏,__linux__:指定目標(biāo)系統(tǒng)為 Linux,__aarch64__:目標(biāo)處理器為 64bit Arm。intelliSenseMode 將 IntelliSense Mode 映射到對(duì)應(yīng)的平臺(tái)和處理器構(gòu)架,Apalis iMX8 是 64 位處理器,所以這里選擇 linux-gcc-arm64。這里的配置還可以通過(guò) ctl+shift+p 組合鍵盤(pán)選擇 UI 方式來(lái)配置。
settings.json
這里定了一些變量,其他文件可以通過(guò) ${config:var} 來(lái)引用,例如 ${config:tdxlinuxsdk.sdkroot}。
tasks.json
這里配置了編譯相關(guān)的任務(wù)。
env 配置GCC 編譯工具,編譯參數(shù)等,這部分內(nèi)容來(lái)自 SDK 的 environment-setup-aarch64-tdx-linux 文件。
tasks 中是具體編譯的任務(wù),以及其實(shí)現(xiàn)方法。這里我們使用 gcc 直接編譯文件,或者使用 make 執(zhí)行 makefile 任務(wù),或者單獨(dú)執(zhí)行 makefile 一個(gè)任務(wù)。配置完成后可以按組合鍵 ctrl+shift+b 或者點(diǎn)擊 Terminal -> Run Build Task 調(diào)用相關(guān)任務(wù)。
launch.json
這里配置調(diào)試方法。
嵌入式 Linux 通過(guò)使用 gdb 調(diào)試 C/C++ 應(yīng)用。在 configurations 中 MIMode 為 gdb,miDebuggerPath 為 gdb 所在目錄,這是 SDK 中包含的軟件。
customLaunchSetupCommands 是 gdb 具體執(zhí)行步驟。首先使用 gdb 的 target remote extend-remote 連接 IP 為 192.168.20.91 的目標(biāo)設(shè)備即 Apalis iMX8,端口為1234。第二步 remote put 將本地編譯好的 hello 二進(jìn)制文件上傳到 Apalis iMX8。最后在 main 函數(shù)處設(shè)置一個(gè)斷點(diǎn)。通過(guò)上面設(shè)置,點(diǎn)擊 VS Code 中的 debug 即可進(jìn)入調(diào)試。上面的每個(gè)步驟同樣可以根據(jù)項(xiàng)目或者用戶(hù)習(xí)慣調(diào)整。下面我們將演示從編譯到調(diào)試的流程。
按組合鍵 ctrl+shift+b 選擇 TdxLinux SDK Make.
編譯完成后可以通過(guò) file 命令查看 hello 程序的格式屬性,ARM aarch64 格式。
查看 Apalis iMX8 的 IP 地址。192.168.20.97 也是 launch.json 中設(shè)置的 IP。
在 Apalis iMX8 上運(yùn)行 gbdserver 程序,偵聽(tīng)端口為 1234。
在 hello.c 程序的 printf 函數(shù)設(shè)置一個(gè)斷點(diǎn)。
點(diǎn)擊 VS Code 中的調(diào)試按鍵。
點(diǎn)擊 step over 進(jìn)行單步調(diào)試。
在 Apalis iMX8 調(diào)試串口中可以看到執(zhí)行結(jié)果。
總結(jié)
上面是 VS Code 交叉編譯和調(diào)試的簡(jiǎn)單介紹,提供了 Eclipse 之外的另一種開(kāi)發(fā)環(huán)境。用戶(hù)可以重新調(diào)整配置文件,并配合其他插件如 Makefile Creator 實(shí)現(xiàn)個(gè)性化的 IDE。
到此這篇關(guān)于VisualStudioCode開(kāi)發(fā)Arm嵌入式Linux應(yīng)用的文章就介紹到這了,更多相關(guān)VisualStudioCode嵌入式Linux內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 詳解vscode實(shí)現(xiàn)遠(yuǎn)程linux服務(wù)器上Python開(kāi)發(fā)
- 使用VSCode的Remote-SSH連接Linux進(jìn)行遠(yuǎn)程開(kāi)發(fā)
- win10環(huán)境下vscode Linux C++開(kāi)發(fā)代碼自動(dòng)提示配置(基于WSL)
- Visual Studio Code (vscode) 配置C、C++環(huán)境/編寫(xiě)運(yùn)行C、C++的教程詳解(主要Windows、簡(jiǎn)要Linux)
- VSCode 搭建 Arm 遠(yuǎn)程調(diào)試環(huán)境的步驟詳解
相關(guān)文章
VC基于ADO技術(shù)訪問(wèn)數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了VC基于ADO技術(shù)訪問(wèn)數(shù)據(jù)庫(kù)的方法,較為詳細(xì)的分析了VC使用ADO操作數(shù)據(jù)庫(kù)的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10Visual C++程序設(shè)計(jì)中Windows GDI貼圖閃爍的解決方法
這篇文章主要介紹了Visual C++程序設(shè)計(jì)中Windows GDI貼圖閃爍的解決方法,分析了GDI貼圖閃爍的常見(jiàn)原因及其具體解決方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[七]
C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[七]...2007-02-02C語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 棧的基礎(chǔ)操作
這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 棧的基礎(chǔ)操作的相關(guān)資料,需要的朋友可以參考下2017-05-05C語(yǔ)言時(shí)間函數(shù)之strftime()詳解
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言時(shí)間函數(shù)之strftime(),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-02-02