日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于ARM9处理器的工作模式&工作状态&寄存器&异常类型总结笔记

發(fā)布時(shí)間:2023/12/16 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于ARM9处理器的工作模式&工作状态&寄存器&异常类型总结笔记 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ARM9處理器工作模式

改變工作模式的方法:①軟件改變,改變CPSR(當(dāng)前程序狀態(tài)寄存器)的低5位即可;②外部中斷或異常處理改變;

用戶模式:大部分情況下,程序是運(yùn)行在用戶模式下,此時(shí)某些被保護(hù)的寄存器是不能訪問;

非用戶模式:除了用戶模式之外的模式;也被稱作特權(quán)模式。特權(quán)模式下,可以訪問寄存器和一下片內(nèi)資源。

異常模式:處理用戶模式和系統(tǒng)模式外其余的5中模式,常用于處理中斷或異常以及訪問需要被保護(hù)的系統(tǒng)資源等情況;

系統(tǒng)模式僅存在于ARM體系結(jié)構(gòu)版本V4以上,系統(tǒng)模式和用戶模式擁有完全相同的寄存器;

ARM9的兩種工作狀態(tài)
處理器的兩種操作狀態(tài):

  • ARM狀態(tài):32位,這種狀態(tài)下執(zhí)行的是字方式的ARM指令(地址[1:0]為0)。

  • Thumb狀態(tài):16位,這種狀態(tài)下執(zhí)行半字方式的Thumb指令(地址[0]為0);

  • Thumb指令集的特點(diǎn):
    Thumb指令集是ARM指令集的功能子集,但是與ARM代碼相比,可以節(jié)省30%~40%以上的儲(chǔ)存空間,同時(shí)兼?zhèn)?2位代碼的所有優(yōu)點(diǎn);

    ARM內(nèi)部寄存器組織
    ARM存儲(chǔ)系統(tǒng):(1)復(fù)雜:寄存器,Cache,主存儲(chǔ)器,輔助存儲(chǔ)器;(2)簡(jiǎn)單:直接分為存儲(chǔ)器和寄存器即可;

    寄存器特點(diǎn):
    數(shù)量少,讀寫速度快;每個(gè)寄存器內(nèi)都有一個(gè)名字,但是沒有像存儲(chǔ)器一樣的存儲(chǔ)地址;不同的存儲(chǔ)器有不同的寄存器配置方案;
    寄存器功能:暫存指令,數(shù)據(jù)和地址;

    寄存器分組
    分組的依據(jù):處理器的工作狀態(tài)和工作模式的不同。
    分組的特點(diǎn):相同名字的寄存器在不同組中是兩個(gè)完全不同的物理寄存器;程序代碼運(yùn)行時(shí)的設(shè)計(jì)的工作寄存器組是由ARM9微處理器的工作模式確定的;
    寄存器類別:通用寄存器,程序狀態(tài)寄存器,程序計(jì)數(shù)器;

    (1) 通用寄存器
    R0~R7:未分組寄存器;對(duì)于任何工作模式,這些寄存器都對(duì)應(yīng)相同的32位寄存器地址;

    R8~R14:為分組寄存器;對(duì)應(yīng)的物理地址取決于當(dāng)前處理器的工作模式;

    R8~R12:有兩個(gè)分組的物理寄存器;一組用于FIQ模式;一組用于非FIQ模式;

    R0~R13:完全通用寄存器;保存數(shù)據(jù)和地址的通用寄存器;不會(huì)被體制結(jié)構(gòu)作為特殊用途,并且可用于任何使用通用寄存器的指令;

    R13,R14:分別有6個(gè)分組的寄存器。一個(gè)用于用戶模式和系統(tǒng)模式,另外5組寄存器分別對(duì)應(yīng)5中工作模式;

    異常處理:異常處理程序負(fù)責(zé)初始化自己的R13,使其指向該異常模式專用的棧地址。在異常處理程序入口處,將其他寄存器的內(nèi)容保存到堆棧,返回時(shí),重新將這些值加載到寄存器;從而保護(hù)現(xiàn)場(chǎng)的目的;

    R13:堆棧指針SP;在ARM指令集集中,沒有以特殊方式使用R13的指令或其他功能,只是習(xí)慣上都這樣使用。但是Thumb指令集中存在使用R13的指令;

    R14:鏈接寄存器LR;在結(jié)構(gòu)上有兩個(gè)功能:

    ① 在每種工作模式下,模式本身的R14用于保存子程序返回的地址。例如,當(dāng)ARM9處理器執(zhí)行帶鏈接的分支指令(如BL)時(shí),R14保存R15(PC)的值;

    ② 發(fā)生異常時(shí),相應(yīng)的寄存器分組R14_svc,R14_abt,R14_und,R14_ird和R14_fiq用來保存R15的返回值;

    R15:程序計(jì)數(shù)器(PC)。在ARM狀態(tài)下,R15[1:0]=0x00;PC的值為R15[31:2];

    (2) 狀態(tài)寄存器CPSR
    R16:通用寄存器;看下表:

    1)條件代碼標(biāo)志位NZCV:

    N:運(yùn)算結(jié)果的最高位顯示在該標(biāo)志位上。對(duì)于有符號(hào)二進(jìn)制補(bǔ)碼,當(dāng)結(jié)果為負(fù)數(shù)N=1,結(jié)果為正數(shù)或零為0;

    Z:當(dāng)指令結(jié)果為0時(shí)Z=1(通常表示比較結(jié)果“相等”)否則為0;

    C:加法指令最高位進(jìn)位C=1,否則C=0;減法指令最高位未借位C=1,借位則C=0;結(jié)合移位操作時(shí)C等于從最高位最后溢出的值;其他指令C不變;

    V:加/減法運(yùn)算并發(fā)生溢出時(shí)V=1,否則V=0;其他指令V不變;
    (2)控制位IFTM4M3M2M1M0
    當(dāng)發(fā)生異常時(shí)這些位被硬件改變;當(dāng)處理器處于特權(quán)模式時(shí),可用軟件操作這些位;

    ① 中斷處理位:中斷使用的前提是中斷沒有被禁止;
    I=1時(shí)IRQ中斷被禁止
    F=1時(shí)FIQ中斷被禁止

    ② 處理器標(biāo)志位:T位反映了處理的的工作狀態(tài)
    T=1時(shí),處理器處于Thumb狀態(tài)下
    T=0時(shí),處理器處于ARM狀態(tài)下;

    ③ 處理器模式位:決定處理器的工作模式,看下表格


    (3)保留位
    CPSR中的保留位被保留為將來使用。為了提高程序的可移植性,當(dāng)改變CPSR標(biāo)志位和控制位,不要改變這些保留位。另外要確保程序的運(yùn)行不受保留位的值的影響。因?yàn)閷硖幚砥鏖_能會(huì)將這些位設(shè)置為1或0;

    ARM9的異常處理
    什么是異常:當(dāng)正常的程序被暫時(shí)停止時(shí)就是發(fā)生了異常;異常是由一個(gè)內(nèi)部或外部產(chǎn)生一個(gè)引起處理器處理的額外事件;

    什么是異常向量(exception vectors):
    異常出現(xiàn)后,處理器強(qiáng)項(xiàng)從正常程序地址跳轉(zhuǎn)到異常程序所對(duì)應(yīng)的固定存儲(chǔ)器地址開始執(zhí)行程序,這些程序存儲(chǔ)器地址稱為異常向量;

    ARM9體系支持其中異常處理

  • 處理器一旦有復(fù)位信號(hào)輸入,ARM處理器就立即執(zhí)行當(dāng)前。復(fù)位后,ARM處理器在禁止中斷的管理模式下從地址0x00000000或0Xffff0000處開始執(zhí)行;

  • 未定義指令異常
    當(dāng)ARM處理器執(zhí)行協(xié)處理器指令時(shí),需等任一外部協(xié)處理器應(yīng)答后,才能真正執(zhí)行這條指令。若協(xié)處理器沒有回應(yīng),就會(huì)出現(xiàn)未定義指令異常。另外,試圖執(zhí)行未定義的指令也會(huì)出現(xiàn)未定義指令異常;

  • 軟件中斷異常
    軟件中斷異常指令SWI使處理器進(jìn)入管理模式,以請(qǐng)求特定的管理函數(shù);

  • 預(yù)取中止異常
    存儲(chǔ)器系統(tǒng)發(fā)出存儲(chǔ)器中止信號(hào)(Abort)時(shí),響應(yīng)取置激活的中止標(biāo)記所取的指令無效,茹處理器試圖執(zhí)行無效指令,則產(chǎn)生預(yù)約中止異常;茹指令未執(zhí)行,則不發(fā)生預(yù)約中止;

  • 數(shù)據(jù)中止異常
    存儲(chǔ)器發(fā)出存儲(chǔ)器中止信號(hào),響應(yīng)數(shù)據(jù)中止標(biāo)記的數(shù)據(jù)無效。

  • IRQ(外部中斷請(qǐng)求)異常
    通過處理器上的IRQ輸入引腳,由外部產(chǎn)生IRQ異常。IRQ異常的優(yōu)先級(jí)比FIQ異常的優(yōu)先級(jí)低,當(dāng)進(jìn)入FIQ處理時(shí),會(huì)屏蔽IRQ異常;

  • FIQ(快速中斷請(qǐng)求)異常
    通過FIQ上的輸入引腳,由外部產(chǎn)生FIQ異常;
    異常優(yōu)先級(jí)

  • 總結(jié)

    以上是生活随笔為你收集整理的基于ARM9处理器的工作模式&工作状态&寄存器&异常类型总结笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。