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

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

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

Segger的無限Flash斷點(diǎn)調(diào)試功能

strongerHuang ? 來源:麥克泰技術(shù) ? 作者:麥克泰技術(shù) ? 2022-05-07 09:54 ? 次閱讀

嵌入式應(yīng)用的開發(fā)過程中,雖然良好的編程實(shí)踐和配合適當(dāng)?shù)木幋a規(guī)范檢測(cè)軟件能夠減少代碼編寫階段中出現(xiàn)的錯(cuò)誤數(shù)量,但仍然不可避免的會(huì)出現(xiàn)一些只有在程序運(yùn)行過程中才會(huì)觸發(fā)的錯(cuò)誤。為了解決程序運(yùn)行過程中的問題,需要使用調(diào)試器,觀察代碼的執(zhí)行及軟件狀態(tài)變化。

在程序調(diào)試的過程中,斷點(diǎn)的重要性不言而喻。在調(diào)試狀態(tài)下,當(dāng)程序遇到斷點(diǎn)時(shí),會(huì)停止執(zhí)行并將控制權(quán)交給調(diào)試軟件,調(diào)試器可以顯示當(dāng)前應(yīng)用程序的狀態(tài),包括變量和寄存器的值,內(nèi)存、堆棧使用情況,顯示應(yīng)用程序到達(dá)斷點(diǎn)位置的函數(shù)調(diào)用關(guān)系等,這些信息可以幫助開發(fā)人員分析程序的執(zhí)行狀況是否符合預(yù)期,并在問題出現(xiàn)時(shí)幫助確定錯(cuò)誤原因。

常見的調(diào)試方法

(1)在RAM區(qū)域內(nèi)調(diào)試

在開發(fā)過程中,可以將應(yīng)用程序下載到RAM運(yùn)行和調(diào)試,調(diào)試器只需使用簡(jiǎn)單的斷點(diǎn)指令,且RAM允許多次讀取和寫入,RAM區(qū)域內(nèi)的斷點(diǎn)指令不會(huì)對(duì)程序執(zhí)行產(chǎn)生明顯的影響。但該方法的局限是MCU所擁有的RAM空間通常較小,應(yīng)用較大時(shí),無法在RAM進(jìn)行調(diào)試。

(2)在Flash區(qū)域內(nèi)調(diào)試

與RAM不同,F(xiàn)lash存儲(chǔ)空間通常較大,當(dāng)無法在RAM調(diào)試時(shí)只能在Flash區(qū)域內(nèi)進(jìn)行調(diào)試。微控制器設(shè)計(jì)人員提供了用于在Flash區(qū)域調(diào)試時(shí)使用的硬件斷點(diǎn),硬件斷點(diǎn)會(huì)將PC指針與斷點(diǎn)位置進(jìn)行比較,并檢查指令是否被調(diào)用,當(dāng)斷點(diǎn)處指令被調(diào)用時(shí),程序?qū)⑼V共?dòng)調(diào)試器。硬件斷點(diǎn)的數(shù)量由芯片所使用的內(nèi)核決定,在ARM7和ARM9內(nèi)核中僅包含2個(gè)硬件斷點(diǎn),在Cortex-M3和M4內(nèi)核中包含4-6個(gè)可用的硬件斷點(diǎn)。在調(diào)試過程中,當(dāng)硬件斷點(diǎn)數(shù)量用完時(shí)則無法添加新的斷點(diǎn),只能取消前面添加的斷點(diǎn)后才能添加新的斷點(diǎn),這無疑將嚴(yán)重影響程序開發(fā)效率。

(3)外擴(kuò)Flash存儲(chǔ)芯片調(diào)試

當(dāng)所開發(fā)的應(yīng)用程序的復(fù)雜度進(jìn)一步上升時(shí),可能會(huì)使用到外擴(kuò)的Flash存儲(chǔ),那么此時(shí)該如何進(jìn)行應(yīng)用程序調(diào)試呢?在大多數(shù)使用Cortex-M內(nèi)核的微控制器中,芯片內(nèi)部提供的硬件斷點(diǎn)在調(diào)試過程中能夠生效的地址范圍是有限的,當(dāng)使用外擴(kuò)Flash時(shí),自帶的硬件斷點(diǎn)將無法在外擴(kuò)Flash存儲(chǔ)的地址范圍內(nèi)生效,此時(shí)將無法在這些區(qū)域內(nèi)設(shè)置斷點(diǎn)來調(diào)試應(yīng)用程序。

當(dāng)使用基于地址映射擴(kuò)展的外部Flash存儲(chǔ)時(shí),Segger J-Link產(chǎn)品所支持的無限Flash斷點(diǎn)功能能夠幫助我們對(duì)片外Flash添加斷點(diǎn)并調(diào)試。

Segger無限Flash斷點(diǎn)功能

J-Link支持一項(xiàng)名為“無限Flash斷點(diǎn)”(Unlimited Flash Breakpoints)的調(diào)試功能。“無限Flash斷點(diǎn)”允許用戶在Flash中調(diào)試時(shí)設(shè)置無限數(shù)量的斷點(diǎn)。如果沒有此功能,在Flash中能夠設(shè)置的斷點(diǎn)數(shù)量限制為CPU調(diào)試單元支持的硬件斷點(diǎn)數(shù)。

