計算機(jī)硬件系統(tǒng)主要運算器、控制器、存儲器、輸入輸出設(shè)備組成。 馮·諾依曼結(jié)構(gòu)
馮諾依曼結(jié)構(gòu)采用單存儲空間,程序指令和數(shù)據(jù)公用一個存儲空間,使用單一的數(shù)據(jù)和地址總線,取指令和取操作數(shù)都是通過一條總線分時進(jìn)行的。并且當(dāng)進(jìn)行高速運算是,會造成數(shù)據(jù)傳輸通道的瓶頸現(xiàn)象,其工作速度較慢。
哈佛結(jié)構(gòu)是一種將程序指令存儲和數(shù)據(jù)存儲分開的存儲器結(jié)構(gòu)。中央處理器首先到程序指令存儲器中讀取程序指令內(nèi)容,解碼后得到數(shù)據(jù)地址,再到相應(yīng)的數(shù)據(jù)存儲器中讀取數(shù)據(jù),并進(jìn)行下一步的操作(通常是執(zhí)行)。程序指令存儲和數(shù)據(jù)存儲分開,可以使指令和數(shù)據(jù)有不同的數(shù)據(jù)寬度,從而提高了執(zhí)行速度,提高了數(shù)據(jù)的吞吐率 DRAM:動態(tài)隨機(jī)讀寫存儲器,SRAM:靜態(tài)隨機(jī)讀寫存儲器。SRAM的特點是工作速度快,只要電源不撤除,寫入SRAM的信息就不會消失,不需要刷新電路,同時在讀出時不破壞原來存放的信息,一經(jīng)寫入可多次讀出,但集成度較低,功耗較大。DRAM集成度較高,功耗較低,但缺點是保存在DRAM中的信息隨著電容器的漏電而會逐漸消失,一般信息保存時間為2ms左右。為了保存DRAM中的信息,必須每隔1~2ms對其刷新一次。因此,采用
DRAM的計算機(jī)必須配置動態(tài)刷新電路,防止信息丟失 RISC:精簡指令集,CISC:復(fù)雜指令集 CISC:–優(yōu)點:指令越多功能越強,強調(diào)代碼效率,容易和高級語言接軌。可以對存儲器直接操作,實現(xiàn)從存儲器到存儲器的數(shù)據(jù)轉(zhuǎn)移,可加入DSP指令。 ldr(loader):讀取存儲器中的數(shù)據(jù)到寄存器 LDR R0,[R1];將存儲器地址為R1的子數(shù)據(jù)讀入寄存器R0,str(store)將寄存器中的數(shù)據(jù)保存到存儲器中 STR R0,[R1];將R0的數(shù)據(jù)保存到R1指定的地址中。 BootLoader在嵌入式操作系統(tǒng)中,BootLoader是在操作系統(tǒng)內(nèi)核運行之前運行??梢猿跏蓟布O(shè)備、建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。在嵌入式系統(tǒng)中,通常并沒有像BIOS那樣的固件程序(注,有的嵌入式CPU也會內(nèi)嵌一段短小的啟動程序),因此整個系統(tǒng)的加載啟動任務(wù)就完全由BootLoader來完成。 主流ARM處理器屬于32位。字對齊分配四個存儲空間 T支持高密度16位的Thumb指令集 ; D支持片上調(diào)試; M支持64位乘法; I支持EmbededICE觀察硬件; 從偶數(shù)地址開始的連續(xù)2個字節(jié)構(gòu)成一個半字; 以能被4整除的地址開始的連續(xù)4個字節(jié)構(gòu)成一個字; Stach: 棧,一種數(shù)據(jù)結(jié)構(gòu),它按照后進(jìn)先出的原則存儲數(shù)據(jù),先進(jìn)入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂,需要讀數(shù)據(jù)的時候從棧頂開始彈出數(shù)據(jù)。 寄存器R13通常作為堆棧指針(SP),用于保存待使用的寄存器的內(nèi)容。 寄存器R14稱為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個特殊功能: §
當(dāng)使用BL指令調(diào)用子程序時,返回地址將自動存入R14中; §
當(dāng)發(fā)生異常時,將R14對應(yīng)的異常模式版本設(shè)置為異常返回地址(有些異常有一個小的固定偏移量)。 寄存器R15稱為程序計數(shù)器(PC),它指向正在“取指”的指令。 寄存器CPSR為當(dāng)前程序狀態(tài)寄存器,在異常模式中,另外一個寄存器“程序狀態(tài)保存寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在進(jìn)入異常時它保存CPSR的當(dāng)前值,異常退出時可通過它恢復(fù)CPSR。 異常響應(yīng): 將異常處理程序的返回地址(加固定的偏移量)保存到相應(yīng)異常模式下的LR; 將CPSR的當(dāng)前值保存到相應(yīng)異常模式下的SPSR; 設(shè)置CPSR為相應(yīng)的異常模式; 設(shè)置PC為相應(yīng)異常處理程序的中斷入口向量地址,跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序執(zhí)行。 異常返回: 返回到發(fā)生異常中斷的指令的下一條指令處執(zhí)行,即就是說將LR中的值減去偏移量后移入PC; 將SPSR的值復(fù)制回CPSR; 清零在入口處置位的中斷禁止標(biāo)志。
拋出異常之后,自動觸發(fā)中斷。中斷的處理代碼會修復(fù)異常,然后返回
固件(Firmware)就是寫入EROM或EPROM(可編程只讀存儲器)中的程序,通俗的理解就是“固化的軟件”,
固件擔(dān)任著一個系統(tǒng)最基礎(chǔ)最底層工作的軟件。 ARM體系結(jié)構(gòu)支持7種處理器模式,分別為:用戶模式、快中斷模式、中斷模式、管理模式、中止模式、未定義模式和系統(tǒng)模式。 在ARM處理器內(nèi)部共有37個用戶可訪問的寄存器,分別為31個通用32位寄存器和6個狀態(tài)寄存器。 程序狀態(tài)寄存器 CPSR(當(dāng)前程序狀態(tài)寄存器)在任何處理器模式下被訪問。它包含了條件標(biāo)志位、中斷禁止位、當(dāng)前處理器模式標(biāo)志以及其他的一些控制和狀態(tài)位。每一種處理器模式下都有一個專用的物理狀態(tài)寄存器,稱為SPSR(備份程序狀態(tài)寄存器)。當(dāng)特定的異常中斷發(fā)生時,這個寄存器用于存放當(dāng)前程序狀態(tài)寄存器的內(nèi)容。在異常中斷退出時,可以用SPSR來恢復(fù)CPSR。由于用戶模式和系統(tǒng)模式不是異常 中斷模式,所以他沒有SPSR。當(dāng)用戶在用戶模式或系統(tǒng)模式訪問SPSR,將產(chǎn)生不可預(yù)知的后果。 §
小端存儲器系統(tǒng): 在小端格式中,數(shù)據(jù)的高字節(jié)存放在高地址中。 §
大端存儲器系統(tǒng): 在大端格式中,數(shù)據(jù)的高字節(jié)存放在低地址中。 并行口與串行口的區(qū)別是交換信息的方式不同,并行口能同時通過8條數(shù)據(jù)線傳輸信息,一次傳輸一個字節(jié);而串行口只能用1條線傳輸一位數(shù)據(jù),每次傳輸一個字節(jié)的一位。并行口由于同時傳輸更多的信息,速度明顯高于串行口,但串行口可以用于比并行口更遠(yuǎn)距離的數(shù)據(jù)傳輸。 指令:LSL邏輯左移(低位空出的位補0) LSR邏輯右移(高位空出的位補0) ASR算術(shù)右移(保持符號位不變) ROR循環(huán)右移 RRX帶擴(kuò)展的循環(huán)右移(右移1位,高位空出的位用原C標(biāo)志值填充) ADD:加法運算ADD R3,R1, #0x08
;R3=R1+8 ADC:帶進(jìn)位加法運算SUB:減法運算RSB:逆向減法運算 SBC:帶進(jìn)位減法運算RSC:帶進(jìn)位逆向減法運算 AND:邏輯“與”運算AND R3,R1,
#0xFF ;R3=R1 & 0x000000FF ORR :邏輯“或”運算ORR R3,R1,
R2 ;R3=R1|R2 EOR:邏輯“異或”運算EOR R3,R1,
R2,LSL 0x03 ;R3=R1 ^ (R2 ×8) BIC:位清除運算CMP R3,R1
;R3減R1并影響標(biāo)志位 MUL R3,R2,R1
; R3=R2×R1MLA R3,R2,R1,R0 ; R3=R2×R1 + R0 B指令為簡單的跳轉(zhuǎn)指令,不附帶其它功能。跳轉(zhuǎn)范圍限制在當(dāng)前指令的±32M字節(jié)地址內(nèi) 帶鏈接的分支指令——BL指令除了具有跳轉(zhuǎn)功能,還能在跳轉(zhuǎn)之前將下一條指令的地址拷貝到R14(即LR) 鏈接寄存器中,它適用于子程序調(diào)用。跳轉(zhuǎn)范圍限制在當(dāng)前指令的±32M字節(jié)地址內(nèi)。 帶狀態(tài)切換的分支指令——BX指令除了具有跳轉(zhuǎn)功能,還能在跳轉(zhuǎn)的同時切換處理器狀態(tài)。其跳轉(zhuǎn)范圍不受限制。 軟件中斷產(chǎn)生指令:SWI
|
|