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

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

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

詳細(xì)剖析Cortex-M3處理器

5RJg_mcuworld ? 2018-01-15 11:07 ? 次閱讀

工作模式

線程模式(Thread mode):處理器復(fù)位或異常退出時為此模式。此模式下的代碼可以是特權(quán)代碼也可以是用戶代碼,通過CONTROL[0]控制。

處理模式(Handler mode):出現(xiàn)異常(包括中斷)時進(jìn)入此模式,此模式下所有代碼為特權(quán)訪問。

代碼權(quán)限

特權(quán)訪問:對處理器資源擁有完全訪問限權(quán);處理器復(fù)位后進(jìn)入此訪問模式;清零 CONTROL[0]進(jìn)入用戶模式。

用戶訪問:禁止訪問多數(shù)系統(tǒng)寄存器。只能通過進(jìn)入異常(中斷)來返回特權(quán)模式。進(jìn)入異常前是用戶級訪問,則退出異常時自動回到用戶及,除非在異常中修改CONTROL[0]位。

工作狀態(tài)

Thumb狀態(tài)(正常執(zhí)行指令狀態(tài))和調(diào)試狀態(tài)。

寄存器

r0-r12:通用寄存器,其中r8-r12只能被32位指令訪問。

r13(SP):堆棧指針;線程模式時可以在線程堆棧和主堆棧之間切換,但處理模式只使用主堆棧。兩個堆棧同一時刻只有一個可見,進(jìn)入、退出異常時自動切換堆棧。

r14(LR):鏈接寄存器,保存子程序或異常的返回地址(要實現(xiàn)嵌套,必須入棧)。

r15(PC):程序計數(shù)器。

xPSR:特殊用途的程序狀態(tài)寄存器。

異常

進(jìn)入異常步驟:

1.處理器在當(dāng)前堆棧上把xPSR、PC、LR、r12、r3~r0八個寄存器自動依次入棧。

2.讀取向量表(如果是復(fù)位中斷,更新SP值)。

3.根據(jù)向量表更新PC值。

4.加載新PC處的指令(2、3、4步與1步同時進(jìn)行)。

5.更新LR為EXC_RETURN(EXC_RETURN表示退出異常后返回的模式及使用的堆棧)。

退出異常步驟

1.根據(jù)EXC_RETURN指示的堆棧,彈出進(jìn)入中斷時被壓棧的8個寄存器。

2.從剛出棧的IPSR寄存器[8:0]位檢測恢復(fù)到那個異常(此時為嵌套中斷中),若為0則恢復(fù)到線程模式。

3.根據(jù)EXC_RETURN,選擇使用相應(yīng)SP。

末尾連鎖(Tail-chaining):當(dāng)前正在執(zhí)行中斷,又有一個中斷到來且這個中斷優(yōu)先級比正在執(zhí)行的中斷優(yōu)先級低(如果有其他被壓棧的低優(yōu)先級中斷則要比這些中斷優(yōu)先級高),這個中斷暫時被掛起,等到當(dāng)前中斷執(zhí)行完后不再執(zhí)行堆棧操作,而直接進(jìn)入掛起的中斷。

遲來:前一個中斷還沒有進(jìn)入執(zhí)行階段(但處理器狀態(tài)已經(jīng)保存),后面來了一個高優(yōu)先級中,則前一個中斷被搶占,后來的高優(yōu)先級中斷不需要再保存寄存器狀態(tài)。

中斷

Cortex-M3中有兩個優(yōu)先級的概念——搶占式優(yōu)先級和響應(yīng)優(yōu)先級,有人把響應(yīng)優(yōu)先級稱作'亞優(yōu)先級'或'副優(yōu)先級',每個中斷源都需要被指定這兩種優(yōu)先級。

具有高搶占式優(yōu)先級的中斷可以在具有低搶占式優(yōu)先級的中斷處理過程中被響應(yīng),即中斷嵌套,或者說高搶占式優(yōu)先級的中斷可以嵌套低搶占式優(yōu)先級的中斷。

當(dāng)兩個中斷源的搶占式優(yōu)先級相同時,這兩個中斷將沒有嵌套關(guān)系,當(dāng)一個中斷到來后,如果正在處理另一個中斷,這個后到來的中斷就要等到前一個中斷處理完之后才能被處理。如果這兩個中斷同時到達(dá),則中斷控制器根據(jù)他們的響應(yīng)優(yōu)先級高低來決定先處理哪一個;如果他們的搶占式優(yōu)先級和響應(yīng)優(yōu)先級都相等,則根據(jù)他們在中斷表中的排位順序決定先處理哪一個。

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

    關(guān)注

    31

    文章

    5295

    瀏覽量

    119824
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    895

    瀏覽量

    41350
  • Cortex-M3
    +關(guān)注

    關(guān)注

    9

    文章

    269

    瀏覽量

    59406

