欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解VisualS tudio Code開(kāi)發(fā)Arm嵌入式Linux應(yīng)用

 更新時(shí)間:2021年04月25日 10:57:00   作者:toradexsh  
本文介紹如何在 Visual Studio Code 中使用 Yocto Project 生成的 Linux SDK,并針對(duì) Arm 處理器進(jìn)行 C/C++ 應(yīng)用交叉編譯和調(diào)試,感興趣的朋友跟隨小編一起看看吧

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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言的預(yù)處理介紹

    C語(yǔ)言的預(yù)處理介紹

    大家好,本篇文章主要講的是C語(yǔ)言的預(yù)處理介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽
    2021-12-12
  • C++示例詳解Prim算法與優(yōu)先隊(duì)列

    C++示例詳解Prim算法與優(yōu)先隊(duì)列

    這篇文章介紹了C++ Prim算法、優(yōu)先隊(duì)列,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • VC基于ADO技術(shù)訪問(wèn)數(shù)據(jù)庫(kù)的方法

    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-10
  • Visual C++程序設(shè)計(jì)中Windows GDI貼圖閃爍的解決方法

    Visual C++程序設(shè)計(jì)中Windows GDI貼圖閃爍的解決方法

    這篇文章主要介紹了Visual C++程序設(shè)計(jì)中Windows GDI貼圖閃爍的解決方法,分析了GDI貼圖閃爍的常見(jiàn)原因及其具體解決方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • C C++ 算法實(shí)例大全

    C C++ 算法實(shí)例大全

    這篇文章主要介紹了C C++ 算法實(shí)例大全,里面大量的實(shí)例介紹,學(xué)習(xí)c語(yǔ)言的朋友可以收藏
    2016-12-12
  • C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[七]

    C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[七]

    C 語(yǔ)言基礎(chǔ)教程(我的C之旅開(kāi)始了)[七]...
    2007-02-02
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 棧的基礎(chǔ)操作

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 棧的基礎(chǔ)操作

    這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 棧的基礎(chǔ)操作的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • C++代碼實(shí)現(xiàn)逆波蘭式

    C++代碼實(shí)現(xiàn)逆波蘭式

    這篇文章主要為大家詳細(xì)介紹了C++代碼實(shí)現(xiàn)逆波蘭式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 單元測(cè)試代碼覆蓋率解析

    單元測(cè)試代碼覆蓋率解析

    單元測(cè)試(unit testing),是指對(duì)軟件中的最小可測(cè)試單元進(jìn)行檢查和驗(yàn)證。動(dòng)態(tài)分析就是通過(guò)觀察軟件運(yùn)行時(shí)的動(dòng)作,來(lái)提供執(zhí)行跟蹤,時(shí)間分析,以及測(cè)試覆蓋度方面的信息。下面我們來(lái)詳細(xì)了解下吧
    2019-06-06
  • C語(yǔ)言時(shí)間函數(shù)之strftime()詳解

    C語(yǔ)言時(shí)間函數(shù)之strftime()詳解

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言時(shí)間函數(shù)之strftime(),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02

最新評(píng)論