娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年03月24日(星期一)

正在發生

2021年03月24日 | 【ARM】Cortex-M3 異常系統

發布者:乘風翻浪 來源: eefocus關鍵字:ARM  Cortex-M3  異常系統 手機看文章 掃描二維碼
隨時隨地手機看文章

CM3內核正常工作時是按照指令順序執行的,當發生異常或者中斷時,將打斷正在執行的動作,進而執行異常或中斷的服務程序


異常系統具有保障CM3工作的安全性和健壯性的作用。


1 異常類型

異常分為復位(Reset),不可屏蔽中斷(NMI),硬件錯誤(HardFault),存儲管理錯誤(MemManageFault),總線錯誤((BusFault)),用法錯誤(UsageFault),系統調用(SVC),可懸掛系統調用(PendSV),系統節拍(SysTick)等。

2 優先級的定義

當異常存在多個時,就會出現競爭,進而出現優先級的概念。當不同的異常發生時,究竟該響應哪一個?這是由優先級來決定的。


在 CM3 中,優先級對于異常來說很關鍵的,它會影響一個異常是否能被響應,以及何時可以響應。優先級的數值越小,則優先級越高。 CM3 支持中斷嵌套,使得高優先級異常會搶占(preempt)低優先級異常。有 3 個系統異常:復位, NMI 以及硬 fault,它們有固定的優先級,并且它們的優先級號是負數,從而高于所有其它異常。所有其它異常的優先級則都


是可編程的(但不能編程為負數)。

原則上,CM3可支持256級的可編程優先級,但是芯片公司考慮到成本以及精簡設計,只會支持少于256的優先級,比如8,16,32等。


以下的3位(MSB高位對齊)表示,可以支持8級優先級:

但是,優先級的規定并不是只用“搶占優先級”來定義,為了使搶占機能更加可控,CM3還把256級優先級分成高低兩段,分別是搶占優先級和亞優先級。二者占的位數不同,也就是所謂的優先級分組。

搶占優先級最多有7位,所以最多128個搶占級。


在計算搶占優先級和亞優先級的有效位數時,必須先求出下列值:

1 芯片實際使用了多少位來表達優先級.

2 優先級組是如何劃分的。

舉個例子,如果只使用 3 個位來表達優先級([7:5]),并且優先級組的值是 5(從比特 5

處分組),則你得到 4 級搶占優先級,且在每個搶占優先級的內部有 2 個亞優先級。

通過這樣的優先級機制,可以對異常或者中斷進行優先級編程(手動指定優先級)。


3 向量表

當發生了異常并且要響應它時, CM3 需要定位其處理例程的入口地址(函數入口地址)。這些入口地址存儲在所謂的“(異常)向量表”中。CM3 認為該表位于零地址處,且各向量占用 4 字節,因此每個表項占用 4 字節。

4 Fault類異常

有若干個系統異常專用于 fault 處理。 CM3 中的 Faults 可分為以下幾類:

1 總線 faults (取指出錯,POP/PUSH錯誤)

2 存儲器管理 faults (訪問MPU范圍外的地址,往只讀區域寫數據,用戶級訪問特權級地址)

3 用法 faults (未定義指令,除數為0)

4 硬 faults (前三者錯誤的服務例程無法執行時,變為HardFault)


5 SVC和PendSV

操作系統中的任務調度,用戶/內核態的上下文切換,可以通過SVC和PendSV異常來實現。


SVC(系統服務調用,亦簡稱系統調用)和 PendSV(可懸起系統調用),它們多用于在操作系統之上的軟件開發中。 SVC 用于產生系統函數的調用請求。例如,操作系統不讓用戶程序直接訪問硬件,而是通過提供一些系統服務函數,用戶程序使用 SVC 發出對系統服務函數的呼叫請求,以這種方法調用它們來間接訪問硬件。因此,當用戶程序想要控制特定的硬件時,它就會產生一個 SVC 異常,然后操作系統提供的 SVC 異常服務例程得到執行,它再調用相關的操作系統函數,后者完成用戶程序請求的服務。


