一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

深入探討單片機(jī)異常處理

單片機(jī)匠人 ? 來(lái)源:?jiǎn)纹瑱C(jī)匠人 ? 作者: 黃忠老師 ? 2021-10-20 10:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

ARM處理器中,如果一個(gè)程序產(chǎn)生了錯(cuò)誤并且被處理器檢測(cè)到,這是就會(huì)產(chǎn)生錯(cuò)誤異常。

錯(cuò)誤是怎么發(fā)生的呢?

許多可能的原因都會(huì)引起錯(cuò)誤發(fā)生,比如對(duì)于存儲(chǔ)器相關(guān)錯(cuò)誤,總線系統(tǒng)的異常響應(yīng)可以有以下原因:

訪問(wèn)的地址非法;

由于傳輸?shù)念愋头欠?,總線的從設(shè)備不接受此次傳輸(從設(shè)備決定)

由于傳輸未使能或初始化,總線的從設(shè)備無(wú)法進(jìn)行此次傳輸(例如,如果外設(shè)的時(shí)鐘被關(guān)閉,那么訪問(wèn)這個(gè)外設(shè)時(shí),微控制器就可能會(huì)產(chǎn)生錯(cuò)誤響應(yīng))。

當(dāng)確定了硬件錯(cuò)誤異常的直接原因以后,我們可能還得花費(fèi)一些時(shí)間來(lái)確定問(wèn)題的根源。例如,總線錯(cuò)誤可以由很多種情況引發(fā),例如錯(cuò)誤的指針操作、??臻g損壞、內(nèi)存溢出、非法存儲(chǔ)器映射以及其他原因。

分析錯(cuò)誤

根據(jù)錯(cuò)誤類型的不同,通常能夠直接確定引起硬件錯(cuò)誤異常的指令的位置。要實(shí)現(xiàn)這個(gè)目的,就需要知道進(jìn)入硬件錯(cuò)誤異常時(shí)的寄存器的內(nèi)容,以及異常處理前壓入棧中的寄存器的內(nèi)容。這些值中包含了程序返回地址,通過(guò)它也能知道引起錯(cuò)誤的指令地址。

如果使用了調(diào)試器,那么可在工程中創(chuàng)建硬件錯(cuò)誤異常處理,并且在其中添加一個(gè)用以暫停處理器的斷點(diǎn)指令;或者也可以在硬件錯(cuò)誤異常處理的開(kāi)始部分設(shè)置一個(gè)斷點(diǎn),這樣當(dāng)硬件錯(cuò)誤發(fā)生時(shí),處理器就會(huì)自動(dòng)暫停。在處理器由于硬件錯(cuò)誤暫停后,我們就可以嘗試著按照下面圖的流程對(duì)錯(cuò)誤進(jìn)行定位。

為了給分析提供更多的信息,也可以生成程序映像的匯編代碼,并且利用在棧幀中找到的PC值確定錯(cuò)誤的位置。如果錯(cuò)誤的地址為存儲(chǔ)器訪問(wèn)指令,就應(yīng)該檢查寄存器的值確定存儲(chǔ)器訪問(wèn)的地址是否合法。除了檢查地址范圍,也應(yīng)該確認(rèn)存儲(chǔ)器的地址是否正確地對(duì)齊。

除了壓入棧中的PC值(返回地址),棧幀中也包含了其他有助于調(diào)試的寄存器值。例如,壓入棧的IPSR能夠反映處理器是否在進(jìn)行異常處理,EPSR則代表了處理器狀態(tài)(EPSR的T位為0,則表示錯(cuò)誤由意外切換至ARM狀態(tài)引起)。

棧中的LR也可能會(huì)提供一些信息,例如發(fā)生錯(cuò)誤的函數(shù)的返回地址,錯(cuò)誤是否發(fā)生在異常處理中,以及EXC_RETURN的值是否被異常破壞等。

另外,當(dāng)前的寄存器值也可以提供有助于定位錯(cuò)誤原因的各種信息,除了當(dāng)前棧指針的值,當(dāng)前的鏈接寄存器的值也可能有幫助。如果LR中為非法的EXC_RETURN的值,這就意味著它在前面異常處理中被錯(cuò)誤地修改了。

CONTROL寄存器也可以提供幫助。在沒(méi)有OS的簡(jiǎn)單應(yīng)用程序中,進(jìn)程棧指針(PSP)不會(huì)被用到,并且CONTROL寄存器會(huì)一直保持為0。如果CONTROL寄存器被設(shè)置為0x2(PSP用于線程狀態(tài)),這就意味著LR在之前的異常處理中被錯(cuò)誤地修改了,或者棧內(nèi)容被破壞導(dǎo)致了EXC_RETURN的值錯(cuò)誤。

