国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

arm cortex-m 架構(gòu)簡(jiǎn)述

這篇具有很好參考價(jià)值的文章主要介紹了arm cortex-m 架構(gòu)簡(jiǎn)述。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. cortex-m 處理器的體系架構(gòu)與指令集

本文僅討論 cortex-m0/m0+/m3/m4/m7 armv8架構(gòu)暫不討論

  • cortex-m0/m0+/m1 基于ARMv6-M架構(gòu)
  • cortex-m3基于ARMv7-M架構(gòu)(ARMv7-Mcortex-m3處理器一起發(fā)布)
  • cortex-m4/m7基于ARMv7E-M架構(gòu)(ARMv7-Mcortex-m4處理器一起發(fā)布)
    arm cortex-m 架構(gòu)簡(jiǎn)述,arm開發(fā),架構(gòu)
  • corte-m處理器都支持Thumb-2指令集(既支持16位指令,也支持32位指令)。
  • 上圖是ARMv6-M,ARMv7-M,ARMv7E-M所有指令,上圖也能看出所支持指令的長(zhǎng)度。
  • cortex-m1處理器一般用于FPGA,針對(duì)FPGA進(jìn)行了優(yōu)化

2. cortex-m內(nèi)核寄存器

2.1 cortex-m0, cortex-m0+寄存器

arm cortex-m 架構(gòu)簡(jiǎn)述,arm開發(fā),架構(gòu)

2.2 cortex-m3, cortex-m4, cortex-m7 寄存器

arm cortex-m 架構(gòu)簡(jiǎn)述,arm開發(fā),架構(gòu)

2.3 PRIMASK、FAULTMASK和BASEPRI寄存器

  • PRIMASK寄存器有1個(gè)bit生效,可屏蔽所有 可配置優(yōu)先級(jí)的異常 ,即屏蔽除 Reset(-3), NMI(-2), HardFault(-2) 外的所有中斷。
  • FAULTMASK寄存器有1個(gè)bit生效,屏蔽除 Reset(-3), NMI(-2) 外的所有中斷。
  • BASEPRI:可屏蔽優(yōu)先級(jí) 小于或等于 BASEPRI配置值的中斷或異常。BASEPRI位寬是可配置的(微控制器設(shè)計(jì)廠商可配置,非軟件可配置),一般是3bit4bit。
    arm cortex-m 架構(gòu)簡(jiǎn)述,arm開發(fā),架構(gòu)

2.4 SP寄存器

SP寄存器在物理實(shí)現(xiàn)上有兩個(gè),分別是MSPPSP,通過SP這個(gè)名字訪問的可能是不同的物理存儲(chǔ),當(dāng)然也可以直接在匯編中使用MSPPSP

  • MSP:Main Stack Pointer(主棧指針),Handler mode(處理異常或中斷)使用MSP,Thread mode可以選擇使用MSPPSP(通過CONTROL寄存器選擇)
  • PSP:Process Stack Pointer(線程棧指針),在Thread mode下可由CONTROL寄存器配置使用PSP.

3. PSR 寄存器

因?yàn)橹С值闹噶畈煌?,所以不同處理器的PSR寄存器會(huì)略有不同

3.1 cortex-m0, cortex-m0+(ARMv6-M)

arm cortex-m 架構(gòu)簡(jiǎn)述,arm開發(fā),架構(gòu)

3.2 cortex-m3(ARMv7-M)

arm cortex-m 架構(gòu)簡(jiǎn)述,arm開發(fā),架構(gòu)

3.3 cortex-m4,cortex-m7(ARMv7E-M)

arm cortex-m 架構(gòu)簡(jiǎn)述,arm開發(fā),架構(gòu)

  • GE[3:0]:大于或等于標(biāo)志
  • ICI:Interruptible-continuable instruction(中斷繼續(xù)指令),如LDM指令,STM指令均需要多個(gè)時(shí)鐘周期,且是可被中斷的, ICI只要作用是記錄中斷位置。
  • IT:用于If-Then指令(IT指令,在此處暫不展開討論IT指令)。
  • T:指示處于ARM狀態(tài)還是Thumb狀態(tài),cortex-m處理器只支持Thumb狀態(tài),所以此位一直為1。

