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