按圖分析:
ARM處理器有七種工作模式,為的是形成不同的使用級別,以防造成對系統(tǒng)的破壞。不同模式可以訪問的寄存器不同,可以運行的指令不同。
(1)user(10000):普通應(yīng)用程序運行的模式(應(yīng)用程序),普通程序時運行在此模式下。
(2)FIQ(10001):快速中斷模式,以處理快速情況,高速數(shù)據(jù)傳輸
(3)IRQ(10010):外部中斷模式,普通中斷處理
(4)svc(10011):保護(hù)模式(管理模式),操作系統(tǒng)使用的特權(quán)模式(內(nèi)核),Linux是運行在此模式下。
(5)abt(10111):數(shù)據(jù)訪問中止模式,用于虛擬存儲和存儲保護(hù)
(6)und(11011):未定義指令終止模式,用于支持通過軟件仿真硬件的協(xié)處理器
(7)sys(11111):系統(tǒng)模式,用于運行特權(quán)級的操作系統(tǒng)任務(wù)(armv4以上版本才具有)
注意:usr是普通模式,其他六種是特權(quán)模式,而除了usr和sys模式以外的五種模式是異常模式
------------------------------------------------------------------------------------------------
下面進(jìn)入正題:
我們首先可以找到這樣一本資料《ARM Architecture Reference Manual》在其中的Programmers’Model一章中,我們可以輕松的找到官方文檔對寄存器的說明,建議大家去看看官方的英文文檔,我將其中的重要內(nèi)容簡單的總結(jié)一下。
Arm處理器總共有37個寄存器其可以分為以下兩類(在此我先列出大框架下面會一一介紹):
通用寄存器(31個)
不分組寄存器(R0—R7)
分組寄存器(R8—R14)
PC指針(R15)
狀態(tài)寄存器(6個)
CPSR(1個)
SPSR(5個)
相信通過上面的介紹大家對arm的寄存器有個初步的印象,下面官方文檔對寄存器的說明:
下面我將會結(jié)合上圖和我上面列出的大框架對寄存器進(jìn)行解析:
不分組寄存器(R0—R7)
在所有的運行模式下都使用同一個物理寄存器,它們未被系統(tǒng)用作特殊的用途。
分組寄存器(R8—R14)
a)對于R8~R12,當(dāng)使用FIQ(快速中斷模式)時訪問寄存器R8_fiq~R12_fiq,當(dāng)使用除FIQ模式以外的其他模式時,訪問寄存器R8~R12
b)對于R13,R14來說,每個寄存器對應(yīng)6個不同的物理寄存器,其中一個是用戶模式與系統(tǒng)模式共用(圖中的R13,R14),另外5個物理寄存器對應(yīng)其他5種不同的運行模式,并采用以下記號來區(qū)分不同的物理寄存器分別為fiq,irq,svc,abt,und.(如上圖)
i.R13在ARM指令中常用作堆棧指針SP
特別注意:由于每一種模式都有自己的R13,所以我們在自己初始化的時候一般都要初始化每種模式下的R13,使其指向該運行模式的??臻g。
ii. R14稱為子程序鏈接寄存器LR(Link Register)
有兩個特殊功能,一種是每一種模式下都可以用于保存函數(shù)的返回地址,另外就是異常處理后的返回地址,如中斷。
PC指針(R15)
R15用作程序計數(shù)器(PC)對應(yīng)一個物理寄存器,由于ARM體系結(jié)構(gòu)采用了多級流水線技術(shù)(不了解多級流水線的可以訪問這個博客http://blog.csdn.net/abclixu123/article/details/7471822,博主講的不錯),對于ARM指令集而言,PC總是指向當(dāng)前指令的下兩條指令的地址,即PC的值為當(dāng)前指令的地址值加8個字節(jié)程序狀態(tài)寄存器。
CPSR
在官方文檔中我們可以總結(jié)如下:
下面介紹其中幾個比較重要的位,其他位,大家可以參考官方手冊:
N:當(dāng)兩個表示的有符號整數(shù)運算時,1表示運算結(jié)果為負(fù)數(shù),0表示結(jié)果為正或零。
Z:1表示運算的結(jié)果為零,0表示運算的結(jié)果不為零。對于CMP指令,1表示進(jìn)行比較的兩個數(shù)大小相等。
C:下面分四種情況討論C的設(shè)置方法:
a)加法運算(包括比較指令CMN):當(dāng)運算產(chǎn)生了進(jìn)位時(無符號數(shù)溢出),C=1,否則C=0。
b)減法運算(包括比較指令CMP):當(dāng)運算時產(chǎn)生了借位(無符號數(shù)溢出),C=0,否則C=1。
c)對于包含移位操作的非加/減運算指令,C為移出值的最后一位。
d)對于其他的非加/減運算指令,C的值通常不改變。
V:下面分兩種情況討論V的設(shè)置方法
a)對于加/減法運算指令,當(dāng)操作數(shù)和運算結(jié)果為二進(jìn)制的補碼表示的帶符號數(shù)時,V=1表示符號位溢出。
b)對于其他的非加/減運算指令,C的值通常不改變。
I:1 表示禁止外部(硬件)中斷(IRQ)
F:1 表示禁止快速中斷(FIQ)
T:1表示為thumb狀態(tài)0為arm狀態(tài)
M[4:0]:用來設(shè)置處理器的工作模式具體數(shù)據(jù)見本文開始的介紹。
SPSR
SPSR 除usr、sys外,對應(yīng)用于異常保護(hù)的CPSR的備份,異常時,保存CPSR值,異常退出時,將該值恢復(fù)到CPSR,以保證程序的正常運行,每一中異常運行模式(除user和sys)有各自的物理寄存器。
上一篇:ARM-匯編指令集(總結(jié))
下一篇:安裝交叉編譯器arm-linux-gcc
推薦閱讀
史海拾趣
聚洵半導(dǎo)體始終堅持以市場為導(dǎo)向、以創(chuàng)新為驅(qū)動的發(fā)展理念。公司不斷加大新產(chǎn)品研發(fā)投入,致力于在低功耗運放、高速運放、儀表放大器等領(lǐng)域取得更多技術(shù)突破。同時,聚洵還積極關(guān)注行業(yè)動態(tài)和市場趨勢,針對醫(yī)療電子、工業(yè)控制、汽車電子等新興領(lǐng)域推出了一系列創(chuàng)新產(chǎn)品。展望未來,聚洵將繼續(xù)保持專注和創(chuàng)新精神,致力于成為國內(nèi)領(lǐng)先的信號鏈模擬芯片設(shè)計公司之一,為電子行業(yè)的發(fā)展貢獻(xiàn)更多力量。
億寶科技在成立初期,就明確了以技術(shù)創(chuàng)新為核心的發(fā)展戰(zhàn)略。公司創(chuàng)始人帶領(lǐng)研發(fā)團隊,深入研究市場需求,不斷推出具有競爭力的電子產(chǎn)品。在一次偶然的機會中,他們成功研發(fā)出一款具有高性能、低功耗特點的芯片,這一創(chuàng)新技術(shù)迅速獲得了市場的認(rèn)可。此后,億寶科技不斷加大研發(fā)投入,形成了一套完整的自主研發(fā)體系,為公司后續(xù)的發(fā)展奠定了堅實的基礎(chǔ)。
Crane Connectors公司深知人才是企業(yè)發(fā)展的核心力量。因此,公司高度重視人才培養(yǎng)和團隊建設(shè)工作。公司建立了完善的人才培養(yǎng)和激勵機制,吸引和留住了一批高素質(zhì)的研發(fā)、銷售和管理人才。同時,公司還注重團隊建設(shè)和文化建設(shè),營造積極向上的工作氛圍和良好的企業(yè)文化。這些舉措使得公司的團隊凝聚力和執(zhí)行力得到了顯著提升,為公司的快速發(fā)展提供了有力保障。
請注意,以上故事是基于一般企業(yè)發(fā)展經(jīng)驗和市場環(huán)境推測的,并不代表Crane Connectors公司的實際發(fā)展歷程。如需了解該公司真實的發(fā)展故事,建議查閱相關(guān)文獻(xiàn)資料或訪問公司官網(wǎng)獲取更多信息。
在1976年,GTC(General Transistor Corp.)作為一家獨立的電子元器件分銷商和生產(chǎn)商在美國正式成立。這一時期,電子行業(yè)正處于快速發(fā)展階段,晶體管、集成電路等新型電子元件的應(yīng)用日益廣泛。GTC憑借其敏銳的市場洞察力和技術(shù)實力,迅速在市場中站穩(wěn)腳跟。公司初期專注于分銷高質(zhì)量的晶體管、二極管等電子元器件,并逐漸建立起穩(wěn)定的供應(yīng)鏈和客戶群。
芯??萍甲?003年成立以來,便專注于高精度ADC(模數(shù)轉(zhuǎn)換器)芯片的研發(fā)。在成立初期,公司面臨國際巨頭的激烈競爭,但憑借對技術(shù)的執(zhí)著追求,成功打破了國內(nèi)市場的壟斷。公司推出的高精度ADC芯片在電能計量領(lǐng)域得到了廣泛應(yīng)用,為工業(yè)領(lǐng)域提供了穩(wěn)定、可靠的解決方案。這一階段的成功為芯??萍荚陔娮有袠I(yè)奠定了堅實的基礎(chǔ)。
Frequency Devices公司自成立之初,便以技術(shù)創(chuàng)新為核心驅(qū)動力。在20世紀(jì)90年代初,公司研發(fā)團隊成功開發(fā)出一種新型高頻濾波器,該濾波器在信號傳輸效率和穩(wěn)定性上實現(xiàn)了重大突破。這一創(chuàng)新不僅解決了當(dāng)時通信領(lǐng)域的一大技術(shù)難題,還迅速獲得了市場的廣泛認(rèn)可。隨著技術(shù)的不斷迭代,F(xiàn)requency Devices公司持續(xù)投入研發(fā),推出了更多高性能、低成本的高頻電子產(chǎn)品,逐步奠定了其在行業(yè)內(nèi)的領(lǐng)先地位。
電子紙的載體是一張?zhí)厥獾谋∧z片,通過在膠片上\"涂\"上的一層帶電的物質(zhì)(電子墨),根據(jù)內(nèi)容的不同進(jìn)行后臺控制,通過相應(yīng)的顯示組合以達(dá)到內(nèi)容顯示的目的。電子紙的內(nèi)核就是一個廣義上的IC,整個閱讀器則可看作是一個薄薄的內(nèi)嵌式遙控顯示板。電 ...… 查看全部問答∨ |
|
我是一名大四的學(xué)生,想向嵌入式方向發(fā)展,由于學(xué)校學(xué)的都是理論 所以我想再找一家培訓(xùn)單位來繼續(xù)學(xué)習(xí),linux+ARM的 但是網(wǎng)上很多,不知道怎么合理的選擇,希望大家?guī)鸵幌挛以趺捶治瞿敲炊嗟呐嘤?xùn)班… 查看全部問答∨ |
剛剛接觸無線多媒體傳感器網(wǎng)絡(luò),不知道如何從何著手,請教經(jīng)驗 各位師兄師姐好,我是大三的學(xué)生,專業(yè)學(xué)的測量控制,準(zhǔn)備讀研究生,搞無線多媒體傳感器網(wǎng)絡(luò)。 我看老師的研究領(lǐng)域以前是水下傳感器網(wǎng)絡(luò),我的研究的主要內(nèi)容可能是編協(xié)議,滿足異類多媒體可靠性定義、高網(wǎng)絡(luò)服務(wù)質(zhì)量預(yù)期值、高帶寬需求等問題(按 ...… 查看全部問答∨ |
最近在優(yōu)酷上看到了一個叫《我的PIC日記》的視頻教程,覺得挺好,上手挺快的,我把視頻資料整理了一下,供大家參考: 高顯生原創(chuàng)PIC單片機的基礎(chǔ)教程,是繼《我和單片機的21天之旅》之后又一部大型單片機視頻教程。教程以更加 ...… 查看全部問答∨ |
|
電源總動員活動中成績還不錯,得了滿分。 對于TI的電源產(chǎn)品線,覺得這個易電源的參考設(shè)計手冊還是很有自己的特色,處處體現(xiàn)容易使用的思路。比如 1.“設(shè)計考慮/性能”---將電源設(shè)計的電容電阻選型以及放置位置都進(jìn)行詳細(xì)的說明; 2. “PCB設(shè)計” ...… 查看全部問答∨ |
UART調(diào)試記錄:UART協(xié)議看起來很簡單,但是里面涉及好幾個小細(xì)節(jié),處理起來也不是那么輕松順暢的,代碼寫完,調(diào)試過了再想起來來也確實就那么回事。重要的是掌握解決問題的方法,代碼貼在這里,備忘備參考備修改。 異步通信協(xié)議 &n ...… 查看全部問答∨ |
為什么我的Marvel8686 wifi在Android打開wifi開關(guān)的時候回會不停的去加載wifi驅(qū)動? 本帖最后由 Wince.Android 于 2015-4-30 17:42 編輯 間隔一秒加載如下東西: libertas_sdio: Libertas SDIO driver++ libertas_sdio: Copyright Pierre Ossman libertas_sdio mmc2:0001:1: (unregistered net_device): 70:f3:95:ec:3e:3f, fw ...… 查看全部問答∨ |
在調(diào)試28335spi部分遇到了一些問題 在設(shè)置了內(nèi)部循環(huán)之后,無法實現(xiàn)自發(fā)自收。 無論發(fā)送出去的數(shù)據(jù)是什么,接收到的數(shù)據(jù)永遠(yuǎn)是0x5357 初始化函數(shù)如下: SpiaRegs.SPICCR.all =0x000F;/*首先讓軟件復(fù)位位為0用來準(zhǔn)備配置寄存器,清除各種標(biāo)志位* ...… 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- BOE(京東方)聯(lián)合榮耀打造榮耀Magic V5 以領(lǐng)先LTPO技術(shù)打造行業(yè)新標(biāo)桿
- 華為ADS 4發(fā)布:多傳感器融合,提升自動駕駛安全性
- 曉鶯說:線控制動變革風(fēng)云
- 大眾商用車推出AirConsole 將其信息娛樂系統(tǒng)擴展為游戲機
- 福州大學(xué)發(fā)明新機器視覺傳感器 可使機器人對極端光照做出超快反應(yīng)
- 蘋果獲沉浸式虛擬顯示器相關(guān)的專利
- 英特爾汽車“折戟”,十年布局一夜歸零
- 寶馬自動充電機器人概念驗證成功,引領(lǐng)無人充電新時代
- 智駕模式下LQR最優(yōu)算法在EPS中的應(yīng)用研究
- 6月超17款人形機器人新品推出
- 將低功耗設(shè)計進(jìn)行到底——評論、轉(zhuǎn)發(fā)贏大禮!
- 芯幣競拍:感恩教師節(jié)專場
- Keysight示波器主題月有獎系列活動之 注冊大獎天天抽 搶樓踩中亦有獎
- Microchip有獎直播:VectorBlox™ SDK 報名中
- 有獎直播|ADI 慣性MEMS應(yīng)用那些事
- 借助 Microchip 生態(tài)系統(tǒng)中的 PIC® 和 AVR® 單片機開啟嵌入式到云端之旅 系列在線研討會
- 帶你零起點入門STM32(專為嵌入式應(yīng)用而開發(fā)的內(nèi)核)
- 福祿克首款熱成像萬用表Fluke-279FC 即將上市!填寫問卷贏好禮嘍!
- EEWorld Datasheet 伴你同行!快來領(lǐng)取200芯積分福利啦~
- 泰克福袋:示伴功倍,萬能福袋派送中
- 三星將推第二款折疊屏手機
- 歐司朗大陸合資公司推智能數(shù)字HD頭燈系統(tǒng) 提升車輛夜晚駕駛安全
- 2019世界新能源汽車大會釋放了哪些積極信號?
- LG G8S ThinQ臺版發(fā)布了:劉海屏+背部指紋
- 紅黑經(jīng)典搭配 realme X蜘蛛俠定制禮盒曝光
- 日經(jīng):三星、瑞薩向美國提交供應(yīng)鏈數(shù)據(jù) 不包括客戶信息
- 圖靈量子獲數(shù)億元Pre-A輪融資,用于可編程光量子芯片研發(fā)
- 格芯上市能否重回三甲 成熟制程市場將掀起怎樣波瀾
- Bourns新款高Q值和微型組件-半屏蔽功率電感器隆重登場
- 鼎龍股份:公司成熟制程CMP拋光墊產(chǎn)品型號覆蓋率近100%