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