在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

ZLG致遠(yuǎn)電子 ? 2025-05-22 11:40 ? 次閱讀

由于嵌入式設(shè)備資源受限,通常無(wú)法在其上安裝龐大的IDE調(diào)試程序,且許多嵌入式系統(tǒng)并無(wú)桌面環(huán)境。為了方便調(diào)試自開(kāi)發(fā)程序,本文介紹利用VSCode與gdbserver進(jìn)行嵌入式設(shè)備上程序的遠(yuǎn)程調(diào)試方法。


6faa2c28-36be-11f0-8605-92fbcf53809c.jpg ?前言

嵌入式Linux系統(tǒng),由于系統(tǒng)資源的匱乏,通常無(wú)法安裝本地編譯器進(jìn)行本地開(kāi)發(fā),而需要在借助一臺(tái)主機(jī)進(jìn)行交叉開(kāi)發(fā)。一般情況下,在主機(jī)安裝相應(yīng)的交叉編譯器,將在主機(jī)編輯好的程序交叉編譯后,通過(guò)一定方式如以太網(wǎng)或者串口將程序下載到目標(biāo)系統(tǒng)運(yùn)行,或者進(jìn)行調(diào)試。一般的交叉開(kāi)發(fā)流程如圖1所示。關(guān)于Windows上搭建交叉編譯環(huán)境,可以參考《不借助Linux系統(tǒng),在Windows下如何搭建ZMC900E交叉編譯環(huán)境》。

6fb16768-36be-11f0-8605-92fbcf53809c.png

圖1 嵌入式Linux交叉開(kāi)發(fā)一般流程

由于系統(tǒng)資源限制,通常在ZMC600E/900E上無(wú)法安裝龐大的IDE來(lái)調(diào)試程序,同時(shí)ZMC600E/900E中默認(rèn)不帶桌面。我們可以通過(guò)VSCode+ssh協(xié)議遠(yuǎn)程到ZMC600E/900E來(lái)開(kāi)發(fā)和運(yùn)行程序,但通常只能在設(shè)備上通過(guò)gdb命令行程序進(jìn)行調(diào)試。為了更加方便地調(diào)試程序,可以通過(guò)VSCode+gdbserver程序來(lái)實(shí)現(xiàn)遠(yuǎn)程調(diào)試的目的。接下來(lái)將詳細(xì)介紹如何在Windows上實(shí)現(xiàn)遠(yuǎn)程調(diào)試ZMC600E/900E。


6fb95e0a-36be-11f0-8605-92fbcf53809c.jpg ?測(cè)試環(huán)境

1. 遠(yuǎn)程設(shè)備:ZMC900E主站控制器2. 主機(jī):Win103. IDE: VS Code4. 所需軟件環(huán)境:

  • cmake版本3.xx,推薦3.20及以上版本
  • mingw64(主要需要mingw32-make.exe)獲取最新版本
  • aarch64-linux-gnu(windows)交叉編譯鏈,包括:① 編譯器aarch64-linux-gnu-gcc.exe aarch64-linux-gnu-g++.exe等;② aarch64-linux-gnu.cmake 交叉編譯工具鏈配置文件;③ 調(diào)試器aarch64-linux-gnu-gdb.exe gdbserver(arm Linux程序);④可以聯(lián)系我們技術(shù)支持獲取。

5. VSCode需要的插件:

  • C/C++
  • C/C++ Extension Pack
  • CMake
  • CMake Integration
  • CMake Tools
  • GDB Debug
  • Remote - SSH
  • Remote development

6fc2c756-36be-11f0-8605-92fbcf53809c.png6fdd69bc-36be-11f0-8605-92fbcf53809c.png圖2 VSCode中需要的插件6. 環(huán)境變量:

  • 將交叉編譯鏈解壓到D:/aarch64-linux-gnu(或其他容易找到的地方),將D:/aarch64-linux-gnu/bin 加入環(huán)境變量。
  • 將CMake和mingw64也加入到環(huán)境變量。
  • 重啟使其生效。
6fe76ff2-36be-11f0-8605-92fbcf53809c.png

圖3 Windows環(huán)境變量配置

7. OpenSSL

對(duì)win10及更新版本的Windows系統(tǒng),已默認(rèn)包含在系統(tǒng)軟件中。舊版本W(wǎng)indows需要自行安裝。


6faa2c28-36be-11f0-8605-92fbcf53809c.jpg ?基本步驟