3.4 ISR_NUMBER

  • cortex-m0/m0+的ISR_NUMBER
    arm cortex-m 架構(gòu)簡(jiǎn)述,arm開發(fā),架構(gòu)

  • cortex-m3/m4/m7的ISR_NUMBER
    arm cortex-m 架構(gòu)簡(jiǎn)述,arm開發(fā),架構(gòu)

  • 總結(jié)

    • cortex-m3/m4/m7相比cortex-m0/m0+ 增加了如下異常
      • MemManage
      • BusFault
      • UsageFault
      • Reserved for Debug
    • cortex-m3/m4/m7相比cortex-m0/m0+ IRQ中斷數(shù)量由32個(gè)擴(kuò)展到了240個(gè)
    • systickcortex-m0/m0+ 中是可選實(shí)現(xiàn)的,systickcortex-m3/m4/m7中是必須實(shí)現(xiàn)的。

4. cortex-m處理器模式與特權(quán)級(jí)

4.1 cortex-m處理器特權(quán)級(jí)

cortex-m處理器分為兩個(gè)特權(quán)級(jí):

  • Unprivileged(非特權(quán)級(jí))

    • 不能使用MRS,MSR,CPS(開關(guān)中斷) 指令。
    • 不能訪問systick、NVIC、SCB等
    • 對(duì)MPU保護(hù)的資源訪問受限

    注:cortex-m0不支持非特權(quán)模式(CONTROL沒有對(duì)應(yīng)的配置位)。cortex-m0+ 可選的支持非特權(quán)模式。cortex-m3/m4/m7強(qiáng)制支持非特權(quán)模式。

  • Privileged(特權(quán)):

    • 所有指令,所有資源均可訪問。

4.2 cortex-m0/m0+處理器寄存器訪問的特權(quán)級(jí)

  • cortex-m0只支持特權(quán)級(jí)(不支持非特權(quán)級(jí)),所有的寄存器都只能在特權(quán)級(jí)下訪問。
  • cortex-m0+可已選擇支持特權(quán)級(jí),也可以選擇不支持特權(quán)級(jí)。
    arm cortex-m 架構(gòu)簡(jiǎn)述,arm開發(fā),架構(gòu)

    <<DUI0662B_cortex_m0p_r0p1_dgug>> 文檔中并沒有對(duì)各個(gè)寄存器中訪問的特權(quán)級(jí)進(jìn)行描述,歡迎大家補(bǔ)充,或后續(xù)我找一下其他資料或?qū)崪y(cè)一下再補(bǔ)充。

4.3 cortex-m3/m4/m7處理器寄存器訪問的特權(quán)級(jí)

  • cortex-m3/m4 存器訪問的特權(quán)級(jí)
    arm cortex-m 架構(gòu)簡(jiǎn)述,arm開發(fā),架構(gòu)
  • cortex-m7 存器訪問的特權(quán)級(jí)
    arm cortex-m 架構(gòu)簡(jiǎn)述,arm開發(fā),架構(gòu)
  • 由上面兩個(gè)表可以看出cortex-m7cortext-m3/m4 僅在 MSP的訪問權(quán)限上存在區(qū)別。

4.4 cortex-m處理器模式

  • Thread mode:線程模式(沒有進(jìn)行中斷處理)

    • 可配置特權(quán)模式或者非特權(quán)模式CONTROL寄存器配置,。
    • 可配置使用MSP或者PSP,CONTROL寄存器配置。

    注:在Thread mode下,cortex-m0只支持特權(quán)模式(CONTROL寄存器沒有相關(guān)的配置位),cortex-m0+可選支持非特權(quán)模式,cortex-m3/m4/m7既支持特權(quán)模式,也支持非特權(quán)模式。

  • Handler mode:處理模式

    • 一定處于特權(quán)模式
    • 使用MSP

4.5 cortex-m處理器模式和特權(quán)級(jí)切換簡(jiǎn)析

  • 下表是寄存器的初始值,通過寄存器的初始值我們可以得出很多結(jié)論
    arm cortex-m 架構(gòu)簡(jiǎn)述,arm開發(fā),架構(gòu)

4.5.1 CONTROL寄存器的初始值

CONTROL寄存器的初始值為全0,我們可以得出如下結(jié)論:

  • 針對(duì)cortex-m0cortex-m0+(不支持非特權(quán)級(jí)) ,表征在初始狀態(tài)下使用MSP
  • 針對(duì)cortex-m0+(支持非特權(quán)級(jí))/m4/m7,表征在初始狀態(tài)下使用MSP且處于特權(quán)模式。

    cortex-m4/m7在 CONTROL寄存器中增加了FPCA位用于指示中斷發(fā)生時(shí)上下文中有沒有浮點(diǎn)運(yùn)算,用于指示中斷發(fā)生時(shí)的硬件壓棧,這與cortex-m的異常處理有關(guān),在此暫不展開,后續(xù)會(huì)專門寫一篇文章來分析cortex-m的異常處理。

