91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

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

GDB串行協(xié)議概述 GDB Server的作用

嵌入式小作坊 ? 來源:51cto博客 ? 作者:趙夢茹2012 ? 2021-08-10 10:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.概述做嵌入式開發(fā)時,很多時候都會使用到GDB,從底層去理解GDB的調(diào)試過程,將更加容易的理解調(diào)試的過程。

在做嵌入式開發(fā)調(diào)試時,可理解為兩個部分

嵌入式系統(tǒng)平臺,啟動一個debug stub

宿主機(jī),啟動gdb

兩個平臺之間通過串行數(shù)據(jù)總線連接起來。

2.GDB Server的作用當(dāng)PC機(jī)啟動GDB時,需要和GDB Server建立一定的通信連接,由GDB Server解析具體的邏輯并執(zhí)行。

所以GDB Server可以是一個openocd,或者JTAG等等實際的外設(shè)模塊,和目標(biāo)板子進(jìn)行連接后,可以調(diào)試芯片。它本質(zhì)上是一個解析GDB協(xié)議的模塊,或者是一段后臺的程序。

相應(yīng)GDB的請求

當(dāng)gdb和嵌入式平臺進(jìn)行通信的時候,會發(fā)一系列的請求,例如:

讀寫內(nèi)存

讀寫寄存器

設(shè)置或者清除斷點

提供調(diào)試Trap

GDB斷點的Trap

無效指令的Trap

系統(tǒng)錯誤的Trap

同步傳輸CPU的狀態(tài)和到遠(yuǎn)程的GDB中。

3.一個標(biāo)準(zhǔn)的gdb的調(diào)試過程一般的正常使用編譯工具鏈中都會有g(shù)db的工具,就拿riscv的來說,用riscv-nuclei-elf-gdb.exe去連接qemu上的gdb stub時,采用的是tcp協(xié)議。

當(dāng)qemu去啟動gdb server的時候。

qemu-system-riscv32.exe -M gd32vf103v_rvstar -cpu -nographic -s -S

后面的-s表示啟動gdb server。而-S則表示綁定在TCP端口的1234端口號上。

995199c4-f86c-11eb-9bcf-12bb97331649.png

從操作上是這個流程,那么底層的數(shù)據(jù)傳送又是怎樣的流程呢?

4.GDB 遠(yuǎn)程串行協(xié)議解析一個標(biāo)準(zhǔn)的GDB串行協(xié)議的格式如下

$packet-data#checksum

其中的消息是通過ASCII碼進(jìn)行傳輸,以$開始,以#結(jié)束。最后的checksum是命令的校驗和。

上面就是通過Wireshark監(jiān)聽到的協(xié)議數(shù)據(jù)。

GDB與GDB server進(jìn)行通信的時候,采用收發(fā)形式進(jìn)行,必然會有下面的通信過程

發(fā)送:

$packet-data#checksum

回復(fù)

+

每次都需要回復(fù)一個+,表示收到數(shù)據(jù)。

當(dāng)沒有接受到數(shù)據(jù),或者超時時,需要進(jìn)行重傳操作。

下面就是一個實際的通信過程。

9a068f0a-f86c-11eb-9bcf-12bb97331649.png

gdb 和 target之間的通信一直會采用收發(fā)對稱的數(shù)據(jù)格式

比如寫內(nèi)存

gdb會調(diào)用set 0x4015cc = 0xc320。

那么gdb底層的通信是

$M4015CC,2:C320#6d

目標(biāo)機(jī)收到數(shù)據(jù)后,會首先返回

+

接著返回狀態(tài)

$OK#9a

這樣,一個通過gdb操作內(nèi)存的中的數(shù)據(jù)的通信協(xié)議就完成了。

由于GDB的指令非常多,這里就不列舉了,但是基本的原理和格式都差別不大。

比如單步調(diào)試的指令

step:

[gdb] $s#73

向下執(zhí)行的指令

Continue

[gdb] $c#63

控制臺輸出

Console Output

[target] $o48656c6c6f2c20776f726c64210a#55

這樣可以在gdb控制臺上輸出hello,world!的命令。

關(guān)于命令的格式可以查看官方文檔

https://sourceware.org/gdb/onlinedocs/gdb/Stop-Reply-Packets.html

但是舉出一些基本的規(guī)律

5.小結(jié)用采用GDB進(jìn)行調(diào)試的過程,底層的傳輸原理,采用的是非常簡單的字符串的格式,這GDB將這些命令發(fā)給硬件調(diào)試器或者板子,通過將這些命令解析后,執(zhí)行具體的邏輯,就可以正常的控制芯片中程序的行為了。這就是GDB的串行協(xié)議原理。

編輯:jq

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

    關(guān)注

    5152

    文章

    19676

    瀏覽量

    317747
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5434

    瀏覽量

    124585
  • gdb
    gdb
    +關(guān)注

    關(guān)注

    0

    文章

    60

    瀏覽量

    13606
  • DEBUG
    +關(guān)注

    關(guān)注

    3

    文章

    95

    瀏覽量

    20578

原文標(biāo)題:GDB串行協(xié)議概述

文章出處:【微信號:gh_390c588e521e,微信公眾號:嵌入式小作坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

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

    cyw43907使用SWD進(jìn)行下載的時候,第二次下載就會報錯,為什么?

    在使用SWD進(jìn)行下載的時候,首次進(jìn)行下載是沒問題的,但是第二次下載就會報錯。這種現(xiàn)象是偶發(fā)的,不是所有板子都有這個現(xiàn)象。 SEGGER J-Link GDB Server V7.56 Command
    發(fā)表于 07-09 06:40

    PSoC 6 BLE PIONEER KIT燒錄Bluetooth_LE_Battery_Server的demo進(jìn)行調(diào)試時,無法成功燒錄的原因?

    我在使用PSoC 6 BLE PIONEER KIT調(diào)試時,嘗試燒錄Bluetooth_LE_Battery_Server的demo進(jìn)行調(diào)試時,發(fā)現(xiàn)無法成功燒錄,并提示如下信息,請問下是什么原因呢
    發(fā)表于 07-01 07:37

    CM7能成功調(diào)試但CM4始終報\"Failed to read ROM table via AP 3\"錯誤,怎么解決?

    sequence: Failed to start GDB server Failed to start GDB server ST-Link設(shè)備進(jìn)行初始化時出錯。 原因:(255)
    發(fā)表于 06-06 08:04

    使用STM32CubeIDE對STM32H7進(jìn)行開發(fā)和調(diào)試,CM4始終報\"Failed to read ROM table via AP 3\"錯誤怎么解決?

    sequence: Failed to start GDB server Failed to start GDB server ST-Link設(shè)備進(jìn)行初始化時出錯。 原因:(255)
    發(fā)表于 05-14 06:20

    STM32H7雙核調(diào)試,CM7能成功調(diào)試但CM4始終報\"Failed to read ROM table via AP 3\"錯誤是怎么回事?

    sequence: Failed to start GDB server Failed to start GDB server ST-Link設(shè)備進(jìn)行初始化時出錯。 原因:(255)
    發(fā)表于 04-27 06:40

    i.MX93使用J-Link和SYSRESETREQ的Cortex-M33復(fù)位不起作用怎么解決?

    寄存器和內(nèi)存等。 我的問題是,重置處理器不起作用。寄存器的內(nèi)容不會改變,因此我假設(shè) reset 被忽略: (gdb) 監(jiān)視器 regs R0 = 40D000C0,R1 = 2001EFE3,R2
    發(fā)表于 04-11 06:25

    STM32CubeIDE無法啟動正常調(diào)試是哪里出了問題?

    STM32CubeIDE始終正常使用中,昨日系統(tǒng)升級為 macOS Sequoia 版本,啟動調(diào)試出現(xiàn)錯誤提示,重新安裝應(yīng)用程序及 st-stlink-server 驅(qū)動,仍提示同樣錯誤。 目前
    發(fā)表于 03-14 16:30

    CubeIDE下載程序時報錯Target no device found,但是ST-LinkUpgrade可以識別到且可以更新固件,為什么?

    STMicroelectronics ST-LINK GDB server. Version 7.8.0 Copyright (c) 2024, STMicroelectronics. All
    發(fā)表于 03-14 07:21

    為什么會報錯Could not determine GDB version using command: arm-none-eabi-gdb --version?

    我已經(jīng)重啟電腦了,沒用; 重裝軟件沒有,沒有; 將ST_link_server卸載重裝也沒有; 將arm-none-eabi-gdb加入windows 11系統(tǒng)環(huán)境變量,也沒用; 將軟件的GDB
    發(fā)表于 03-12 08:08

    rs232-hs讀取idcode的時候出現(xiàn)0xffffffff的情況,怎么處理?

    Info : starting gdb server for riscv.cpu on 3333 Info : Listening on port 3333 for gdb connections
    發(fā)表于 03-07 12:59

    dbForge Studio For SQL Server:用于有效開發(fā)的最佳SQL Server集成開發(fā)環(huán)境

    dbForge Studio For SQL Server:用于有效開發(fā)的最佳SQL Server集成開發(fā)環(huán)境 SQL編碼助手 SQL代碼分析 查詢分析器 可視化查詢生成器 數(shù)據(jù)和模式比較 源代碼
    的頭像 發(fā)表于 01-16 10:36 ?748次閱讀

    AN-724: ADuC70xx串行下載協(xié)議

    電子發(fā)燒友網(wǎng)站提供《AN-724: ADuC70xx串行下載協(xié)議.pdf》資料免費下載
    發(fā)表于 01-14 15:55 ?0次下載
    AN-724: ADuC70xx<b class='flag-5'>串行</b>下載<b class='flag-5'>協(xié)議</b>

    CAN總線與其他串行通信協(xié)議比較

    CAN總線與其他串行通信協(xié)議相比,具有其獨特的特點和優(yōu)勢。以下是對CAN總線與UART、I2C、SPI等常見串行通信協(xié)議的比較: 一、基本特性比較
    的頭像 發(fā)表于 11-12 09:56 ?2231次閱讀

    Nat server技術(shù)原理和配置過程

    Nat server:指定公有地址:端口和私有地址:端口形成一對一映射關(guān)系——映射表。這也是Nat server與其他nat的區(qū)別之一,Nat server可以指定端口進(jìn)行映射。
    的頭像 發(fā)表于 10-10 14:38 ?1445次閱讀
    Nat <b class='flag-5'>server</b>技術(shù)原理和配置過程

    ESP32-C3使用命令行GDB調(diào)試出現(xiàn)報錯的原因?

    使用 continue 全速運行,程序停在斷點位置 此時 GDB 不會打印當(dāng)前行號以及本行代碼,而是出現(xiàn)出現(xiàn)以下情況 (gdb) cContinuing.Thread 2 \"main\"
    發(fā)表于 08-01 07:47
    主站蜘蛛池模板: 国产手机看片 | www五月天com | 日韩黄色录像 | 亚洲欧美日韩在线观看你懂的 | 一色屋免费视频 | 日韩大尺度视频 | 亚洲欧美视频在线观看 | 国产在线观看www鲁啊鲁免费 | 久操视频网站 | 尤物蜜芽福利国产污在线观看 | 我要色综合网 | 精品国产一区二区三区国产馆 | 亚洲影视大全 | 91精品福利视频 | 午夜影院a| 日本一道高清不卡免费 | 精品福利| 四虎影院免费在线播放 | chinese国产videoxx实拍 | 狠狠色色综合网站 | 四虎在线最新永久免费播放 | 亚洲综合色婷婷中文字幕 | 午夜影院0606 | 天天狠天天插 | 日本bbxx| 天天综合天天添夜夜添狠狠添 | 亚洲你懂的 | www.黄网| 亚洲一区视频在线 | www懂爱 | 综合网激情 | 狠狠色96视频 | 国模吧双双大尺度炮交gogo | 奇米奇米 | 高清一级做a爱视频免费 | 国模谢心2013.05.06私拍 | 国产午夜毛片v一区二区三区 | 欧美成人观看免费全部完小说 | 天天摸日日干 | 2019天天干天天操 | 国产综合免费视频 |