1. Windows下交叉編譯鏈的搭建,并嘗試編譯程序進(jìn)行驗(yàn)證;2. 在VSCode上搭建圖形化編譯環(huán)境;3. 搭建遠(yuǎn)程gdbserver和本地gdb聯(lián)調(diào)。前兩步可以參考《不借助Linux系統(tǒng),在Windows下如何搭建ZMC900E交叉編譯環(huán)境》。


6faa2c28-36be-11f0-8605-92fbcf53809c.jpg ?遠(yuǎn)程GDB調(diào)試

遠(yuǎn)程調(diào)試的基本邏輯是:

  • 將程序、動(dòng)態(tài)庫(kù)、gdbserver以及ENI文件上傳遠(yuǎn)程ZMC900E設(shè)備上,同時(shí)在本地需要保留一份一樣的程序用于調(diào)試;
  • 在遠(yuǎn)程ZMC900E上啟動(dòng)gdbserver,在本地程序啟動(dòng)aarch64-linux-gnu-gdb.exe程序遠(yuǎn)程連接到服務(wù)器。

1. 修改CMakeLists.txt為Debug模式打開(kāi)CMakeLists.txt,輸入以下內(nèi)容。

cmake_minimum_required(VERSION 3.10)
project(test)
set(CMAKE_BUILD_TYPE Debug)
add_definitions(-Wall -ggdb -O0 -pipe)
include_directories("../../include")link_directories("../../lib")
add_executable(testtest.c)
target_link_options(testPRIVATE -lpthread -lrt -ldl -lstdc++ -lm)target_link_libraries(testzecm)

其中新增了以下內(nèi)容:

  • set(CMAKE_BUILD_TYPE Debug)配置編譯類型為debug模式;
  • add_definitions(-Wall -ggdb -O0 -pipe)增加編譯參數(shù),-Wall開(kāi)啟所有編譯警告與提示,指定調(diào)試器為gdb,并-O0關(guān)閉所有編譯優(yōu)化。

注意:set(CMAKE_BUILD_TYPE Debug) add_definitions(-Wall -ggdb -O0 -pipe)這兩行為debug必需,且不能開(kāi)-O優(yōu)化,必須寫-O零,否則調(diào)試信息會(huì)不完整并錯(cuò)亂,斷點(diǎn)或單步調(diào)試會(huì)錯(cuò)位。2. 配置本地VSCode的gdb在側(cè)邊欄點(diǎn)Debug,打開(kāi)下拉欄,點(diǎn)Add Configure,生成新的配置文件。或點(diǎn)擊“create a new launch.json file”。將以下配置復(fù)制進(jìn)去并作相應(yīng)修改,保存。

6ffefff0-36be-11f0-8605-92fbcf53809c.png

圖4 配置launch.json

70095220-36be-11f0-8605-92fbcf53809c.png

圖5 配置launch.json 2在launch.json中寫入以下內(nèi)容。