J-Link的“無限Flash斷點(diǎn)”適用于片內(nèi)和外擴(kuò)的Flash,包括通過內(nèi)存映射添加的QSPI閃存。

acb3e97e-cd9e-11ec-bce3-dac502259ad0.png

無限Flash斷點(diǎn)的實(shí)現(xiàn)方式

Segger J-Link系列產(chǎn)品在實(shí)現(xiàn)無限Flash斷點(diǎn)功能時(shí),會(huì)使用硬件和軟件斷點(diǎn)的混合,來盡可能的減少對(duì)于Flash的影響。當(dāng)硬件斷點(diǎn)數(shù)量用完再添加新斷點(diǎn)時(shí),Segger軟件將對(duì)斷點(diǎn)所在位置的Flash區(qū)塊進(jìn)行重新編程來添加斷點(diǎn)。

雖然Flash存在一定的寫入次數(shù)限制,但Segger在實(shí)現(xiàn)該功能時(shí)已經(jīng)做了大量針對(duì)性的優(yōu)化來減少對(duì)于Flash的影響,例如處于同一區(qū)塊內(nèi)的多個(gè)斷點(diǎn),Segger將通過一次該Flash區(qū)塊的重編編程來完成多個(gè)斷點(diǎn)的添加。Segger僅在必要時(shí)才會(huì)對(duì)Flash區(qū)塊進(jìn)行重編程,部分操作將通過內(nèi)置的指令集模擬器來完成,從而能夠盡可能的減少對(duì)于Flash閃存的影響。

Segger的無限Flash斷點(diǎn)調(diào)試功能解除了硬件斷點(diǎn)對(duì)于程序調(diào)試的限制,能夠提升開發(fā)人員的開發(fā)效率。對(duì)于Cortex-M內(nèi)核芯片添加了外擴(kuò)Flash的情形,無限Flash斷點(diǎn)功能則可能是僅有的片外Flash調(diào)試解決方案。

審核編輯 :李倩

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

    關(guān)注

    10

    文章

    1635

    瀏覽量

    148031
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1368

    瀏覽量

    114701
  • 斷點(diǎn)
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    7710

原文標(biāo)題:如何使用J-Link無限Flash斷點(diǎn)功能調(diào)試應(yīng)用?