編輯:jq

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

    關(guān)注

    31

    文章

    5433

    瀏覽量

    124263
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7647

    瀏覽量

    167165
  • ARM處理器
    +關(guān)注

    關(guān)注

    6

    文章

    361

    瀏覽量

    42593

原文標(biāo)題:?jiǎn)纹瑱C(jī)的異常處理

文章出處:【微信號(hào):gh_e7f294a514ca,微信公眾號(hào):?jiǎn)纹瑱C(jī)匠人】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    機(jī)器學(xué)習(xí)異常檢測(cè)實(shí)戰(zhàn):用Isolation Forest快速構(gòu)建無(wú)標(biāo)簽異常檢測(cè)系統(tǒng)

    本文轉(zhuǎn)自:DeepHubIMBA無(wú)監(jiān)督異常檢測(cè)作為機(jī)器學(xué)習(xí)領(lǐng)域的重要分支,專門用于在缺乏標(biāo)記數(shù)據(jù)的環(huán)境中識(shí)別異常事件。本文深入探討異常檢測(cè)技術(shù)的理論基礎(chǔ)與實(shí)踐應(yīng)用,通過(guò)Isolatio
    的頭像 發(fā)表于 06-24 11:40 ?610次閱讀
    機(jī)器學(xué)習(xí)<b class='flag-5'>異常</b>檢測(cè)實(shí)戰(zhàn):用Isolation Forest快速構(gòu)建無(wú)標(biāo)簽<b class='flag-5'>異常</b>檢測(cè)系統(tǒng)

    深入探討試驗(yàn)機(jī)數(shù)據(jù)采集系統(tǒng)在力學(xué)試驗(yàn)室中發(fā)揮的作用

    萬(wàn)能機(jī)及壓力機(jī)設(shè)備的特殊性、數(shù)據(jù)無(wú)法實(shí)時(shí)采集的現(xiàn)狀、綜合管理需求以及數(shù)據(jù)聯(lián)動(dòng)分析需求等方面,深入探討試驗(yàn)機(jī)數(shù)據(jù)采集系統(tǒng)在力學(xué)試驗(yàn)室中的作用。 一、萬(wàn)能機(jī)及壓力機(jī)設(shè)備的特殊性對(duì)數(shù)據(jù)采集系
    的頭像 發(fā)表于 02-22 11:27 ?558次閱讀
    <b class='flag-5'>深入探討</b>試驗(yàn)<b class='flag-5'>機(jī)</b>數(shù)據(jù)采集系統(tǒng)在力學(xué)試驗(yàn)室中發(fā)揮的作用

    深入探討DeepSeek大模型的核心技術(shù)

    導(dǎo)讀 本文深入探討了DeepSeek大模型的核心技術(shù),從公司背景、模型能力、訓(xùn)推成本到核心技術(shù)細(xì)節(jié)進(jìn)行了全面分析。 ? 一、關(guān)于DeepSeek公司及其大模型 1.1 公司概況 DeepSeek
    的頭像 發(fā)表于 02-10 10:49 ?1447次閱讀
    <b class='flag-5'>深入探討</b>DeepSeek大模型的核心技術(shù)

    數(shù)碼管和單片機(jī)的連接方式

    了解數(shù)碼管和單片機(jī)的工作原理,以及它們之間的連接方式,不僅有助于電子愛(ài)好者進(jìn)行項(xiàng)目開(kāi)發(fā),也是電子工程師必備的技能。本文將圍繞這兩個(gè)核心組件,展開(kāi)深入且全面的技術(shù)探討
    的頭像 發(fā)表于 02-05 17:44 ?1512次閱讀

    什么是單片機(jī)的ADC接口

    ,簡(jiǎn)稱ADC)接口是單片機(jī)中不可或缺的一部分,它負(fù)責(zé)將模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),使得單片機(jī)能夠處理來(lái)自傳感器、儀表等模擬世界的信號(hào)。本文將深入探討單片
    的頭像 發(fā)表于 02-03 11:27 ?2200次閱讀

    單片機(jī)中斷技術(shù)詳解

    在現(xiàn)代電子設(shè)備中,單片機(jī)作為控制核心發(fā)揮著舉足輕重的作用。而在其高效運(yùn)作的背后,中斷機(jī)制是推動(dòng)單片機(jī)實(shí)現(xiàn)實(shí)時(shí)響應(yīng)與高效執(zhí)行的關(guān)鍵因素。本文將深入探討單片機(jī)中的中斷概念、中斷系統(tǒng)的結(jié)構(gòu)、
    的頭像 發(fā)表于 02-02 15:57 ?961次閱讀

    單片機(jī)I/O接口的傳輸方式

    著數(shù)據(jù)傳輸?shù)娜蝿?wù),還影響著整個(gè)系統(tǒng)的性能和可靠性。本文將深入探討單片機(jī)I/O接口的傳輸方式,包括無(wú)條件傳送、查詢傳送、中斷傳送和DMA傳送等,以期為單片機(jī)應(yīng)用開(kāi)發(fā)者提供有價(jià)值的參考。
    的頭像 發(fā)表于 02-02 15:56 ?1019次閱讀

    深入探討Linux系統(tǒng)中的動(dòng)態(tài)鏈接庫(kù)機(jī)制

    異常或崩潰。為深入理解動(dòng)態(tài)鏈接機(jī)制及其工作原理,我重溫了《程序員的自我修養(yǎng)》,并通過(guò)實(shí)踐演示與反匯編分析,了解了動(dòng)態(tài)鏈接的過(guò)程。 本文將深入探討Linux系統(tǒng)中的動(dòng)態(tài)鏈接庫(kù)機(jī)制,這其中包括但不限于全局符號(hào)介入(Global Sy
    的頭像 發(fā)表于 12-18 10:06 ?567次閱讀
    <b class='flag-5'>深入探討</b>Linux系統(tǒng)中的動(dòng)態(tài)鏈接庫(kù)機(jī)制

    單片機(jī)的中斷機(jī)制

    單片機(jī)的中斷機(jī)制是一種重要的處理方式,它允許單片機(jī)在執(zhí)行主程序的過(guò)程中,能夠暫停當(dāng)前任務(wù),轉(zhuǎn)而處理外部或內(nèi)部緊急事件。這種機(jī)制極大地提高了系統(tǒng)的響應(yīng)速度和
    的頭像 發(fā)表于 10-17 18:03 ?1944次閱讀

    單片機(jī)異常復(fù)位的原因

    單片機(jī)異常復(fù)位是指單片機(jī)在正常工作過(guò)程中,非預(yù)期地返回到初始狀態(tài)或重啟。這種異常復(fù)位現(xiàn)象可能由多種因素引起,以下是對(duì)單片機(jī)
    的頭像 發(fā)表于 10-17 17:56 ?3067次閱讀

    便宜的單片機(jī)-英銳恩ENMCU系列OTP單片機(jī)

    、靈活性和應(yīng)用場(chǎng)景上展現(xiàn)出不同的優(yōu)勢(shì)。其中,OTP單片機(jī)以其低廉的成本和獨(dú)特的安全性,在眾多低成本、低復(fù)雜度項(xiàng)目中占據(jù)了重要地位。 英銳恩電子技術(shù)小編老唐將深入探討OTP單片機(jī)為何成為“便宜”的代名詞
    發(fā)表于 09-26 10:55

    單片機(jī)SPI通信實(shí)現(xiàn)

    深入探討單片機(jī)(如基于STM32、AVR、PIC等)如何通過(guò)SPI(Serial Peripheral Interface)進(jìn)行通信之前,我們先概述SPI通信的基本原理,隨后以STM32微控制器為例,詳細(xì)解釋如何配置SPI接口,并提供相應(yīng)的代碼示例。
    的頭像 發(fā)表于 09-09 17:00 ?1621次閱讀

    深入探討Linux的進(jìn)程調(diào)度器

    ,以及其運(yùn)行的順序。這篇文章將詳細(xì)探討Linux進(jìn)程調(diào)度器的工作原理、主要算法、調(diào)度策略以及其在實(shí)際操作中的應(yīng)用。
    的頭像 發(fā)表于 08-13 13:36 ?1271次閱讀
    <b class='flag-5'>深入探討</b>Linux的進(jìn)程調(diào)度器

    一文讀懂什么單片機(jī):組成結(jié)構(gòu)與應(yīng)用

    歡迎來(lái)到單片機(jī)的世界,這是一種微小(但功能強(qiáng)大)的設(shè)備,改變了嵌入式系統(tǒng)的面貌。在本文中,您將了解單片機(jī)的一些基本知識(shí)、單片機(jī)的結(jié)構(gòu)以及微處理器與
    的頭像 發(fā)表于 08-09 11:49 ?2389次閱讀
    一文讀懂什么<b class='flag-5'>單片機(jī)</b>:組成結(jié)構(gòu)與應(yīng)用

    單片機(jī)復(fù)位電路電阻電容如何取值

    單片機(jī)系統(tǒng)中,復(fù)位電路是非常重要的組成部分,它確保了單片機(jī)在啟動(dòng)時(shí)能夠可靠地進(jìn)入初始狀態(tài),以及在異常情況下能夠進(jìn)行復(fù)位操作。復(fù)位電路通常由一個(gè)上拉電阻、一個(gè)下拉電阻和一個(gè)電容組成,這些元件的取值
    的頭像 發(fā)表于 08-06 10:28 ?2278次閱讀