這種“提出要求——得到滿足”的方式,很好、很強大、很方便、很靈活、很能可持續發展。首先,它使用戶程序從控制硬件的繁文縟節中解脫出來,而是由 OS 負責控制具體的硬件。第二, OS 的代碼可以經過充分的測試,從而能使系統更加健壯和可靠。第三,它使用戶程序無需在特權級下執行,用戶程序無需承擔因誤操作而癱瘓整個系統的風險。第四,通過 SVC 的機制,還讓用戶程序變得與硬件無關,因此在開發應用程序時無需了解硬件的操作細節,從而簡化了開發的難度和繁瑣度,并且使應用程序跨硬件平臺移植成為可能。開發應用程序唯一需要知道的就是操作系統提供的應用編程接口(API),并且了解各個請求代號和參數表,然后就可以使用 SVC 來提出要求。

另一個相關的異常是 PendSV(可懸起的系統調用),它和 SVC 協同使用。一方面, SVC異常是必須立即得到響應的(若因優先級不比當前正處理的高, 或是其它原因使之無法立即響應, 將上訪成硬 fault——譯者注), 應用程序執行 SVC 時都是希望所需的請求立即得到響應。另一方面, PendSV 則不同,它是可以像普通的中斷一樣被懸起的(不像 SVC 那樣會上訪)。 OS 可以利用它“緩期執行” 一個異常——直到其它重要的任務完成后才執行動作。 懸起 PendSV 的方法是: 手工往 NVIC 的 PendSV 懸起寄存器中寫 1。 懸起后, 如果優先級不夠高,則將緩期等待執行。


PendSV 的典型使用場合是在上下文切換時(在不同任務之間切換)。 例如, 一個系統中有兩個就緒的任務,上下文切換被觸發的場合可以是:


1 執行一個系統調用

2 系統滴答定時器(SYSTICK)中斷,(輪轉調度中需要)

任務中正在響應中斷時(IRQ),是不能進行上下文切換的。如果 OS 檢測到某 IRQ 正在活動并且被 SysTick 搶占(進行任務間的上下文切換),它將懸起一個 PendSV 異常,以便緩期執行上下文切換。


關鍵字:ARM  Cortex-M3  異常系統 引用地址:【ARM】Cortex-M3 異常系統

上一篇:ARM基礎篇—ARM微處理器的應用領域及特點
下一篇:【ARM】Cortex-M3 存儲器系統

推薦閱讀

在成功實施后,金雅拓將進一步投資于彩色激光雕刻技術以加強欺詐保護和簡化驗證過程金雅拓 (Gemalto, Euronext NL0000400653 GTO) 宣布推出兩項激光個人化創新,以進一步提高官方身份證件的安全性。這些先進的安全功能可作為金雅拓激光彩雕防護(Color Laser Shield)*安全身份解決方案系列的可選項立即啟用,并受到各大個人化設備品牌的支持。彩色激...
程序功能:1,將STM32的USB枚舉為HID設備。2,STM32使用3個端點,端點0用于枚舉用,端點1和2用于數據的發送和接收。3,端點長度為64,也就是單次最多可以傳輸64個字節數據。4,STM32獲取上位機下發的數據并將該數據通過USB原樣返回,同時將數據打印輸出。5,上位機程序通過調用windows的API實現對HID設備的讀寫控制。原理圖: 說明:實際測試的時候不用這...
據electrek報道,特斯拉申請了一項技術專利,計劃從其龐大的車隊中獲取數據,以訓練自動駕駛神經網絡。特斯拉申請了這項專利,但特斯拉人工智能和自動駕駛軟件負責人安德烈·卡帕西(Andrej Karpathy)被指定為這項專利應用的唯一發明人。卡帕西在這項專利中描述了在應用程序中為深度學習培訓收集數據的問題:“通過訓練機器學習模型,開發應用于自動駕駛...
對消費者來說,購買純電動汽車要考慮安全、續航、充電速度等多項指標,而以上指標都是由動力電池決定的,如同發動機影響了整車的品牌和性能,動力電池也直接影響著電動汽車的動力和安全性能,市場上811、CTP、刀片、LFP、無鈷電池、固態電池、石墨烯這些電池概念層出不窮,今天就和大家一起聊一聊,到底哪些電池更先進、更安全,應該買哪個?選811還是選CT...

