在线观看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ù)位的五大原因

中穎電子 ? 來源:中穎電子 ? 作者:中穎電子 ? 2022-06-09 16:24 ? 次閱讀

MCU程序開發(fā)調(diào)試過程中,總會發(fā)現(xiàn)很多的程序bug。有一些bug是邏輯問題,規(guī)格書理解問題,筆誤問題等,以上列出的這些問題,通過斷點,單步等調(diào)試手段,很容易發(fā)現(xiàn)并解決問題。但是有一些程序的bug就比較難通過常規(guī)手段定位出問題的地點和原因,例如:芯片不定時跑飛和復(fù)位。

以下總結(jié)了芯片不定時跑飛和復(fù)位的5大原因

1、看門狗復(fù)位

原因:程序中使用了看門狗,但是沒有及時清看門狗,從而導(dǎo)致看門狗復(fù)位,使程序直接跳到復(fù)位位置。

解決方法:通過讀或?qū)?a href="http://m.xsypw.cn/tags/rs/" target="_blank">RSTSTAT寄存器,在程序中清看門狗。

示例:

A.程序中寫RSTSTAT寄存器清看門狗。

9e9dd592-e7cb-11ec-ba43-dac502259ad0.png

2、中斷服務(wù)程序缺失

原因:程序中打開了某個中斷,但是沒有相應(yīng)的中斷服務(wù)程序,從而導(dǎo)致在中斷發(fā)生后,找不到中斷服務(wù)程序入口,從而導(dǎo)致程序跑飛。

解決方法:檢查程序中是否存在打開了某個中斷,但是沒有相對應(yīng)的中斷服務(wù)程序。

示例:

A.使能外部中斷0,并且屏蔽外部中斷0服務(wù)程序。

9ef0d634-e7cb-11ec-ba43-dac502259ad0.png

9f8cfa64-e7cb-11ec-ba43-dac502259ad0.png

B.下降沿觸發(fā)外部中斷0后,程序跑到地址0x0003處(INT0向量地址為0x0003),由于沒有中斷服務(wù)程序,該地址的指令被編譯器填充為初始化程序,因此導(dǎo)致程序跑飛。

9fb4fb90-e7cb-11ec-ba43-dac502259ad0.png

3、 中斷服務(wù)程序沒有對bank壓棧和出棧

原因:主程序在操作bank1寄存器時,進(jìn)入中斷沒有對bank1壓棧,此時切換到bank0對寄存器操作,退出中斷后由于沒有保存bank1的狀態(tài),導(dǎo)致主程序在bank0中對bank1的寄存器操作,誤改bank0寄存器的值,程序可能會運行異常。

解決方法:進(jìn)入中斷服務(wù)程序后,對bank進(jìn)行壓棧,退出中斷之前對bank進(jìn)行出棧,這樣無論主程序在操作bank0還是bank1,中斷里面都會保存進(jìn)中斷之前bank狀態(tài),退出中斷后會還原bank狀態(tài),這樣就不會因為切換bank導(dǎo)致寄存器的值被誤改。

示例:

A.在主循環(huán)操作bank1寄存器,定時器Timer3中斷里面不進(jìn)行壓棧和出棧操作,直接操作bank0寄存器。

9fe85d5a-e7cb-11ec-ba43-dac502259ad0.png

B.退出中斷后此時程序狀態(tài)為bank0,下一步返回主程序,本來應(yīng)該改變的是P5_0的值,由于沒有切換到bank1,所以在bank0中將相同地址的寄存器P0_0的值誤改,同時導(dǎo)致P5_0的值修改無效。

a00c6cae-e7cb-11ec-ba43-dac502259ad0.png

a037c62e-e7cb-11ec-ba43-dac502259ad0.png

a0855a06-e7cb-11ec-ba43-dac502259ad0.png

4、數(shù)組越界

原因:程序中定義的數(shù)組元素的個數(shù)小于程序中實際使用的數(shù)組元素的個數(shù),數(shù)組使用循環(huán)函數(shù)時,如果循環(huán)變量沒控制好則會出現(xiàn)數(shù)組越界,意外修改其他變量值可能會導(dǎo)致程序異常。

解決方法:檢查函數(shù)中調(diào)用的數(shù)組是否存在越界的情況。

示例:

A.定義SendBuffer和RecBuffer兩個數(shù)組變量,數(shù)組長度為5,初值均為0。

a0ac7a82-e7cb-11ec-ba43-dac502259ad0.png

B.主程序中對數(shù)組SendBuffer[0]~ SendBuffer[4]賦值,此時SendBuffer[5]和SendBuffer[6]也被意外賦值,從watch窗口可以看出,這兩個值改變了原來RecBuffer[0]和RecBuffer[1]的值,可能會造成程序異常。

a0fb8744-e7cb-11ec-ba43-dac502259ad0.png

a1206ee2-e7cb-11ec-ba43-dac502259ad0.png

5、堆棧溢出

原因:函數(shù)嵌套太深或者局部變量太多導(dǎo)致超出堆棧空間,正常數(shù)據(jù)被改寫。

解決方法:盡量減少函數(shù)調(diào)用層級,局部變量不要使用太多,尤其是局部大數(shù)組,從而減少壓棧的時候所需的空間。

示例:

A.定義4個全局變量和1個局部變量數(shù)組,總共占用RAM空間為249個字節(jié)

a146a724-e7cb-11ec-ba43-dac502259ad0.png

a1bdc34a-e7cb-11ec-ba43-dac502259ad0.png

B.計算程序中所需的堆棧大小,主程序中調(diào)用Delay()函數(shù),占用2個字節(jié),中斷服務(wù)函數(shù)占用16個字節(jié),中斷嵌套調(diào)用leddisplay()函數(shù),占用2個字節(jié),總共需要20個字節(jié)堆棧空間,由A可知,系統(tǒng)只剩下6個字節(jié)堆棧空間,所以程序運行后,堆棧一定會溢出。

a20edcee-e7cb-11ec-ba43-dac502259ad0.png

a235424e-e7cb-11ec-ba43-dac502259ad0.png

a2a332ae-e7cb-11ec-ba43-dac502259ad0.png

C.運行程序,正常現(xiàn)象為P40端口一直翻轉(zhuǎn),TestData變量值始終為0,觸發(fā)外部中斷0,進(jìn)入中斷服務(wù)程序后,可以看到SP堆棧指針已經(jīng)溢出,同時將R7寄存器的值壓棧到0x08的地址上,通過.m51文件可以查到0x08正好是TestData變量地址,所以TestData的值被誤改為0x01,導(dǎo)致主程序中條件判斷出錯,程序異常。

a2c4aa2e-e7cb-11ec-ba43-dac502259ad0.png

a2df18be-e7cb-11ec-ba43-dac502259ad0.png

a2f123ce-e7cb-11ec-ba43-dac502259ad0.png

a3142716-e7cb-11ec-ba43-dac502259ad0.png

在調(diào)試MCU程序過程中,由于程序書寫的不規(guī)范產(chǎn)生程序漏洞,跑飛現(xiàn)象比較常見,如果我們提前了解程序可能跑飛的原因,對于快速定位問題有很大幫助,從而提高分析和解決問題的效率,減少產(chǎn)品的開發(fā)周期,加速產(chǎn)品的上市時間。

原文標(biāo)題:中穎8bit MCU程序跑飛原因分析

文章出處:【微信公眾號:中穎電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

    關(guān)注

    456

    文章

    51170

    瀏覽量

    427241
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17317

    瀏覽量

    352638
  • 復(fù)位
    +關(guān)注

    關(guān)注

    0

    文章

    174

    瀏覽量

    24267
  • 中穎電子
    +關(guān)注

    關(guān)注

    4

    文章

    176

    瀏覽量

    7607

原文標(biāo)題:中穎8bit MCU程序跑飛原因分析

文章出處:【微信號:SINO_25181447,微信公眾號:中穎電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    智能手表2016年第三季度出貨量下滑 五大原因分析

    根據(jù)Paste報導(dǎo),根據(jù)市調(diào)機(jī)構(gòu)IDC調(diào)查,2016年第3季全球智能型手表出貨量較2015年同期下滑51.6%,即可看出此衰退情況,本文列舉了蘋果Apple Watch未能達(dá)到銷售預(yù)期,智能型手表元老業(yè)者Pebble求出售等五大原因分析。
    發(fā)表于 12-19 14:59 ?2907次閱讀

    TC233使用QSPISPI程序單片機(jī)不定時復(fù)位原因

    使用TC233使用QSPI外設(shè),SPI作為從機(jī)和其他單片機(jī)進(jìn)行SPI通訊,不定時重啟,如果數(shù)據(jù)收發(fā)比較快的話復(fù)位頻率就比較高,如果延時一秒發(fā)送同樣會復(fù)位,只是頻率會低一些,另外我是用SPI3當(dāng)從機(jī)
    發(fā)表于 02-02 07:58

    五大原廠解決方案,下載即可贏取“豪禮”

    `五大原廠解決方案,下載即可贏取“豪禮”【活動時間】:2014年9月1日——2014年11月30日【活動介紹】:貿(mào)澤解決方案中心,重磅推出五大廠家解決方案。即日起下載即可贏取“豪禮”【資料下載
    發(fā)表于 09-16 10:12

    五大原廠解決方案,下載即可贏取“豪禮”

    `五大原廠解決方案,下載即可贏取“豪禮”【活動時間】:2014年9月1日——2014年11月30日【活動介紹】:貿(mào)澤解決方案中心,重磅推出五大廠家解決方案。即日起下載即可贏取“豪禮”【資料下載
    發(fā)表于 09-16 14:05

    五大原廠解決方案,下載即可贏取“豪禮”

    `五大原廠解決方案,下載即可贏取“豪禮”【活動時間】:2014年9月1日——2014年11月30日【活動介紹】:貿(mào)澤解決方案中心,重磅推出五大廠家解決方案。即日起下載即可贏取“豪禮”【資料下載
    發(fā)表于 09-16 14:08

    五大原廠解決方案,下載即可贏取“豪禮”

    五大原廠解決方案,下載即可贏取“豪禮”【活動時間】:2014年9月1日——2014年11月30日【活動介紹】:貿(mào)澤解決方案中心,重磅推出五大廠家解決方案。即日起下載即可贏取“豪禮”【資料下載
    發(fā)表于 09-16 14:10

    單片機(jī)程序原因是什么

    中有看門狗,長時間不喂狗,程序就會復(fù)位。為什么長時間不喂狗呢?這是因為程序飛了,拋開外部因素不談。今天就和大家分享一下,單片機(jī)程序的幾個原因
    發(fā)表于 12-13 07:17

    單片機(jī)程序的幾種原因

    幾種可能的原因:1、 數(shù)組越界/溢出現(xiàn)象:程序在函數(shù)中運行時,總是在運行到函數(shù)末尾,要跳出函數(shù)時,程序。解決方法:如果在調(diào)試程序時,發(fā)現(xiàn)程序總是在函數(shù)執(zhí)行完畢時
    發(fā)表于 11-30 12:57

    智能手機(jī)為什么需要M2M的五大原因

    通過使用M2M SIM卡融入智能手機(jī)的方式,智能手機(jī)上的M2M技術(shù)能幫助用戶超越“這里有一款應(yīng)用可以供你使用”(there’s an app for that)的廣告語,以下為下一代智能手機(jī)需要M2M的五大原因
    發(fā)表于 01-11 09:21 ?2783次閱讀

    從LED光源的五大原物料淺析LED死燈的25種原因

    以失效分析大數(shù)據(jù)顯示,LED死燈的原因可能過百種,限于時間,今天我們僅以LED光源為例,從LED光源的五大原物料(芯片、支架、熒光粉、固晶膠、封裝膠和金線)的入手,介紹部分可能導(dǎo)致死燈的原因
    發(fā)表于 04-26 16:59 ?6659次閱讀

    看門狗定時器防止溢出復(fù)位程序

    看門狗定時器用來防止程序因供電電源、空間電磁干擾或其它原因引起的強(qiáng)烈干擾噪聲而的事故。程序中設(shè)置看TL=WDTPW+WDTCNTCL,當(dāng)程序
    發(fā)表于 04-23 09:59 ?4796次閱讀
    看門狗<b class='flag-5'>定時</b>器防止溢出<b class='flag-5'>復(fù)位</b>程序

    簡述AMD INFINITY GUARD對安全至關(guān)重要的五大原因

    Guard 內(nèi)置于芯片層面,可幫助客戶保護(hù)重要的資產(chǎn)——數(shù)據(jù)。 AMD INFINITY GUARD對安全至關(guān)重要的五大原因: 現(xiàn)代方法 以多層
    的頭像 發(fā)表于 05-29 11:03 ?2879次閱讀

    開發(fā)人員使用Helix QAC實現(xiàn)靜態(tài)代碼測試合規(guī)性的五大原因

    30多年來,Helix QAC(以前稱為PRQA)一直是值得信賴的靜態(tài)分析工具,可滿足嚴(yán)格監(jiān)管和安全至上行業(yè)的嚴(yán)格合規(guī)要求。在這里,我們分享了開發(fā)人員選擇Helix QAC的五大原因
    的頭像 發(fā)表于 11-14 09:59 ?1183次閱讀
    開發(fā)人員使用Helix QAC實現(xiàn)靜態(tài)代碼測試合規(guī)性的<b class='flag-5'>五大原因</b>

    開發(fā)人員使用Klocwork進(jìn)行軟件安全的五大原因

    Klocwork 專為企業(yè) DevOps 和 DevSecOps 而構(gòu)建,是首選的靜態(tài)分析和 SAST 工具,用于保持高開發(fā)速度,同時還強(qiáng)制實施安全性和質(zhì)量的持續(xù)合規(guī)性。在這里,我們分享了開發(fā)人員選擇Klocwork的五大原因
    的頭像 發(fā)表于 11-17 10:37 ?645次閱讀
    開發(fā)人員使用Klocwork進(jìn)行軟件安全的<b class='flag-5'>五大原因</b>

    8bit MCU程序原因分析

    中穎8bit MCU程序原因分析
    的頭像 發(fā)表于 10-27 15:17 ?1273次閱讀
    8bit MCU程序<b class='flag-5'>跑</b><b class='flag-5'>飛</b><b class='flag-5'>原因</b>分析
    主站蜘蛛池模板: 亚洲成a人片77777潘金莲 | 午夜一级| 波多野结衣50连精喷在线 | 亚洲一区二区精品视频 | 亚洲性夜 | 午夜在线看片 | 韩国免费特一级毛片 | 2022欧美高清中文字幕在线看 | 男人视频在线 | 国产视频三区 | 久久综合中文字幕 | 5g成人影院| 你懂得在线网站 | 亚州色吧 | 欧美在线资源 | 免费一级毛片正在播放 | 美女张开大腿让男人捅 | 色综合久久综合欧美综合网 | 高清国产下药迷倒美女 | 免费特黄一区二区三区视频一 | 四月婷婷七月婷婷综合 | 黄色特级毛片 | 有坂深雪在线 | 视频一二三区 | 色资源窝窝全色 | 午夜网站视频 | 色爱区综合五月激情 | 4hu影院最新地址www | 日本理论午夜中文字幕第一页 | 爽爽爽爽爽爽a成人免费视频 | 一区二区三区在线观看视频 | 欧美色图一区二区 | 五月天福利视频 | 国产精品美女www爽爽爽视频 | 国产精品资源站 | 欧洲精品不卡1卡2卡三卡 | 亚洲乱亚洲乱妇41p国产成人 | 饥渴少妇videos| 国产欧美亚洲精品 | 久久久久999| 西西人体www303sw大胆高清 |