當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]Cortex-M0體系結(jié)構(gòu)包括:系統(tǒng)模型、存儲器映射、異常中斷。這篇文章主要講解Cortex-M0的系統(tǒng)模型。操作模式和狀態(tài)如上圖所示,Cortex-M0包括兩種操作模式和兩種狀態(tài)Thumb狀態(tài)(Thumb state)處理模式線程模式調(diào)試狀態(tài)

Cortex-M0體系結(jié)構(gòu)包括:系統(tǒng)模型、存儲器映射、異常中斷。這篇文章主要講解Cortex-M0的系統(tǒng)模型。


操作模式和狀態(tài)

如上圖所示,Cortex-M0包括兩種操作模式和兩種狀態(tài)

Thumb狀態(tài)(Thumb state)

處理模式

線程模式

調(diào)試狀態(tài)

  處理器啟動后處于Thumb狀態(tài),在這種狀態(tài)下,處理器可以處于線程模式和處理模式,線程模式時執(zhí)行普通代碼,處理模式時執(zhí)行異常處理。線程模式和處理模式的系統(tǒng)模型幾乎一模一樣,唯一的不同在于線程模式通過配置CONTROL特殊寄存器,可以使用進程指針。

  調(diào)試狀態(tài)僅用于調(diào)試操作,暫停處理器內(nèi)核后,執(zhí)行不會再執(zhí)行。在這種狀態(tài)下,調(diào)試器可以讀取甚至改變內(nèi)核寄存器的值。

  處理器上電后默認(rèn)處于Thumb狀態(tài)的線程模式,執(zhí)行普通代碼。


寄存器和特殊寄存器

  

  數(shù)據(jù)的解析和控制器的處理過程中,需要處理器內(nèi)核寄存器的參與。如果需要處理控制器中的數(shù)據(jù),這些數(shù)據(jù)需要先加載到處理器內(nèi)核的寄存器(寄存器組中的摸個),處理完成后,如果有需必要,它們還會被送到存儲器中,這種方式被稱為“加載-存儲架構(gòu)”(load-store architecture)。

  Cortex-M0有13個32位通用寄存器R0-R12,以及多個特殊寄存器。

  寄存器組包含16個32位寄存器,其中13個時通用的,其余三個具有特殊用途。


R0-R12 通用寄存器

  R0-R12為32位通用寄存器,由于16位thumb指令集在空間上的限制,許多Thumb指令只能操作R0-R7,它們被稱為低寄存器,而想MOV之類的一些指令則可以使用全部的寄存器。R0-R12寄存器的初始化值未定義。


R13,棧指針(SP)

  R13為棧指針,對??臻g進行存取操作(通過PUSH和POP指令),Cortex-M0在不同的物理地址上有兩個棧指針,一個為主棧指針(MSP),也被稱為SP_main,一個指針稱為進程棧指針(PSP),也為稱為SP_process,只能用在線程模式。可以通過CONTROL寄存器,選擇使用那個棧指針。

  在ARM處理器中,由于寄存器是32位的,所以PUSH和POP指令永遠是32位操作,而且存取地址是32位字對齊(32位對齊)。在處理器上電過程中,中斷向量表的頭4字節(jié)會被去除(中斷向量表在0x000000000地址),然后填充到MSP,作為MSP的初始值,PSP的初始值為定義。

  一般使用操作系統(tǒng)是PSP進程棧指針才會被使用,這是因為操作系統(tǒng)內(nèi)核的棧空間和線程級的應(yīng)用程序的??臻g是相互獨立的。


R14,鏈接寄存器(LR)

  R14為鏈接寄存器,用于存儲子程序或者函數(shù)調(diào)用的返回地址。子程序或者函數(shù)執(zhí)行完畢,存儲在LR中的返回地址將被裝在到程序計數(shù)器PC中,以便調(diào)用程序可以繼續(xù)執(zhí)行。當(dāng)發(fā)生異常中斷時,LR會提供一個特定值,用于中斷返回機制。

  盡管Cortex-M0處理器的函數(shù)返回地址始終時偶數(shù)(最低位為0,因為最小的指令都是16位的),LR的0位時可讀寫的。為了指明當(dāng)前處于thumb狀態(tài),一些指令需要函數(shù)地址最低位為1。


