色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

8bit MCU程序跑飛原因分析

jf_pJlTbmA9 ? 來源:中穎電子 ? 作者:中穎電子 ? 2023-10-27 15:17 ? 次閱讀

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

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

1、看門狗復位

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

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

示例:

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

wKgZomUD5DqACoynAABScJB1KNg477.png

2、中斷服務程序缺失

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

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

示例:

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

wKgaomUD5DuAORwkAABKKZ5iavQ184.png
wKgZomUD5DyAKMS7AABkGr1yFNE613.png

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

wKgZomUD5D6Ae7HJAAA38yEaYwU414.png

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

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

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

示例:

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

wKgaomUD5D-AHe2oAACWNl5rH8I095.png

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

wKgZomUD5ECAf4B_AAEhJTvH1rM826.png
wKgaomUD5EKASCsVAACOPWSYKqU269.png
wKgaomUD5EOAYFDtAAApOOWHLGU800.png

4、數(shù)組越界

原因:程序中定義的數(shù)組元素的個數(shù)小于程序中實際使用的數(shù)組元素的個數(shù),數(shù)組使用循環(huán)函數(shù)時,如果循環(huán)變量沒控制好則會出現(xiàn)數(shù)組越界,意外修改其他變量值可能會導致程序異常。
解決方法:檢查函數(shù)中調(diào)用的數(shù)組是否存在越界的情況。

示例:

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

wKgZomUD5ESAbjPAAADH6sEOAok184.png

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

wKgZomUD5EiARpeIAAA5acAoBlQ926.png
wKgaomUD5EmAaUUEAABdNfae0ow715.png

5、堆棧溢出

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

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

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

wKgZomUD5EqAFeI-AACD3vrk0Rs610.png
wKgaomUD5EyALBlbAABC7ULSvzc738.png

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

wKgaomUD5E6Aad2yAAClUgRZA5o094.png
wKgZomUD5E-AWtyTAABetdy2jaw889.png
wKgaomUD5FCAKiL4AAAiwn0-x2g109.png

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

wKgZomUD5FSAIcl4AADd2rBrEz8967.png
wKgZomUD5FaARrTfAAAVb1x7eRI548.png
wKgaomUD5FeATBFsAABKWxLqWns676.png
wKgaomUD5FiACTUvAACjv9t_UAM149.png

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

來源:中穎電子
免責聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進行處理

審核編輯 黃宇

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

    關(guān)注

    146

    文章

    17458

    瀏覽量

    354460
