溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

深入淺出處理器(上)_基本概念

發(fā)布時間:2020-05-24 14:16:46 來源:網(wǎng)絡(luò) 閱讀:1226 作者:三九感冒靈 欄目:系統(tǒng)運維

專題1—深入淺出處理器

1.處理器基本概念

1.1處理器于微控制器的區(qū)別:

?微控制器一般是指:CPU + 片內(nèi)內(nèi)存 + 片外外設(shè)
?微處理器一般指單充的CPU
對于目前的嵌入式設(shè)備而言,通常使用的都是微控制器,或這稱為SoC(system on chip),低成本、地功耗。對于軟件工程師而言,微控制器和微處理器沒有任何區(qū)別

1.2什么是CPU?

CPU在固定頻率的時鐘控制下節(jié)奏運行。
CPU可以通過總線讀取外部存儲設(shè)備中的二進制指令集,然后解碼執(zhí)行。
這些可以被CPU解碼執(zhí)行的二進制指令集是CPU設(shè)計的時候確定的,是CPU的設(shè)計者(ARM公司等)定義的,本質(zhì)上是一串由1和0組成的數(shù)字。這就是CPU的匯編指令集。
從源代碼到CPU執(zhí)行過程:
深入淺出處理器(上)_基本概念

1.3寄存器的分類;

A.CPU寄存器
—CPU寄存器負(fù)責(zé)專有指令執(zhí)行,數(shù)據(jù)運算,變量處理、參數(shù)傳遞
B.外設(shè)寄存器
—外設(shè)寄存器用于控制外設(shè)的行為和工作方式,配置值需要根據(jù)外設(shè)的芯片手冊完成。
—外設(shè)寄存器是編程者控制硬件的關(guān)鍵,是留作外設(shè)被編程控制的“活動開關(guān)”,正如匯編指令集是CPU的編程接口API一樣,寄存器是外設(shè)硬件的軟件編程接口API。使用軟件編程控制某一硬件,其實就是編程讀寫該硬件的寄存器。

1.4兩個關(guān)鍵寄存器

對于CPU寄存器我們需要特別關(guān)注這兩個寄存器
A.PC指針-程序計數(shù)器(指令指針I(yè)P)
之所以被稱之為PC指針,是因為其指向的是即將執(zhí)行的下一條指令(這里我們不考慮多級緩存的問題),類似于指針。每執(zhí)行一條指令,PC的值就會發(fā)生相應(yīng)的變化。
B.SP指針-棧指針
棧指針始終只想??臻g的頂部,實現(xiàn)LIFO特性
保存中斷斷點、函數(shù)調(diào)用的的返回值,保存CPU現(xiàn)場等
PC指針和SP指針的使用示例:最初PC指針指向mov 指令,進行下一次跳轉(zhuǎn)(執(zhí)行jmp)指令之前會進行現(xiàn)場保存,從SP指針?biāo)傅奈恢瞄_始,將數(shù)據(jù)保存在棧空間,SP指針依次移動,這里還有一個BP指針(基址指針),用于保存上一次SP的值,則此時BP與SP之間保存的就是指令跳轉(zhuǎn)前的現(xiàn)場,當(dāng)函數(shù)返回,或者中斷執(zhí)行完畢后,就會從該段地址進行現(xiàn)場恢復(fù),SP指針指向其原來的值。
深入淺出處理器(上)_基本概念

1.5 IO操作

處理器的IO操作:
A.處理器與外設(shè)之間的數(shù)據(jù)通過IO操作完成
B.內(nèi)存映射IO空間(內(nèi)存與IO統(tǒng)一編址)
外設(shè)通過精密的硬件連接映射到處理器的地址空間
通過地址訪問的方式與外設(shè)進行通信
C.獨立IO映射(內(nèi)存與IO獨立編址)
a)獨立于地址空間,無法通過地址訪問外設(shè)
b)使用專用指令于外設(shè)進行通信
D.操作IO其實就是配置控制寄存器,對寄存器進行讀寫操作。

1.6地址映射

通過具體的硬件設(shè)計,可以使得地址總線上的值在某個范圍內(nèi),片選信號為真,即:使能連接設(shè)備從而讀取相應(yīng)地址中的數(shù)據(jù)。
片選信號由地址線產(chǎn)生。
深入淺出處理器(上)_基本概念
地址映射示例:
如下面的地址0XFFFF1234,這是一個32位地址,如何映射到只有16位的地址空間??
通常的做法,使用高位地址通過&&運算產(chǎn)生一個片選信號,然后直接通過低位地址訪問實際的內(nèi)存空間。
深入淺出處理器(上)_基本概念

1.7處理器啟動過程

處理器上電之后,PC指針固話了一個默認(rèn)值(通常是0),PC指針的默認(rèn)值用于決定第一條執(zhí)行的指令。然后接著執(zhí)行后續(xù)的指令,整個過程如下圖所示。
深入淺出處理器(上)_基本概念
啟動程序(BootLoader):
BootLoader是系統(tǒng)上電后運行的第一個程序,通常用于啟動操作系統(tǒng)。根據(jù)運行階段,體積和功能的不同分為三個部分(通常的做法):
BL0-固話于硬件之中,用于初始化最基本的硬件,并加載BL1;
BL1-存儲于外部存儲設(shè)備中,用于初始化主存,加載并運行BL2;
BL2-存儲于外部設(shè)備中,用于引導(dǎo)和啟動操作系統(tǒng)。
實例分析:
對于S3C6410,這款芯片,其啟動過程的設(shè)計和我們上面所講的完全相符
第一階段:首先系統(tǒng)上電后會運行固化在IROM內(nèi)部的BL0,這部分程序的工程完成最基本的初始化工作(關(guān)看門狗、初始化指令cache、初始化棧、堆,加載BL1到內(nèi)部IRAM,跳轉(zhuǎn)到BL1去執(zhí)行)。
第二階段:然后IRAM中的代碼負(fù)責(zé)初始化內(nèi)存(SDRAM)然后加載BL2到SRM中,并跳轉(zhuǎn)到SRAM.
第三階段:BL2在SDRAM中運行,然后加載OS到SDRAM并啟動操作系統(tǒng)
深入淺出處理器(上)_基本概念

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI