日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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)注

    5209

    文章

    20679

    瀏覽量

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

    關(guān)注

    31

    文章

    5620

    瀏覽量

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

    關(guān)注

    0

    文章

    61

    瀏覽量

    13960
  • DEBUG
    +關(guān)注

    關(guān)注

    3

    文章

    95

    瀏覽量

    21445

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    NRF54L15DK串行恢復(fù)模式?jīng)]有了藍(lán)牙功能,應(yīng)該怎樣在藍(lán)牙模式下進(jìn)行ota

    在 MCUboot 的串行恢復(fù)(Serial Recovery)模式下,是 只有串口 DFU 功能,沒有應(yīng)用和藍(lán)牙協(xié)議棧在運行的 ,所以你看不到藍(lán)牙功能,這是正?,F(xiàn)象。 原因是: 串行恢復(fù)
    發(fā)表于 02-12 10:06

    DR1平臺Linux應(yīng)用開發(fā)指南:含GDB調(diào)試、Python及MQTT實戰(zhàn)

    本文為創(chuàng)龍科技DR1 系列評估板 Linux 應(yīng)用開發(fā)手冊,系統(tǒng)講解開發(fā)環(huán)境搭建、GDB 調(diào)試、多類型應(yīng)用案例及 MQTT 通信實現(xiàn)。核心內(nèi)容包括 LinuxSDK 與工具鏈配置、GDB 遠(yuǎn)程調(diào)試
    的頭像 發(fā)表于 01-05 16:48 ?4849次閱讀
    DR1平臺Linux應(yīng)用開發(fā)指南:含<b class='flag-5'>GDB</b>調(diào)試、Python及MQTT實戰(zhàn)

    進(jìn)迭時空 debug upstream | 取之于開源,貢獻(xiàn)于開源

    。Debug相關(guān)軟件項目概覽RISC-V調(diào)試所涉及的核心開源軟件主要包括GDB和OpenOCD。GDB(GNUDebugger)是GNU項目下的功能強(qiáng)大的源碼級調(diào)
    的頭像 發(fā)表于 11-17 09:33 ?5722次閱讀
    進(jìn)迭時空 debug upstream | 取之于開源,貢獻(xiàn)于開源

    Xilinx FPGA串行通信協(xié)議介紹

    Xilinx FPGA因其高性能和低延遲,常用于串行通信接口設(shè)計。本文深入分析了Aurora、PCI Express和Serial RapidIO這三種在Xilinx系統(tǒng)設(shè)計中關(guān)鍵的串行通信協(xié)議。介紹了它們的特性、優(yōu)勢和應(yīng)用場景
    的頭像 發(fā)表于 11-14 15:02 ?2820次閱讀
    Xilinx FPGA<b class='flag-5'>串行</b>通信<b class='flag-5'>協(xié)議</b>介紹

    ElfBoard技術(shù)貼|如何在【RK3588】ELF 2開發(fā)板進(jìn)行GDB調(diào)試

    GDB(GNU Project Debugger)是在Linux環(huán)境下功能全面的調(diào)試工具。它提供了一系列強(qiáng)大的調(diào)試功能,包括設(shè)置斷點、單步執(zhí)行、打印與觀察變量、查看寄存器及堆棧信息等。在Linux軟件開發(fā)的實踐中,GDB被視為調(diào)試C及C++程序的核心工具,廣泛用于幫助開發(fā)
    的頭像 發(fā)表于 11-11 13:47 ?5411次閱讀
    ElfBoard技術(shù)貼|如何在【RK3588】ELF 2開發(fā)板進(jìn)行<b class='flag-5'>GDB</b>調(diào)試

    蜂鳥的GDB調(diào)試時無法在斷點處停止是什么原因?

    各位大佬們,我們使用GDB調(diào)試程序的時候,在main函數(shù)打上斷點,然后在gdb中continue,程序并沒有在main函數(shù)入口處停下?請問大佬知道原因嗎?謝謝~
    發(fā)表于 11-07 06:15

    RV-STAR無法連接到GDB server的解決辦法

    demo跑一跑,現(xiàn)在卡在了“下載程序到開發(fā)板”這一步,connect to gdb server失敗,使用的是板載調(diào)試器。請問這是什么情況? 具體信息如下: 1. 我已經(jīng)安裝
    發(fā)表于 11-07 06:15

    在qemu上體驗芯來RISC-V處理器運行鴻蒙LiteOS-M內(nèi)核

    在qemu上體驗芯來RISC-V處理器運行鴻蒙LiteOS-M內(nèi)核 1.本文概述 2.下載qemu 3.下載鴻蒙LiteOS-M 4.運行與測試 5.gdb調(diào)試 1.本文概述 由于前幾天
    發(fā)表于 10-31 09:04

    使用蜂鳥調(diào)試器,無法用cjtag協(xié)議調(diào)試CM32M433R芯片怎么解決?

    : dtmcontrol is 0. Check JTAG connectivity/board power.Info : starting gdb server for riscv.cpu on 3333Info
    發(fā)表于 10-20 07:31

    求助,關(guān)于RT-Thread Studio使用ST-Linlk調(diào)試遇到的問題求解

    /platform/ST-LINK/config.txt STMicroelectronics ST-LINK GDB server. Version 5.2.3 Copyright (c) 2019
    發(fā)表于 09-29 06:36

    PLC串口自由協(xié)議通信概述

    串口自由協(xié)議通信是一種靈活的串行通信方式。在該模式下,開發(fā)者無需遵循特定標(biāo)準(zhǔn)協(xié)議,可根據(jù)實際需求自由定義數(shù)據(jù)格式與交互規(guī)則。
    的頭像 發(fā)表于 08-07 09:15 ?2346次閱讀
    PLC串口自由<b class='flag-5'>協(xié)議</b>通信<b class='flag-5'>概述</b>

    國產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開發(fā)板—GDB程序調(diào)試方法說明

    (Linux) GDB工具是GNU項目調(diào)試器,基于命令行使用。和其他的調(diào)試器一樣,可使用GDB工具單步運行程序、單步執(zhí)行、跳入/跳出函數(shù)、設(shè)置斷點、查看變量等等,它是UNIX/LINUX操作系統(tǒng)下強(qiáng)大的程序調(diào)試工具。GDB支持多
    的頭像 發(fā)表于 08-05 15:33 ?715次閱讀
    國產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開發(fā)板—<b class='flag-5'>GDB</b>程序調(diào)試方法說明

    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
    买车| 逊克县| 建德市| 乳山市| 塔城市| 济源市| 杭州市| 漯河市| 琼结县| 青冈县| 建昌县| 云龙县| 嘉峪关市| 合水县| 河北省| 河西区| 泽州县| 蓬莱市| 开江县| 垫江县| 呼玛县| 翁源县| 长阳| 龙门县| 酒泉市| 集安市| 凭祥市| 松桃| 沙坪坝区| 龙里县| 高邑县| 思南县| 华容县| 桂林市| 高密市| 寿光市| 堆龙德庆县| 中江县| 新化县| 九台市| 澄江县|