4.5.2 PSR寄存器的初始值

  • PSR寄存器的初始為0x01000000, 即T位為1表示處于thumb狀態(tài)(cortex-m只支持Thumb狀態(tài)),ISR_NUMBER 為零表示處于Thread mode

4.5.3 PRIMASK,F(xiàn)AULTMASK,BASEPRI寄存器的初始值

PRIMASK,F(xiàn)AULTMASK,BASEPRI寄存器的初始值都為0,便是不屏蔽任何中斷。

4.5.4 MSP PSP PC寄存器的初始值

初始狀態(tài)下棧指針使用MSP , 不關(guān)心PSP的初始值,MSP PC寄存器的初始值比較特殊,上電或復(fù)位后,硬件會(huì)將向量表中的第一個(gè)字放入MSP中,將向量表中的第二個(gè)字放入PC中,又因?yàn)閺?fù)位狀態(tài)下VTOR 寄存器的初始值為0,所以硬件會(huì)到0地址處找向量表,軟件要保證0地址出有向量表。

4.5.5 LR寄存器的初始值

LR寄存器的初始值是0xFFFFFFFF,這是一個(gè)非法值,函數(shù)調(diào)用不會(huì)在這里返回。

4.5.6 總結(jié)

結(jié)合通過上述描述,我畫了一張圖描述狀態(tài)和特權(quán)級(jí)的切換,比較好理解,便不過多贅述。
arm cortex-m 架構(gòu)簡(jiǎn)述,arm開發(fā),架構(gòu)文章來源地址http://www.zghlxwxcb.cn/news/detail-794330.html