{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version":"0.2.0","configurations": [ { "name":"g++", "type":"cppdbg", "request":"launch", "program":"${workspaceFolder}/build/${fileBasenameNoExtension}", "args": [ "test.xml" ], "cwd":"${workspaceFolder}", "stopAtEntry":false, "externalConsole":false, "useExtendedRemote":true, "MIMode":"gdb", "targetArchitecture":"arm", "setupCommands": [ { "description":"Enable pretty-printing for gdb", "text":"-enable-pretty-printing", "ignoreFailures":true }, { "description":"set up remote debug program", "text":"set remote exec-file${fileBasenameNoExtension}", "ignoreFailures":false }, ], "miDebuggerPath":"D:/aarch64-linux/bin/aarch64-linux-gnu-gdb.exe", // "miDebuggerPath": "/usr/bin/gdb-multiarch", "miDebuggerServerAddress":"192.168.1.136:2000" } ]}

這個(gè)文件很重要,遠(yuǎn)程gdb調(diào)試的配置項(xiàng)大多都在這個(gè)文件中。下面會(huì)對(duì)文件中的每個(gè)需要配置的選項(xiàng)進(jìn)行說(shuō)明:2.1 "program": "${workspaceFolder}/build/${fileBasenameNoExtension}",此選項(xiàng)要指向放在本地的要執(zhí)行的程序。例如可以寫成${workspaceFolder}/build/hello。fileBasenameNoExtension的意思是,如果當(dāng)前主界面打開(kāi)hello.c源文件,則fileBasenameNoExtension == hello,將啟動(dòng)同名程序調(diào)試,根據(jù)實(shí)際情況替換為實(shí)際程序名或保留。
2.2 "args": ["test.xml"],傳給程序的命令行參數(shù)。注意調(diào)試EtherCAT的時(shí)候,命令行參數(shù)ENI文件名從此項(xiàng)配置傳入,但是ENI文件必須先上傳到ZMC900E,與gdbserver和調(diào)試程序放在同一路徑下。2.3

{"description":"set up remote debug program","text":"set remote exec-file${fileBasenameNoExtension}","ignoreFailures":false}

項(xiàng)設(shè)置配合gdbserver --multi COM使用,可以避免頻繁重啟gdbserver,${fileBasenameNoExtension}同樣根據(jù)實(shí)際情況替換為實(shí)際程序名或保留。2.4 "miDebuggerPath": "D:/aarch64-linux/bin/aarch64-linux-gnu-gdb.exe",指向本地gdb,推薦使用絕對(duì)路徑,這里指向的是交叉編譯鏈里的gdb。2.5 "miDebuggerServerAddress": "192.168.1.136:2000" ,遠(yuǎn)程gdbserver開(kāi)啟時(shí)綁定的接口。3. 啟動(dòng)ZMC900E上的遠(yuǎn)程gdbserverssh遠(yuǎn)程登錄到ZMC900E,把gdbserver傳到ZMC900E并放在和待執(zhí)行程序同一路徑下,切換到工作路徑,運(yùn)行。

# ZMC900E./gdbserver --multi 192.168.1.136:200

此處參數(shù)—multi(兩條杠)可以避免頻繁啟動(dòng)gdbserver,使其開(kāi)啟后可以反復(fù)遠(yuǎn)程連接。192.168.1.136為與電腦連接的網(wǎng)口的IP地址,net1默認(rèn)為192.168.1.136。端口號(hào)選擇一個(gè)不會(huì)和其他程序沖突的端口,例如2000。4. VSCode連接遠(yuǎn)程gdbserver,開(kāi)始調(diào)試在VSCode中,打開(kāi)源代碼,在gdb調(diào)試頁(yè)中選擇剛剛配置的調(diào)試選項(xiàng),按F5,等待其連接并運(yùn)行。

70144644-36be-11f0-8605-92fbcf53809c.png

圖6 啟動(dòng)遠(yuǎn)程調(diào)試可以看到程序成功運(yùn)行且斷點(diǎn)有效,并且變量列表里也可以實(shí)時(shí)獲取變量的值,可進(jìn)行單步調(diào)試,與本地程序調(diào)試無(wú)異。5. VSCode Debug調(diào)試界面介紹首先介紹工具欄。啟動(dòng)調(diào)試后,會(huì)在代碼編輯界面上方浮動(dòng)一個(gè)工具欄。該工具欄的功能從左到右為:繼續(xù)運(yùn)行、按行/步驟運(yùn)行、按步運(yùn)行、運(yùn)行直到當(dāng)前調(diào)用棧退出、重新啟動(dòng)程序和停止調(diào)試。

701f83ec-36be-11f0-8605-92fbcf53809c.png

圖7 調(diào)試工具欄左側(cè)從上往下進(jìn)行介紹。VARIABLES是變量窗口,可以查看局部變量和全局變量的值,還可以在調(diào)試中手動(dòng)修改值進(jìn)行測(cè)試。WATCH是監(jiān)視窗口,可以將變量或表達(dá)式添加進(jìn)去進(jìn)行持續(xù)查看。CALL STACK是程序當(dāng)前的調(diào)用棧情況。BREAKPOINTS是當(dāng)前調(diào)試的斷點(diǎn)情況。

70269b64-36be-11f0-8605-92fbcf53809c.png

圖8 調(diào)試變量、監(jiān)測(cè)、調(diào)用棧和斷點(diǎn)等窗口下方log會(huì)打印VSCode gdb插件的一些日志信息。

702df206-36be-11f0-8605-92fbcf53809c.png

圖9 VSCode gdb插件日志在ZMC900E上,gdbserver也會(huì)打印一些日志。

7039fdc6-36be-11f0-8605-92fbcf53809c.png

圖10 gdbserver日志
6faa2c28-36be-11f0-8605-92fbcf53809c.jpg ?注意事項(xiàng)

gdbserver開(kāi)啟后由于捕捉了SIGNT信號(hào),即ctrl+C信號(hào),無(wú)法用命令行直接退出。如果要退出gdbserver可以另外開(kāi)一個(gè)終端,用ps -A查看pid,然后kill -9 pid。
6fb95e0a-36be-11f0-8605-92fbcf53809c.jpg ?ZMC900E高性能EtherCAT主站控制器

70491e82-36be-11f0-8605-92fbcf53809c.jpg

圖11ZMC900E高性能EtherCAT主站控制器

ZMC900E是ZLG致遠(yuǎn)電子開(kāi)發(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 示意圖及接口圖如下所示:

705489ca-36be-11f0-8605-92fbcf53809c.jpg

圖12ZMC900E接口

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 遠(yuǎn)程調(diào)試

    關(guān)注

    0

    文章

    44

    瀏覽量

    8708
  • GDBServer
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    2367
  • vscode
    +關(guān)注

    關(guān)注

    1

    文章

    167

    瀏覽量

    8333
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    VSCode中使用J-Link調(diào)試嵌入式系統(tǒng)

    Visual Studio Code是微軟推出的免費(fèi)的源代碼編輯器,通過(guò)插件,可以實(shí)現(xiàn)GDB +J-Link+GDBServer方式在VSCode調(diào)試嵌入式系統(tǒng)。
    發(fā)表于 08-18 11:06 ?2253次閱讀
    在<b class='flag-5'>VSCode</b>中使用J-Link<b class='flag-5'>調(diào)試</b>嵌入式系統(tǒng)

    vscode remote ssh + gdbserver 調(diào)試

    問(wèn)題的還是不夠高效,命令行形式gdb還是太簡(jiǎn)陋了,在IDE debug代碼打斷點(diǎn),查堆棧變量那些習(xí)以為常的東西,在gdb這里怎么用怎么不習(xí)慣,可視化操作不比敲命令行來(lái)的香嗎?最近正好研究了下vscode remote ssh + gdbserver
    發(fā)表于 11-04 06:02

    使用Qt Creator提供的遠(yuǎn)程部署調(diào)試的方法

    使用Qt Creator遠(yuǎn)程調(diào)試部署應(yīng)用到嵌入式linux開(kāi)發(fā)板最近在調(diào)試開(kāi)發(fā)一款Cottex-A5的開(kāi)發(fā)板上的應(yīng)用,主要使用了Qt作為GUI開(kāi)發(fā)應(yīng)用,之前用Yocto搭建好系統(tǒng)發(fā)行版和主機(jī)交叉編譯
    發(fā)表于 11-05 07:20

    基于VSCode的嵌入式開(kāi)發(fā)的可視化代碼調(diào)試方法分享

    一種基于VSCode的嵌入式開(kāi)發(fā)的可視化代碼調(diào)試方法關(guān)鍵字: VSCode、gdbserver、可視化調(diào)試、嵌入式開(kāi)發(fā)案例簡(jiǎn)述隨著本組業(yè)務(wù)的
    發(fā)表于 12-14 07:54

    嵌入式遠(yuǎn)程調(diào)試工具gdbserver怎么使用?

    嵌入式遠(yuǎn)程調(diào)試工具gdbserver怎么使用?
    發(fā)表于 12-24 07:26

    VS Code + gdbserver嵌入式arm遠(yuǎn)程調(diào)試的過(guò)程是怎樣的

    VS Code + gdbserver嵌入式arm遠(yuǎn)程調(diào)試的過(guò)程是怎樣的
    發(fā)表于 12-24 07:43

    通過(guò)VSCode對(duì)RISC-V進(jìn)行遠(yuǎn)程調(diào)試并開(kāi)發(fā)

    /x86_64-linux-gnu/libncursesw.so.5VSCode遠(yuǎn)程開(kāi)發(fā)通過(guò)VSCode遠(yuǎn)程到ubuntu中,這里可以參考Window SSH
    發(fā)表于 09-19 16:16

    GDBServer編譯指南_基于 EasyARM-i.MX287A 開(kāi)發(fā)套件

    本文基于 EasyARM-i.MX287A 開(kāi)發(fā)套件,介紹如何編譯 GDBServer 軟件以使用開(kāi)發(fā)套件的遠(yuǎn)程調(diào)試功能。
    發(fā)表于 12-15 11:48 ?0次下載

    使用 VSCode 遠(yuǎn)程 圖形化 GDB 調(diào)試 嵌入式linux

    問(wèn)題的還是不夠高效,命令行形式gdb還是太簡(jiǎn)陋了,在IDE debug代碼打斷點(diǎn),查堆棧變量那些習(xí)以為常的東西,在gdb這里怎么用怎么不習(xí)慣,可視化操作不比敲命令行來(lái)的香嗎?最近正好研究了下vscode remote ssh + gdbserver
    發(fā)表于 11-01 17:06 ?1次下載
    使用 <b class='flag-5'>VSCode</b> <b class='flag-5'>遠(yuǎn)程</b> 圖形化 GDB <b class='flag-5'>調(diào)試</b> 嵌入式linux

    配置VScode編譯、調(diào)試STM32(二)Cortex-Debug插件

    配置VScode編譯、調(diào)試STM32(二)Cortex-Debug插件
    發(fā)表于 12-01 12:21 ?17次下載
    配置<b class='flag-5'>VScode</b>編譯、<b class='flag-5'>調(diào)試</b>STM32(二)Cortex-Debug插件

    stm32cubeMX+vscode開(kāi)發(fā)編譯調(diào)試stm32程序

    stm32cubeMX+vscode開(kāi)發(fā)編譯調(diào)試stm32程序安裝vscode安裝make工具安裝交叉編譯工具鏈安裝openocd安裝clang llvm生成并編譯代碼配置vscode
    發(fā)表于 12-24 19:31 ?6次下載
    stm32cubeMX+<b class='flag-5'>vscode</b>開(kāi)發(fā)編譯<b class='flag-5'>調(diào)試</b>stm32程序

    VSCode使用-搭建python運(yùn)行調(diào)試環(huán)境

    VSCode是一個(gè)優(yōu)秀的編輯工具,適合代碼閱讀,代碼編輯,甚至配置好之后,可以編譯與調(diào)試代碼。
    的頭像 發(fā)表于 05-04 10:00 ?1184次閱讀
    <b class='flag-5'>VSCode</b>使用-搭建python運(yùn)行<b class='flag-5'>調(diào)試</b>環(huán)境

    如何使用gdbserver對(duì)目標(biāo)開(kāi)發(fā)板上的程序進(jìn)行遠(yuǎn)程調(diào)試

    本篇講解如何使用 gdbserver 對(duì)目標(biāo)開(kāi)發(fā)板上的程序進(jìn)行遠(yuǎn)程調(diào)試。 安裝 GDBSERVER 首先在開(kāi)發(fā)板上安裝 gdbserver
    的頭像 發(fā)表于 10-04 15:27 ?1598次閱讀

    ZMC900E 國(guó)產(chǎn)EtherCAT主站控制器 — 電源口傳導(dǎo)騷擾整改

    為確保EtherCAT主站控制器在工業(yè)自動(dòng)化中的可靠和穩(wěn)定應(yīng)用,EMC測(cè)試至關(guān)重要。本文以ZMC900E電源傳導(dǎo)騷擾整改為例,深入解析EMC原理,助您精準(zhǔn)定位問(wèn)題,避免無(wú)效整改。圖1ZMC900E
    的頭像 發(fā)表于 03-07 08:23 ?1231次閱讀
    <b class='flag-5'>ZMC900E</b> 國(guó)產(chǎn)EtherCAT主站控制器 — 電源口傳導(dǎo)騷擾整改

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

    ZMC900E是致遠(yuǎn)電子研發(fā)的最新一代高性能EtherCAT控制器,支持ROS2系統(tǒng),兼?zhèn)鋸?qiáng)大功能和實(shí)時(shí)性,為工業(yè)應(yīng)用帶來(lái)新的可能。本文將詳述ROS2特點(diǎn)和安裝,助力用戶在機(jī)器人上的二次開(kāi)發(fā)
    的頭像 發(fā)表于 04-29 08:24 ?883次閱讀
    <b class='flag-5'>ZMC900E</b>控制器之ROS2環(huán)境安裝指南
    主站蜘蛛池模板: 亚洲成a人v在线观看 | 四虎影院永久网站 | 丁香婷五月 | 成人综合在线视频 | 欧美一区二区视频三区 | 日韩精品一级毛片 | 亚洲wuma| 一区一精品 | 特黄黄三级视频在线观看 | 国产卡1卡2卡三卡网站免费 | 一级黄色毛毛片 | 国产精品人人爱一区二区白浆 | 亚洲欧美日韩国产一区二区三区精品 | 成年女人色费视频免费 | 丁香狠狠 | 色综合狠狠 | 99久久免费中文字幕精品 | 性欧美性free | 四虎在线最新永久免费 | 欧美在线视| 天天躁日日2018躁狠狠躁 | 天天爽夜夜爽精品视频一 | 亚洲ol| 亚洲qingse中文字幕久久 | 福利在线看片 | 色天使色婷婷丁香久久综合 | 玖玖玖精品视频免费播放 | 欧美在线视| 久久手机看片你懂的日韩1024 | 九九精品国产兔费观看久久 | 毛片网此 | 国产色婷婷精品综合在线手机播放 | 亚洲一区二区在线 | 人人干综合 | 性xxxxbbbb免费播放视频 | 男人j进入女人j在线视频 | 成人免费播放视频777777 | 亚洲五月综合网色九月色 | 亚洲欧美一区二区久久香蕉 | 欧美三级视频在线 | 亚洲婷婷综合中文字幕第一页 |