收藏 人收藏

    評論

    相關(guān)推薦

    干貨分享:DSP程序原因?你是如何解決的?

    DSP程序原因有哪些?你是如何解決的?以學術(shù)為名的頭腦風暴在電子發(fā)燒友網(wǎng)論壇大勢展開,一起來看看那些你值得擁有的干貨吧。##頭腦風暴共同探討,幫助解決設(shè)計難題。
    發(fā)表于 10-30 10:43 ?7212次閱讀

    如何從主機將數(shù)據(jù)按8bit傳入片上ITCM?

    需求:如何從主機將數(shù)據(jù)按8bit傳入片上ITCM 我想在PC端(主機)通過8位IO每個周期傳入8bit數(shù)據(jù)(一共大概32KB的數(shù)據(jù),包括自定義指令和局部變量的數(shù)據(jù),由.verilog文件讀出來
    發(fā)表于 05-24 07:40

    什么原因會導致單片機程序

    ______________________________________ 什么原因會導致單片機程序
    發(fā)表于 10-16 22:31

    請問該如何正確增大8bit Tiler Size?

    Size 為384MB,8bit Tiler 為128MB,16bit Tiler 為256MB但是運行程序時,8bit Tiler 不夠用,16
    發(fā)表于 05-31 05:50

    單片機程序原因是什么

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

    單片機程序的幾種原因

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

    8bit PSoC 及回流焊機應用

    8bit PSoC 及回流焊機應用
    發(fā)表于 06-30 19:49 ?1002次閱讀

    怎么判斷液晶面板是8bit還是6bit

    目前常用的液晶顯示器中,高速的(12ms或以下)多用6bit驅(qū)動,低速的(20ms或以上)多用8bit驅(qū)動。因為6bit的處理速度要遠高于8bit(64倍)。而標16.2M或者16M色
    發(fā)表于 05-18 15:08 ?1.3w次閱讀

    致單片機程序總是怎么辦

    單片機中有看門狗,長時間不喂狗,程序就會復位。為什么長時間不喂狗呢?這是因為程序飛了,拋開外部因素不談。今天就和大家分享一下,單片機程序
    的頭像 發(fā)表于 09-26 10:45 ?6687次閱讀

    單片機程序的三種現(xiàn)象、原因及解決方法

    在編寫單片機程序的時候,由于中斷服務程序寫的不好,導致單片機程序總是,最后費了好長時間,花了很大功夫才找到問題
    發(fā)表于 02-08 15:47 ?8次下載
    單片機<b class='flag-5'>程序</b><b class='flag-5'>跑</b><b class='flag-5'>飛</b>的三種現(xiàn)象、<b class='flag-5'>原因</b>及解決方法

    8bit 8051/32bit Cortex-M0 Flash單片機產(chǎn)品選型手冊

    8bit 8051/32bit Cortex-M0 Flash單片機產(chǎn)品選型手冊免費下載。
    發(fā)表于 07-01 09:07 ?1次下載
    <b class='flag-5'>8bit</b> 8051/32<b class='flag-5'>bit</b> Cortex-M0 Flash單片機產(chǎn)品選型手冊

    PT8M2101A觸控型 8Bit MTP MCU的產(chǎn)品概述

    PT8M2101A(觸控型 8Bit MTP MCU
    發(fā)表于 06-23 15:29 ?921次閱讀

    使用STM32C0輕松實現(xiàn)從8bit到32bit的平臺升級

    電子發(fā)燒友網(wǎng)站提供《使用STM32C0輕松實現(xiàn)從8bit到32bit的平臺升級.pdf》資料免費下載
    發(fā)表于 07-29 11:27 ?0次下載
    使用STM32C0輕松實現(xiàn)從<b class='flag-5'>8bit</b>到32<b class='flag-5'>bit</b>的平臺升級

    8bit 單片機I/O設(shè)置介紹

    中穎8bit 單片機I/O設(shè)置介紹
    的頭像 發(fā)表于 10-27 15:41 ?995次閱讀
    <b class='flag-5'>8bit</b> 單片機I/O設(shè)置介紹

    單片機程序?從這6個方面查找原因

    單片機程序?從這6個方面查找原因
    的頭像 發(fā)表于 10-26 16:43 ?1229次閱讀
    主站蜘蛛池模板: 国产午夜精品AV一区二区麻豆 | 久久九九少妇免费看A片 | 99精品免费久久久久久久久蜜桃 | 女朋友的妈妈在线观看 | 小776论坛 | 色欲精品久久人妻AV中文字幕 | 办公室的秘密2中文字幕 | 嗯好舒服嗯好大好猛好爽 | 亚洲最大在线视频 | 精品国产影院 | 强奷表妺好紧2 | 在线亚洲精品福利网址导航 | 口内射精颜射极品合集 | 在线观看黄色小说 | 亚洲免费高清视频 | 午夜勾魂曲 | 色多多污版app下载网站 | 日本中文字幕巨大的乳专区 | 亚洲熟伦熟女专区 | 真人裸交有声性动态图 | 久久强奷乱码老熟女 | 超碰在线视频人人AV | 天天狠狠色综合图片区 | 久久夜色噜噜噜亚洲AV0000 | 最近更新2019中文字幕免费 | 中文字幕视频免费在线观看 | 国精品产露脸偷拍视频 | 国产精品VIDEOSSEX久久发布 | 国产永不无码精品AV永久 | 亚洲成人在线免费 | 成年人视频在线免费播放 | 久久精品熟女亚洲AV国产 | 看电影就来5566先锋av | 伊人青青草原 | 乱h好大噗嗤噗嗤烂了 | 国产精品久久久久成人免费 | 在线 | 果冻国产传媒61国产免费 | 午夜福利免费院 | 国产看黄网站又黄又爽又色 | 亚洲精品蜜桃AV久久久 | 国产亚洲精品久久久久久久 |