原文標(biāo)題:Cortex-M3的一些關(guān)鍵概念!

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Cortex-M3處理器是什么

    STM32單片機STM32的核心Cortex-M3處理器是一個標(biāo)準(zhǔn)化的微控制結(jié)構(gòu),希望思考一下,何為標(biāo)準(zhǔn)化?簡言之,Cortex-M3處理器
    發(fā)表于 07-16 06:33

    STM32的核心Cortex-M3處理器是什么

    STM32的核心Cortex-M3處理器是一個標(biāo)準(zhǔn)化的微控制結(jié)構(gòu),希望思考一下,何為標(biāo)準(zhǔn)化?簡言之,Cortex-M3處理器擁有32位CP
    發(fā)表于 08-02 08:52

    Cortex-M3處理器中斷與FreeRTOS中斷優(yōu)先級配置

    置頂/星標(biāo)公眾號,不錯過每一條消息!很多朋友對中斷的一些知識還是不了解,今天就寫點關(guān)于Cortex-M3處理器中斷相關(guān),以及FreeRTOS中斷優(yōu)先級配置的內(nèi)容。...
    發(fā)表于 08-13 06:16

    STM32的核心Cortex-M3處理器簡介

    Cortex-M3處理器是什么?Cortex-M3的CPU支持哪兩種運行模式?
    發(fā)表于 09-23 09:15

    Cortex-M3處理器中的嵌套向量中斷控制的特性是什么?

    中斷和異常的作用是什么?Cortex-M3處理器中的嵌套向量中斷控制的特性是什么?
    發(fā)表于 11-05 07:25

    STM32的核心Cortex-M3處理器的標(biāo)準(zhǔn)化是什么意思

    STM32的核心Cortex-M3處理器是一個標(biāo)準(zhǔn)化的微控制結(jié)構(gòu),希望思考一下,何為標(biāo)準(zhǔn)化?簡言之,Cortex-M3處理器擁有32位CP
    發(fā)表于 12-06 07:53

    基于ARM Cortex-M3內(nèi)核的STM32處理器有何性能

    一、背景如果你正為項目的處理器而進(jìn)行艱難的選擇:一方面抱怨16位單片機有限的指令和性能,另一方面又抱怨32位處理器的高成本和高功耗。那么,基于 ARM Cortex-M3內(nèi)核的STM32系列
    發(fā)表于 12-06 07:20

    制造一種基于Cortex-M0和Cortex-M3處理器的SoC

    DesignStartDesignStart計劃可以讓用戶無需預(yù)付授權(quán)費用,就可以開始設(shè)計、制造基于Cortex-M0和Cortex-M3處理器的SoC,當(dāng)產(chǎn)品成功量產(chǎn)出貨之后再支付版稅。ARM
    發(fā)表于 07-27 16:58

    Cortex-M3權(quán)威指南介紹

    Cortex-M3處理器介紹基本的硬件構(gòu)架和指令系統(tǒng)待
    發(fā)表于 11-23 11:01 ?0次下載

    高性能低成本Cortex-M3處理器

    高性能低成本Cortex-M3處理器,參考下。
    發(fā)表于 01-22 14:23 ?27次下載

    基于ARM Cortex-M3處理器的電源設(shè)計及應(yīng)用

    今天我們就來介紹一個基于Cortex-M3處理器的電源系統(tǒng)設(shè)計——GD32F1x0,希望對大家有所幫助。
    發(fā)表于 08-28 11:20 ?14次下載
    基于ARM <b class='flag-5'>Cortex-M3</b><b class='flag-5'>處理器</b>的電源設(shè)計及應(yīng)用

    STM32系列ARM Cortex-M3處理器微控制原理與實踐

    STM32系列ARM Cortex-M3處理器微控制原理與實踐
    發(fā)表于 09-22 16:34 ?24次下載
    STM32系列ARM <b class='flag-5'>Cortex-M3</b><b class='flag-5'>處理器</b>微控制<b class='flag-5'>器</b>原理與實踐

    基于Cortex-M3處理器的開關(guān)磁阻電機控制設(shè)計

    基于Cortex-M3處理器的開關(guān)磁阻電機控制設(shè)計
    發(fā)表于 09-29 09:15 ?9次下載
    基于<b class='flag-5'>Cortex-M3</b><b class='flag-5'>處理器</b>的開關(guān)磁阻電機控制<b class='flag-5'>器</b>設(shè)計

    STM32系列Cortex-M3處理器編程手冊免費下載

    本編程手冊為應(yīng)用程序和系統(tǒng)級軟件開發(fā)人員提供信息。它對STM32F10xxx/20xxx/21xxx/l1xxx Cortex-M3處理器編程模型、指令集和核心外設(shè)進(jìn)行了完整的描述
    發(fā)表于 09-12 08:00 ?38次下載
    STM32系列<b class='flag-5'>Cortex-M3</b><b class='flag-5'>處理器</b>編程手冊免費下載

    Cortex-M3處理器內(nèi)核與基于Cortex-M3的MCU關(guān)系

    Cortex-M3Cortex-M3簡述Cortex-M3是ARM公司設(shè)計的ARMv7架構(gòu)下Cortex系列的首秀,其目的是為了讓32位處理器加入單片機市場,
    發(fā)表于 11-05 18:35 ?8次下載
    <b class='flag-5'>Cortex-M3</b><b class='flag-5'>處理器</b>內(nèi)核與基于<b class='flag-5'>Cortex-M3</b>的MCU關(guān)系