到了這里,關(guān)于arm cortex-m 架構(gòu)簡(jiǎn)述的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【ARM Cortex-M 系列 3 番外篇 -- ARMv6, ARMv7, ARMv8, ARMv9 架構(gòu)差異及精簡(jiǎn)指令集 與 復(fù)雜指令集 介紹】

    上篇文章:ARM Cortex-M 系列 2.1 – RT-Thread Cortex-M7 異常處理及 hardfault 處理分析 ARM架構(gòu)是一種處理器架構(gòu),全稱為高級(jí)精簡(jiǎn)指令集計(jì)算機(jī)(Advanced RISC Machine)。它是英國(guó)ARM公司設(shè)計(jì)的一種精簡(jiǎn)指令集( RISC )處理器架構(gòu),和復(fù)雜指令集( CISC )處理器架構(gòu)相對(duì)。 CISC 與 RISC 差異

    2024年02月08日
    瀏覽(21)
  • 【ARM Cortex-M 系列 1.1 -- Cortex-M33 與 M4 差異 詳細(xì)介紹】

    【ARM Cortex-M 系列 1.1 -- Cortex-M33 與 M4 差異 詳細(xì)介紹】

    請(qǐng)閱讀 【嵌入式開發(fā)學(xué)習(xí)必備專欄 之 Cortex-Mx 專欄】 在移植 RT-Thread 到 瑞薩RA4M2(Cortex-M33)上時(shí),遇到了hardfault 問題,最后使用了Cortex-M4中的調(diào)度相關(guān)的函數(shù)后,OS 可以正常調(diào)度了。所以這里做下 M33與 M4的關(guān)系梳理。 ARM Cortex-M33 和 Cortex-M4 都是 ARM 公司設(shè)計(jì)的32位RISC微處理

    2024年01月21日
    瀏覽(21)
  • ARM Cortex-M3內(nèi)核

    目錄 ARM Cortex-M3內(nèi)核 存儲(chǔ)器系統(tǒng) 外設(shè)接口 時(shí)鐘和電源管理 中斷控制器 DMA控制器 STM32F1系列微控制器是一款基于ARM Cortex-M3內(nèi)核的嵌入式芯片,其架構(gòu)組成主要包括以下幾個(gè)方面: ?ARM Cortex-M3內(nèi)核:STM32F1系列微控制器采用了ARM Cortex-M3內(nèi)核,該內(nèi)核是一種高性能、低功耗的32位

    2024年02月07日
    瀏覽(18)
  • ARM Cortex-M 的 SP

    ARM Cortex-M 的 SP

    在嵌入式開發(fā)中,堆棧是一個(gè)很基礎(chǔ),同時(shí)也是非常重要的名詞,堆棧可分為堆 (Heap) 和棧 (Stack) 。 棧(Stack): 一種順序數(shù)據(jù)結(jié)構(gòu),滿足后進(jìn)先出(Last-In / First-Out)的原則,由編譯器自動(dòng)分配和釋放。 堆(Heap):類似于鏈表結(jié)構(gòu),可對(duì)任意位置進(jìn)行操作,通常由程序員手動(dòng)分配

    2024年02月10日
    瀏覽(18)
  • ARM Cortex-M3內(nèi)核理解

    ARM Cortex-M3內(nèi)核理解

    做一個(gè)對(duì)社會(huì)有用的人!不抱怨,不氣餒! 目錄 前言 1 ARM處理器家族 2 什么是ARM?Cortex-M處理器 2.1?Cortex-M3 2.2 M3處理器到微控制器 2.3 ARM處理器的發(fā)展 2.4 Thumb ISA的架構(gòu)版本 2.4.1 指令集的概念 2.5 軟件開發(fā)流程? 2.5.1 輪詢 3、技術(shù)綜述 3.1、Cortex-M3簡(jiǎn)介 3.1.1 處理器類型 3.1.2 指令

    2024年02月08日
    瀏覽(25)
  • ARM及Cortex-M4介紹

    ARM及Cortex-M4介紹

    ARM的含義有三種。1.ARM是一個(gè)公司但是其本身并不生產(chǎn)芯片,而是制定芯片設(shè)計(jì)標(biāo)準(zhǔn)以及相關(guān)芯片體系結(jié)構(gòu)技術(shù),以技術(shù)出售和標(biāo)準(zhǔn)制定盈利。2.ARM是一種技術(shù)的名稱,是一種高級(jí)RISC處理器的體系結(jié)構(gòu)。3.ARM是一類微處理器芯片或產(chǎn)品的統(tǒng)稱,是采用ARM技術(shù)開發(fā)的RISC處理器的

    2024年02月12日
    瀏覽(22)
  • ARM Cortex-M 內(nèi)核調(diào)試相關(guān)

    ARM Cortex-M 內(nèi)核調(diào)試相關(guān)

    推薦博文1: SWD協(xié)議通信的簡(jiǎn)單總結(jié) 根據(jù)《ARM Technical Reference Manual cortex_m3_r1p1_trm》和《Arm? Debug Interface Architecture Specification ADI v6.0.pdf》進(jìn)行梳理。 Cortex-M3 處理器實(shí)現(xiàn)了ARM v7-M架構(gòu)。這包括整個(gè) 16 位的Thumb指令集和基本的 Thumb-2 32位指令集架構(gòu)。處理器無法執(zhí)行ARM指令。 Thumb

    2024年02月03日
    瀏覽(20)
  • 【ARM Cortex-M 系列 1 -- Cortex-M0, M3, M4, M7, M33 差異】

    【ARM Cortex-M 系列 1 -- Cortex-M0, M3, M4, M7, M33 差異】

    請(qǐng)閱讀 【ARM Coresight | AMBA BUS| Armv8/v9 | GCC 專欄導(dǎo)讀】 下篇文章:ARM Cortex-M 系列 2 – CPU 之 Cortex-M7 介紹 Cortex-M0/M0+ 介紹 Cortex-M0 是 ARM 公司推出的一款微控制器(MCU)核心。這個(gè)核心是基于 ARMv6-M 架構(gòu)設(shè)計(jì)的, 只支持 56 條指 令的小指令集,大部分指令是 16 位指令, 是 ARM Cor

    2024年02月17日
    瀏覽(30)
  • 【ARM CPU 之 Cortex-M7 介紹】

    【ARM CPU 之 Cortex-M7 介紹】

    請(qǐng)閱讀 【ARM Coresight | AMBA BUS| Armv8/v9 | GCC 專欄導(dǎo)讀】 上篇文章:ARM Cortex-M 系列 1 番外篇-- Cortex-M0, M3, M4, M7, M33 , M35P 差異 下篇文章:ARM Cortex-M 系列 2.1 – RT-Thread Cortex-M7 異常處理及 hardfault 處理分析 Cortex-M7是基于ARMv7架構(gòu),ARMv7 架構(gòu)主要分為以下三類: 其中 Cortex-M 系列應(yīng)用

    2024年02月16日
    瀏覽(16)
  • ARM Cortex-M3權(quán)威指南-概覽和基礎(chǔ)

    ARM Cortex-M3權(quán)威指南-概覽和基礎(chǔ)

    1.1.1 高性能 ? 許多指令都是單周期的——包括乘法相關(guān)指令。并且從整體性能上, Cortex-M3 比得過絕大多數(shù)其它的架構(gòu)。 ? 指令總線和數(shù)據(jù)總線被分開,取值和訪內(nèi)可以并行不悖 ? Thumb-2 的到來告別了狀態(tài)切換的舊世代,再也不需要花時(shí)間來切換于 32 位 ARM 狀態(tài)和16 位 T

    2024年02月03日
    瀏覽(68)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包