日韩在线不卡免费视频一区,日韩欧美精品一区二区三区经典,日产精品码2码三码四码区,人妻无码一区二区三区免费,日本feerbbwdh少妇丰满

魚鷹單片機(jī)
認(rèn)證:優(yōu)質(zhì)創(chuàng)作者
作者動(dòng)態(tài)
幾款 USB 抓包工具對比,哪個(gè)是你心中第一?
03-21 13:59
如何將網(wǎng)頁數(shù)據(jù)轉(zhuǎn)化成C語言數(shù)組?
2024-12-05 09:28
關(guān)于RS485自動(dòng)收發(fā)那些天坑
2024-11-15 16:02
為什么大廠都在用 Yocto?
2024-10-24 13:31
什么,VSCode 竟然是代碼編輯器?
2024-10-08 09:13

BUG 終結(jié)者,現(xiàn)場抓獲!|顛覆認(rèn)知

來源:公眾號【魚鷹談單片機(jī)】

作者:魚鷹Osprey

不知道你是否有這樣的經(jīng)歷,測試的機(jī)器運(yùn)行半個(gè)月、一個(gè)月的都沒啥問題,突然就死機(jī)了,或者運(yùn)行錯(cuò)誤了,總之莫名其妙。

但是此時(shí),你的調(diào)試器已經(jīng)從機(jī)器上拔下來了,無法在線調(diào)試觀察死機(jī)后的現(xiàn)場了,你無法觀察到你的變量、寄存器、外設(shè)、堆、處于什么情況,這個(gè)時(shí)候你不得不重新接上調(diào)試器,再次運(yùn)行程序以等待問題的出現(xiàn)。

這個(gè)笨方法存在幾個(gè)問題:

第一、因?yàn)閺?fù)現(xiàn)率太低,所以你的電腦必須一直連接電腦,否則問題出現(xiàn)了無法確認(rèn)。

第二,萬一中途因?yàn)楦鞣N原因(線拔了,KEIL意外退出了)導(dǎo)致調(diào)試器和機(jī)器的連接出現(xiàn)了問題,那么只能重來了。

第三,可能運(yùn)行幾個(gè)月都不會(huì)再出問題,但是你卻知道,這里隱藏了一個(gè)炸彈,指不定什么時(shí)候就爆了;更有甚者,可能連接調(diào)試器后這個(gè)問題可能就沒有了,但是斷開之后就又有問題了。

針對以上問題,我們就會(huì)想,是否存在一種方法,能夠在出現(xiàn)問題之后,可以使用調(diào)試器抓獲現(xiàn)場環(huán)境呢?

我們都知道,KEIL 環(huán)境下,連接調(diào)試器后,單片機(jī)進(jìn)入調(diào)試模式時(shí),KEIL會(huì)自動(dòng)將整個(gè)單片機(jī)進(jìn)行復(fù)位(可能是內(nèi)核復(fù)位,也可能是系統(tǒng)復(fù)位,也可能是RST引腳復(fù)位),復(fù)位操作對于剛下載的程序而言,可以很方便的幫助開發(fā)者更方便的進(jìn)入調(diào)試環(huán)境,但是對于機(jī)器的問題現(xiàn)場而言,這是在破獲現(xiàn)場!

但是根據(jù)以往的認(rèn)知,我們總是以為進(jìn)入調(diào)試模式時(shí),必然需要先進(jìn)行單片機(jī)復(fù)位的,所以我們對這種難復(fù)現(xiàn)的BUG總是感到無能為力。

今天,魚鷹教大家一個(gè)方法,如何使用 KEIL 調(diào)試器抓獲 STM32 的BUG現(xiàn)場(其他單片機(jī)可自行測試),這個(gè)方法將顛覆你的認(rèn)知,可以在單片機(jī)運(yùn)行時(shí)進(jìn)入調(diào)試模式,從而抓獲現(xiàn)場!

這個(gè)功能其實(shí)在某一個(gè)軟件是集成了的(不記得哪一個(gè)軟件了),但在 KEIL 中我們需要幾步操作完成。1、新建一個(gè)工程目標(biāo)(可命名為 NotRest):

這樣你可以看到你現(xiàn)在的目標(biāo):

接下來的所有操作都在這個(gè)目標(biāo)進(jìn)行。事實(shí)上,如果只是為了抓獲 BUG 現(xiàn)場,是不需要新建目標(biāo)的,但是為了今后可以方便的不復(fù)位單片機(jī)也能進(jìn)入調(diào)試模式,也為了不改變以前目標(biāo)的配置,增加一個(gè)目標(biāo)還是很有必要的,這樣,你可以根據(jù)需要(是否復(fù)位芯片)切換目標(biāo)了。2、新建一個(gè)load.ini文件,文件內(nèi)容如下:LOAD %L INCREMENTAL該文件用于加載 axf 文件到 KEIL 中,但是不會(huì)下載到單片機(jī)中,而 axf 文件可以方便我們進(jìn)行源碼級別的調(diào)試。3、打開該目標(biāo)的option進(jìn)行配置:

4、點(diǎn)擊仿真按鈕,記住了,別點(diǎn)下載按鈕(魚鷹非常不喜歡別人先點(diǎn)下載按鈕再點(diǎn)仿真按鈕,因?yàn)?span>剛編譯后的代碼,如果你直接點(diǎn)仿真按鈕,在默認(rèn)配置下會(huì)自動(dòng)下載和進(jìn)入調(diào)試模式的,比較方便)。

注意,一定要確定該目標(biāo)可以正常使用(即不會(huì)復(fù)位單片機(jī))才能真正用于實(shí)際的BUG現(xiàn)場,不要沒有做測試就直接拿它去調(diào)試實(shí)際的單片機(jī),否則可能因?yàn)闆]有正確配置,而破壞了現(xiàn)場環(huán)境(默認(rèn)配置下,會(huì)直接復(fù)位單片機(jī))!

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 2
收藏 4
關(guān)注 160
成為作者 賺取收益
全部留言
0/200
成為第一個(gè)和作者交流的人吧