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

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

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

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

不復(fù)位MCU繼續(xù)調(diào)試的方法

STM32單片機(jī) ? 來源:STM32單片機(jī) ? 2024-01-26 09:25 ? 次閱讀

01前言

在產(chǎn)品開發(fā)時,經(jīng)常會碰到在測試過程中或設(shè)備出廠后才發(fā)現(xiàn)程序異常,但當(dāng)重新對設(shè)備仿真調(diào)試時卻復(fù)現(xiàn)不出現(xiàn)場的問題,或者只通過保存的日志信息艱難分析代碼運(yùn)行到了何處而導(dǎo)致的異常。

遇到這種場景,也并非無路可循。原則上只要我們通過仿真器調(diào)試時,做到代碼不被重新下載覆蓋,MCU 不被復(fù)位,就可能保留當(dāng)前程序運(yùn)行的狀態(tài),讓 Bug 無處藏身。

02實現(xiàn)方法

首先,我們將編譯完成的工程燒錄到 MCU,保證 MCU 中所運(yùn)行的代碼與要仿真的工程代碼一致,這樣從 MCU 獲取的程序位置才能與調(diào)試符號信息一致。

不同的編譯器可以通過不同的方法進(jìn)行設(shè)置,但其目的和最終能達(dá)到的效果是一致的。我們就對常用的 MDK、IAR、STM32CubeIDE 三種不同編譯器分別進(jìn)行設(shè)置,使 MCU 在不復(fù)位的狀態(tài)下繼續(xù)調(diào)試。

03MDK

1. 新建一個.ini 文件,在文件中寫入以下內(nèi)容:LOAD %L INCREMENTAL,并加載到Initialization File,同時取消 Load Application at Startup 的選項。

8bd718d0-bb67-11ee-8b88-92fbcf53809c.jpg

8bec1ce4-bb67-11ee-8b88-92fbcf53809c.jpg

這個腳本的目的是加載編譯生成的.axf 文件到 MDK 中,該文件包含 bin 代碼和調(diào)試相關(guān)的各種符號信息,以定位我們的 C 源碼。

關(guān)于其語法說明,可參考 MDK 的 uVision User’s Guide。

8bf3991a-bb67-11ee-8b88-92fbcf53809c.jpg

2. 去掉 Reset after Connect 選項

8bfee34c-bb67-11ee-8b88-92fbcf53809c.jpg

3. 去掉 Update Target before Debugging

8c0a0902-bb67-11ee-8b88-92fbcf53809c.jpg

4. 完成上述配置后,就可以在 MCU 不復(fù)位的情況下,像正常調(diào)試一樣加斷點調(diào)試了。

04IAR

使用 IAR 時,無需額外設(shè)置,直接使用其自帶的功能“Attach to Running Target”即可實現(xiàn)。

8c1d226c-bb67-11ee-8b88-92fbcf53809c.jpg

05STM32CubeIDE

在 STM32CubeIDE 中,配置比較靈活,可以復(fù)制一個 Debug 的配置,并在這個基礎(chǔ)上進(jìn)行修改。

8c302984-bb67-11ee-8b88-92fbcf53809c.jpg

1. 配置 Debugger->Reset behaviour Type 為 None

8c3b3130-bb67-11ee-8b88-92fbcf53809c.jpg

2. 在 Debugger->Misc 中取消 Verify flash download 選項

8c4ff7aa-bb67-11ee-8b88-92fbcf53809c.jpg

3. 在 Startup->Load Image and Symbols 中編輯下載代碼時的操做方式。并取消Download 選項

8c5ab96a-bb67-11ee-8b88-92fbcf53809c.jpg

8c6e6ae6-bb67-11ee-8b88-92fbcf53809c.jpg

4. 在 Debug 時,用上述配置完的調(diào)試配置,即可同樣實現(xiàn)不復(fù)位的調(diào)試

8c7ec260-bb67-11ee-8b88-92fbcf53809c.jpg

06總結(jié)

利用上述不復(fù)位 MCU 繼續(xù)調(diào)試的方法,能夠保全現(xiàn)場的運(yùn)行狀態(tài),重新接上仿真器即可對程序進(jìn)行斷點調(diào)試、單步執(zhí)行等操作。對查找 Bug,發(fā)現(xiàn)并定位問題點,尤其對不易復(fù)現(xiàn)的偶發(fā)性故障十分有用。但是當(dāng) RDP Level≠0 時,因為已經(jīng)開啟了讀保護(hù),所以無法通過上述方法調(diào)試。