R15,程序計數(shù)器(PC)

  R15為程序計數(shù)器,為可讀寫。讀操作返回當(dāng)前正在執(zhí)行的指令加上4(這是由流水線的特性決定的),而寫入R15會導(dǎo)致程序跳轉(zhuǎn)執(zhí)行,這和函數(shù)調(diào)用不同,鏈接寄存器不會更新。

  Cortex-M0處理器指令是16位對齊的,所以PC寄存器的最低位必須始終為0.不過在使用跳轉(zhuǎn)指令BX或者BLX執(zhí)行跳轉(zhuǎn)執(zhí)行時,PC的最低位應(yīng)該被置1,以表明目標(biāo)分支處于thumb程序區(qū)域。如果試圖切換到Cortex-M0未知的ARM狀態(tài),錯誤異常中斷會被觸發(fā)。


xPSR,組合程序狀態(tài)寄存器

            xPSR寄存器

            xPSR寄存器

  組合程序狀態(tài)寄存器提供了程序執(zhí)行信息和ALU(算數(shù)邏輯單元)標(biāo)志,改寄存器由三個程序狀態(tài)寄存器(PSR)組成,如上圖:

應(yīng)用程序狀態(tài)寄存器(APSR)

中斷程序狀態(tài)寄存器(IPSR)

執(zhí)行程序狀態(tài)寄存器(EPSR)

應(yīng)用程序狀態(tài)寄存器

  APSR包含了ALU算數(shù)邏輯單元標(biāo)志,位于xPSR最高4位,一般用于控制程序跳轉(zhuǎn):

N表示負(fù)號標(biāo)志

Z表示零標(biāo)志

C表示進位或借位標(biāo)志

V表示溢出標(biāo)志

中斷程序狀態(tài)寄存器

  IPSR包含了當(dāng)前正在執(zhí)行的中斷服務(wù)程序(ISR)編號,Cortex-M0的每個異常中斷都會由一個特定的中斷編號(表示中斷類型)。這對調(diào)試時識別當(dāng)前的中斷非常有用,而且在多個中斷共用一個中斷處理的情況下,可以看出放生的時哪個中斷。

執(zhí)行程序狀態(tài)寄存器

  EPSR包含了T位,該位用來表示當(dāng)前是否處于Thumb狀態(tài)。由于Cortex-M0處理器只支持Thumb狀態(tài),所以T位一般為1.清除該位(置零)后,執(zhí)行嚇一跳置零會觸發(fā)硬件異常中斷。


PRIMASK,中斷屏蔽特殊寄存器

  PRIMASK僅有一位位寬,置位后,除了不可屏蔽中斷(NMI)和硬件錯誤異常外的其他中斷都會被屏蔽。實際上,此時當(dāng)前中斷優(yōu)先級被置為0,也就是最高等級。

  要訪問PRIMASK寄存器,可以通過特殊寄存器操作置零(MSR和MRS),也可以使用“改變處理器狀態(tài)”置零(CPS)。在處理器對事件敏感的應(yīng)用時,需要操作PRIMASK寄存器。


CONTROL,特殊寄存器

  前面已經(jīng)提到,Cortex-M0處理器具有兩個棧指針。處理器模式?jīng)Q定了使用的棧指針,而處理器模式以來與CONTROL寄存器的配置。

  復(fù)位以后,系統(tǒng)默認(rèn)使用主棧指針,在線程模式下,通過配置CONTROL寄存器的第一位置1,處理器可以切換至使用進程棧指針(前提是當(dāng)前不是處在異常中斷處理中)。在處理異常中斷時(運行在處理模式下),系統(tǒng)只能使用主棧指針,CONTROL寄存器讀出的值為0。要改變CONTROL寄存器的值,應(yīng)該在線程模式下進行操作,或者借助異常中斷進入和返回機制。

  為了兼容Cortex-M3,CONTROL寄存器的0位保留。在Cortex-M3中,第0位用于將處理器切換至用戶模式,這個特性在M0中沒有。


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