文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【敏矽微ME32G070開發(fā)板免費(fèi)體驗(yàn)】使用JLINK的RTT功能實(shí)現(xiàn)類似串口printf打印功能

    . 什么情況下需要用到J-Link RTT打印輸出調(diào)試信息?主要是當(dāng)我目當(dāng)前沒有功能正常的串口,但引出了SWD燒錄口,并且需要輸出一些log進(jìn)行調(diào)試驗(yàn)證等,這時(shí)我們可以通過SWD口,用Jlink工具讀取
    發(fā)表于 12-15 20:30

    SEGGER為J-Link和Flasher提供Device Provisioner工具

    日前,SEGGER宣布為其Flasher系列編程器以及J-Link和J-Trace系列調(diào)試跟蹤工具提供Device Provisioner工具。
    的頭像 發(fā)表于 10-22 15:12 ?415次閱讀

    網(wǎng)關(guān)斷點(diǎn)續(xù)傳可以實(shí)現(xiàn)什么功能

    在數(shù)字化時(shí)代,數(shù)據(jù)傳輸?shù)男屎头€(wěn)定性成為了衡量信息系統(tǒng)性能的重要指標(biāo)之一。隨著云計(jì)算、大數(shù)據(jù)、物聯(lián)網(wǎng)等技術(shù)的飛速發(fā)展,數(shù)據(jù)量的爆炸性增長(zhǎng)對(duì)數(shù)據(jù)傳輸技術(shù)提出了更高要求。在這樣的背景下,網(wǎng)關(guān)斷點(diǎn)續(xù)傳功能
    的頭像 發(fā)表于 10-16 13:53 ?217次閱讀

    兆易創(chuàng)新和SEGGER探索MCU開發(fā)的無限可能

    2023年12月,兆易創(chuàng)新(GigaDevice)與業(yè)界著名工具鏈廠商德國(guó)SEGGER Microcontroller GmbH(以下簡(jiǎn)稱“SEGGER”)向所有使用GD32V系列RISC-V
    的頭像 發(fā)表于 08-22 09:51 ?1066次閱讀

    SEGGER編譯器優(yōu)化和安全技術(shù)介紹 支持最新C和C++語言

    SEGGER編譯器是專門為ARM和RISC-V微控制器設(shè)計(jì)的優(yōu)化C/C++編譯器。它建立在強(qiáng)大的Clang前端上,支持最新的C和C++語言功能。 除其他外,其主要功能包括: 1)?尺寸優(yōu)化:通過調(diào)整
    的頭像 發(fā)表于 06-04 15:31 ?1467次閱讀
    <b class='flag-5'>SEGGER</b>編譯器優(yōu)化和安全技術(shù)介紹 支持最新C和C++語言

    AG32 下使用 Segger RTT

    SEGGER RTT: RTT 是一種調(diào)試手段。 它可以從 MCU 快速輸出調(diào)試信息和數(shù)據(jù),且不影響 MCU 的實(shí)時(shí)性。 在代碼中對(duì) printf 輸出進(jìn)行重定向后,就可以通過仿真器(jlink 或
    發(fā)表于 05-29 09:44

    STM32G031K8程序打斷點(diǎn)在STARTUP.S文件中,停在斷點(diǎn)處會(huì)導(dǎo)致操作flash錯(cuò)誤怎么解決?

    特殊,默認(rèn)會(huì)寫一點(diǎn)內(nèi)容在FLASH里面,以前看到有人在原版說明上有個(gè)截圖。我試過,與FLASH有關(guān)的操作,不使用斷點(diǎn)就正常。當(dāng)然為了調(diào)試方便,可以換個(gè)編譯器或者在原版說明上找個(gè)變通的方
    發(fā)表于 03-25 07:38

    FX3有辦法讓SDK1.3.5與JTAG調(diào)試器配合使用嗎?

    使用 Segger J- 6EDL_SPI_LINK GDB 服務(wù)器的調(diào)試配置。 我看到控制臺(tái)中打印了多個(gè)錯(cuò)誤,如下所示: 827^error,msg=\"Dwarf Error:無法找到從
    發(fā)表于 03-06 07:56

    XMC4108想通過中斷斷點(diǎn)逐步調(diào)試,但中斷斷點(diǎn)不起作用怎么解決?

    我正在使用DAVE? EVAL_16W_66V_BCK_CE IDE,我在 XMC4108 控制器中遇到一個(gè)問題。 調(diào)試時(shí),它不會(huì)觸及中斷的斷點(diǎn)。 它是直接運(yùn)行程序的,我想通過中斷斷點(diǎn)逐步調(diào)試
    發(fā)表于 03-05 08:16

    關(guān)于使用SEGGER JLink在CX3自定義主板上調(diào)試的疑問求解

    ;quot; 上設(shè)置斷點(diǎn),我就能看到調(diào)試器可以在 " cycx3AppDebuginit () " 也就是 " cycx3AppInit
    發(fā)表于 02-23 06:21

    雅特力AT32 MCU與SEGGER攜手合作,開發(fā)量產(chǎn)事半功倍

    近日,雅特力與SEGGER共同宣布J-Link仿真調(diào)試器與Flasher在線燒錄器全面支持AT32MCU產(chǎn)品,SEGGER工具鏈的加持使AT32MCU開發(fā)如虎添翼。雅特力自2018年對(duì)外銷售以來
    的頭像 發(fā)表于 02-22 08:13 ?484次閱讀
    雅特力AT32 MCU與<b class='flag-5'>SEGGER</b>攜手合作,開發(fā)量產(chǎn)事半功倍

    DCS系統(tǒng)調(diào)試內(nèi)容及方法

    在這一層次中,通過設(shè)置斷點(diǎn)1、2,使DCS調(diào)試與輔助儀表盤儀表調(diào)試相對(duì)獨(dú)立、互不干擾,從而便于實(shí)現(xiàn)對(duì)這兩個(gè)工序的平行作業(yè),并可避免因設(shè)備狀態(tài)不正?;蚪泳€錯(cuò)誤等原因造成設(shè)備的損壞。
    發(fā)表于 01-18 10:46 ?1846次閱讀
    DCS系統(tǒng)<b class='flag-5'>調(diào)試</b>內(nèi)容及方法

    在TC357TA MCU上使用ADS-Limited進(jìn)行調(diào)試時(shí),程序會(huì)在沒有斷點(diǎn)功能處中斷怎么解決?

    在 TC357TA MCU 上使用 ADS-Limited 進(jìn)行調(diào)試時(shí),程序會(huì)在沒有斷點(diǎn)功能處中斷。 而且,即使我一直點(diǎn)擊 \" resume \",程序也會(huì)不斷在同一個(gè)地方
    發(fā)表于 01-18 09:51

    SEGGER宣布推出新的Embedded Studio- V8.10

    SEGGER宣布推出新的Embedded Studio- V8.10。這款先進(jìn)的多平臺(tái)IDE現(xiàn)在通過單一設(shè)置支持多種架構(gòu)。同一軟件可用于為RISC-V和ARM目標(biāo)處理器構(gòu)建和調(diào)試應(yīng)用程序。(以前需要安裝ARM和RISC-V兩個(gè)版本的IDE)。
    的頭像 發(fā)表于 01-16 11:06 ?1458次閱讀

    SEGGER調(diào)試低功耗模式

    開發(fā)人員提供了一套完整的工具套件,能夠幫助他們開發(fā)和調(diào)試低功耗模式。 SEGGER是一家致力于嵌入式系統(tǒng)開發(fā)工具的領(lǐng)導(dǎo)者,其J-Link調(diào)試器系列在全球范圍內(nèi)得到廣泛應(yīng)用。下面,我們將詳細(xì)介紹
    的頭像 發(fā)表于 01-02 16:36 ?633次閱讀