審核編輯:湯梓紅

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

    關(guān)注

    146

    文章

    17751

    瀏覽量

    358812
  • 調(diào)試
    +關(guān)注

    關(guān)注

    7

    文章

    603

    瀏覽量

    34451
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1653

    瀏覽量

    49771
  • 燒錄
    +關(guān)注

    關(guān)注

    8

    文章

    282

    瀏覽量

    36107

原文標(biāo)題:實戰(zhàn)經(jīng)驗 | 調(diào)試小技巧之不復(fù)位調(diào)試

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

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

    請問stm8l101p3u為什么進(jìn)入halt之后看門狗不復(fù)位

    在網(wǎng)上查了半天,很多人都是說halt之后不想讓看門狗運(yùn)行卻停不下來,為什么到了我這我想halt之后看門狗繼續(xù)運(yùn)行它反而不復(fù)位了呢?? 看門狗的代碼 RST_ClearFlag
    發(fā)表于 05-13 07:01

    cc2650 OAD結(jié)束后不復(fù)位,為什么?

    Device Monitor的OAD功能,看上去可以向cc2650傳輸OADbin.bin,但OAD結(jié)束后,cc2650不復(fù)位;3.在1基礎(chǔ)上,調(diào)試OADTarget工程的CC2640App
    發(fā)表于 03-28 16:17

    請問28033有可能出現(xiàn)死機(jī)但是不復(fù)位的情況嗎?

    鄙人做的是開關(guān)電源,在最惡劣工況加載時,DSP什么反應(yīng)都沒有,也不復(fù)位,系統(tǒng)成了一塊磚,我之前的類似工況,DSP都是***擾的復(fù)位的,這次怎么不復(fù)位也不工作呢?有達(dá)人指點一下嗎?
    發(fā)表于 10-08 16:55

    IDE設(shè)置步驟有哪些

    使用場景:當(dāng)MCU運(yùn)行時出現(xiàn)Bug,但沒有在線調(diào)試;此時可以使用該方法,在不復(fù)位的情形下捕捉代碼當(dāng)前運(yùn)行到的位置,繼續(xù)在線
    發(fā)表于 11-01 07:09

    IAR調(diào)試中不同復(fù)位類型的介紹

    IAR調(diào)試中不同復(fù)位類型的介紹在IAR 環(huán)境下調(diào)試有不同的復(fù)位類型,其中一些只復(fù)位內(nèi)核不復(fù)位
    發(fā)表于 10-19 07:54

    IAR退出調(diào)試時如何讓MCU繼續(xù)運(yùn)行?

    RT,每次退出調(diào)試要給板子重新上電MCU才運(yùn)行,如何在退出時繼續(xù)運(yùn)行?
    發(fā)表于 10-20 06:53

    哪些因素會導(dǎo)致MCU復(fù)位

    調(diào)試MCU時,經(jīng)常會遇到復(fù)位的情況。要找到復(fù)位的原因,我們就需要了解到有哪些因素會導(dǎo)致MCU復(fù)位
    的頭像 發(fā)表于 11-10 16:32 ?1.1w次閱讀
    哪些因素會導(dǎo)致<b class='flag-5'>MCU</b><b class='flag-5'>復(fù)位</b>

    華大MCU如何實現(xiàn)軟件復(fù)位

    產(chǎn)品在設(shè)計中某些狀態(tài)下需要MCU進(jìn)行復(fù)位,華大MCU包含了7個復(fù)位信號來源,每個復(fù)位信號都可以讓 CPU 重新運(yùn)行,絕大多數(shù)寄存器會被
    發(fā)表于 10-12 11:24 ?2100次閱讀

    KEIL/MDK中使用JLINK調(diào)試器掛載正在運(yùn)行中的MCU

    使用場景:當(dāng)MCU運(yùn)行時出現(xiàn)Bug,但沒有在線調(diào)試;此時可以使用該方法,在不復(fù)位的情形下捕捉代碼當(dāng)前運(yùn)行到的位置,繼續(xù)在線
    發(fā)表于 10-25 18:36 ?13次下載
    KEIL/MDK中使用JLINK<b class='flag-5'>調(diào)試</b>器掛載正在運(yùn)行中的<b class='flag-5'>MCU</b>

    初始化mcu程序選用32k_MCU有多少種復(fù)位因素

    調(diào)試MCU時,經(jīng)常會遇到復(fù)位的情況。要找到復(fù)位的原因,我們就需要了解到有哪些因素會導(dǎo)致MCU復(fù)位
    發(fā)表于 12-05 10:36 ?6次下載
    初始化<b class='flag-5'>mcu</b>程序選用32k_<b class='flag-5'>MCU</b>有多少種<b class='flag-5'>復(fù)位</b>因素

    不復(fù)位MCU直接調(diào)試運(yùn)行程序

    此時此刻有一種調(diào)試需求是朋友們非常想要的:一旦程序出了問題,我只需要插上仿真器,目標(biāo)硬件不會復(fù)位,而是與我當(dāng)前所調(diào)試的程序同步,類似于仿真程序的時候的“全速運(yùn)行”,然而通過添加斷點,便可查看程序具體的運(yùn)行狀態(tài),內(nèi)存等等信息,讓b
    的頭像 發(fā)表于 05-12 15:43 ?1515次閱讀

    MCU復(fù)位電路知多少?

    MCU復(fù)位電路知多少?
    的頭像 發(fā)表于 10-17 18:02 ?1570次閱讀
    <b class='flag-5'>MCU</b><b class='flag-5'>復(fù)位</b>電路知多少?

    如何排查GD32 MCU復(fù)位是由哪個復(fù)位源導(dǎo)致的?

    上期為大家講解了GD32 MCU復(fù)位包括電源復(fù)位和系統(tǒng)復(fù)位,其中系統(tǒng)復(fù)位還包括獨立看門狗復(fù)位、內(nèi)
    的頭像 發(fā)表于 02-03 09:46 ?2071次閱讀
    如何排查GD32 <b class='flag-5'>MCU</b><b class='flag-5'>復(fù)位</b>是由哪個<b class='flag-5'>復(fù)位</b>源導(dǎo)致的?

    MCU不復(fù)位調(diào)試的小技巧

    場景,也并非無路可循。原則上只要我們通過仿真器調(diào)試時,做到代碼不被重新下載覆蓋,MCU 不被復(fù)位,就可能保留當(dāng)前程序運(yùn)行的狀態(tài),讓 Bug 無處藏身。 02 實現(xiàn)方法 首先,我們將編譯
    發(fā)表于 02-26 11:30 ?1749次閱讀
    <b class='flag-5'>MCU</b><b class='flag-5'>不復(fù)位</b><b class='flag-5'>調(diào)試</b>的小技巧

    MCU復(fù)位RAM會保持嗎,如何實現(xiàn)復(fù)位時變量數(shù)據(jù)保持

    在使用MCU時,通常大家默認(rèn)MCU復(fù)位時RAM會被復(fù)位清零,那實際MCU復(fù)位時RAM是什么狀態(tài)?
    的頭像 發(fā)表于 03-01 09:32 ?2929次閱讀
    <b class='flag-5'>MCU</b><b class='flag-5'>復(fù)位</b>RAM會保持嗎,如何實現(xiàn)<b class='flag-5'>復(fù)位</b>時變量數(shù)據(jù)保持
    主站蜘蛛池模板: 1024亚洲视频 | 韩国三级理论在线观看视频 | 夜夜精品视频一区二区 | 香蕉色网| xx肥妇人爽妇网 | 男男全肉高h腐文 | 亚州视频一区二区 | 在线资源天堂 | 亚洲精品久久久久午夜三 | 九九九精品 | 人人艹人人插 | 狠狠操综合 | 伊人精品久久久大香线蕉99 | 亚洲高清网站 | 拍拍拍美女黄色1000视频 | 7777奇米 | 五月欧美激激激综合网色播 | 亚洲电影av | 色播六月| 天天爱天天做天天干 | 久久久久久久久久免免费精品 | 日本偷偷操 | 五月激情综合婷婷 | 51影院在线观看成人免费 | 中文字幕一区精品欧美 | 天天擦天天干 | 日本天堂影院 | 亚洲qingse中文字幕久久 | 香蕉免费在线视频 | 国产免费一区二区三区香蕉精 | 激情综合网五月婷婷 | 免费一级毛片正在播放 | 亚洲福利视频网址 | 亚洲视频在线一区二区 | 美女视频黄a全部 | 琪琪午夜免费影院在线观看 | 久久国内| 天天摸日日摸人人看 | 国产精品电影一区 | 涩色综合 | 久久久久国产一级毛片高清板 |