溫馨提示×

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

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

深入淺出處理器(一)

發(fā)布時(shí)間:2020-10-15 19:54:05 來(lái)源:網(wǎng)絡(luò) 閱讀:862 作者:上帝之子521 欄目:系統(tǒng)運(yùn)維

        在嵌入式開發(fā)中,處理器有兩種:微控制器和微處理器。那么這兩種處理器有何區(qū)別呢?微控制器 = CPU + 片內(nèi)內(nèi)存 + 片內(nèi)外設(shè);微處理器 = CPU。在以前嵌入式硬件資源很少時(shí),它們的區(qū)別對(duì)于硬件工程師來(lái)說還是很大的。但是在現(xiàn)代的嵌入式中,它們的概念都差不多了。相對(duì)來(lái)說,微控制器具有成本低,功耗低等優(yōu)點(diǎn),常用于嵌入式系統(tǒng)設(shè)計(jì);對(duì)于軟件工程師而言,微控制器和微處理器沒有任何區(qū)別。


        本系列博客內(nèi)容是根據(jù)狄泰軟件學(xué)院的《門徒計(jì)劃》中的 主線課程 相關(guān)內(nèi)容總結(jié)而來(lái),狄泰技術(shù)交流群:199546072。


        下來(lái)我們來(lái)看看寄存器的分類:CPU 寄存器和外設(shè)寄存器。CPU 寄存器是指專用指令執(zhí)行、數(shù)據(jù)運(yùn)算、變量處理以及參數(shù)傳遞;外設(shè)寄存器是指用于控制外設(shè)的行為和工作方式,寄存器值得配置需要根據(jù)芯片手冊(cè)完成。在處理器中關(guān)鍵寄存器:PC - 重新計(jì)數(shù)器(指令指針 IP)和 SP - 棧指針(Stack Pointer)。PC 程序計(jì)數(shù)器的特性,每執(zhí)行一條指令,PC 中的值就會(huì)發(fā)生變化,PC 時(shí)鐘保存下一條 CPU 要執(zhí)行的指令地址。SP棧指針的特性,始終指向??臻g的頂端,實(shí)現(xiàn) LIFO 特性,保存中斷斷點(diǎn)、函數(shù)調(diào)用返回點(diǎn)以及 CPU 現(xiàn)場(chǎng)數(shù)據(jù)等。我們來(lái)看看 PC 和 SP 的使用案例:函數(shù)調(diào)用。如下

深入淺出處理器(一)

        在函數(shù)調(diào)用的時(shí)候,PC 指向跳轉(zhuǎn)函數(shù)的地址處。在它執(zhí)行完跳轉(zhuǎn)函數(shù)的內(nèi)容后,接著又返回前面的函數(shù)中接著執(zhí)行代碼。那么它如何知道該返回到哪呢?此時(shí)便用到了 SP 棧指針。在 PC 進(jìn)行跳轉(zhuǎn)前會(huì)將此時(shí)的上下文信息保存到 SP 棧指針指向的棧上。當(dāng)執(zhí)行完跳轉(zhuǎn)函數(shù)的內(nèi)容后想要返回原來(lái)函數(shù)的地址時(shí),此時(shí)便會(huì)利用 SP 棧指針進(jìn)行返回。bp 指針是用來(lái)保存 SP 棧指針的基地址的,當(dāng)保存了 PC 的上下文信息時(shí),SP 將會(huì)向下移動(dòng)。

        下來(lái)我們來(lái)看看處理器的 IO 操作,處理器與外設(shè)之間的數(shù)據(jù)通信通過 IO 操作完成。IO 分為內(nèi)存映射 IO空間和獨(dú)立 IO 空間。內(nèi)存映射 IO 空間是指外設(shè)通過精密的硬件連接映射到處理器的地址空間,通過地址訪問的方式與外設(shè)進(jìn)行通信;而獨(dú)立 IO 空間是指獨(dú)立于地址空間,無(wú)法通過地址訪問外設(shè),使用專用指令與外設(shè)進(jìn)行通信。從軟件工程師的角度來(lái)看,只需要對(duì)不同的 IO 端口讀寫就可以操作外設(shè);讀寫 IO 端口時(shí)候的具體值和意義需要查詢具體的硬件手冊(cè)。那么硬件設(shè)計(jì)的關(guān)鍵是什么呢?如下

深入淺出處理器(一)

        通過具體的硬件設(shè)計(jì),可以使得地址總線上的值在某個(gè)范圍時(shí),片選信號(hào)為“真”,即:使能連接的設(shè)備,從而讀取相應(yīng)地址中的數(shù)據(jù)!這些都是硬件工程師關(guān)心的東西,我們只需要能看的懂就可以了。下來(lái)以具體設(shè)備的地址映射為例來(lái)進(jìn)行說明,地址為0xFFFF1234,如下

深入淺出處理器(一)

        我們看到低 16 位是通過與門來(lái)進(jìn)行連接的,也就是說,只有它們?nèi)珵?1 時(shí)才能接通。接下來(lái)看看處理器啟動(dòng)過程:1、處理器上電后,PC 寄存器固化了一個(gè)默認(rèn)值;2、PC 默認(rèn)值用于決定第一條執(zhí)行指令;3、第一條執(zhí)行指定隸屬于啟動(dòng)順序。如下圖所示

深入淺出處理器(一)

        在嵌入式的啟動(dòng)程序中,我們稱之為 BootLoader,它也是系統(tǒng)上電后運(yùn)行的第一個(gè)程序(Not OS)。根據(jù)運(yùn)行階段,體積和功能的不同分為三個(gè)部分:a> BL0 - 固化于硬件中,用于初始化硬件,加載并運(yùn)行 BL1;b> BL1 - 存儲(chǔ)于外部存儲(chǔ)設(shè)備中,用于初始化主存,加載并運(yùn)行 BL2;c> BL2 - 存儲(chǔ)于外部存儲(chǔ)設(shè)備中,用于引導(dǎo)操作系統(tǒng)執(zhí)行。

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

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

AI