史海拾趣

問答坊 | AI 解惑

求助:萬能充電器的原理圖!!

我現在搞畢業設計,要設計一個萬能手機充電器,利用手搖使發電機發電,通過整流,濾波,穩壓之后充到可充電電池,然后在充到待充電電池中.有哪位高手能提供電路圖和原理給我??`具體的穩壓電路,整流電路,濾波電路圖??元器件該如何選擇??``謝了``…

查看全部問答∨

請教震蕩器,老板要殺人了.

作的一批板全部報廢. 單片機用的avr,外接貼片陶瓷震蕩器,16m的震蕩器居然是4.8m,只有偶爾個別的正常16m. 但是把陶瓷換到以前產品板上又正常。說明應該是電路板問題. 換成石英晶振也正常. 加電壓到6v也不行. 仔細看以前產品板,震蕩器布線也沒啥特別 ...…

查看全部問答∨

關于MC14468的問題

有誰做過煙霧探測器   用的是HIS-07離子室 和MC14468  配套使用的     不過照著硬件連接圖做出來后   為什么檢測的不準確呢????     誰知道的幫個忙啊~~~~~~~  &n ...…

查看全部問答∨

貌似帖子里不能貼網址啊,有點不方便哪....

還是說等級的限制?連論壇內部的地址也不能貼...我想既然能限制,應該也能設定規則區別對待吧...…

查看全部問答∨

走過路過千萬別錯過

本帖最后由 ddllxxrr 于 2016-1-7 17:01 編輯 本貼是吆喝貼,原因是我看到了壇里這個   我覺得實在是實惠,并自己拍了一套,好東東大家別錯過。   25元,你買不了吃虧,25元,你買不了上當。   走過路過千萬別錯過!!! ...…

查看全部問答∨

基于單片機的數字電壓表

求高人給份基于單片機的數字電壓表…

查看全部問答∨

【Cyclone V試用】 -- 用前準備 (建立工程)

一、安裝驅動 板子接上后,插入USB提示找到硬件,此時按照http://bbs.eeworld.com.cn/thread-360662-1-2.html的做法,將驅動安裝 二、打開QuartusII, 1、新建---> 2、選擇目錄及項目名稱 3、選擇所使用的器件: 4、設置EDA工具: ...…

查看全部問答∨

新人ccs5.1求助,No USB FET was found

用的板子是430g2553,帶仿真器,安裝的ccs5.1(安裝時安裝了仿真器驅動),debug時說"Error initializing emulator: No USB FET was found"。設備管理器沒有感嘆號:說明驅動應該正常;ccs設置也選的是對應的msp430g2553型號。另外我google這個 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 襄城县| 修文县| 海淀区| 昌吉市| 府谷县| 云阳县| 萨迦县| 济阳县| 鄂伦春自治旗| 苍溪县| 唐河县| 株洲市| 张家口市| 崇左市| 孝义市| 大庆市| 来宾市| 璧山县| 武乡县| 宁国市| 通道| 虹口区| 随州市| 中阳县| 英超| 崇明县| 武强县| 永丰县| 桂阳县| 巧家县| 嘉善县| 龙口市| 博爱县| 澄迈县| 威远县| 耒阳市| 长春市| 霍城县| 辽中县| 米林县| 桑日县|