亚州天堂爱爱,做爱视频国产全过程在线观看,成人试看30分钟免费视频,女人无遮挡裸交性做爰视频网站

? ? ?

嵌入式Linux系統(tǒng)編程——推薦給所有學(xué)嵌入式系統(tǒng)的,難得的好文(嵌入式linux編程與實踐教程)

我相信以下內(nèi)容是每一位想學(xué)習(xí)Linux嵌入式系統(tǒng)想要了解的內(nèi)容,真的很想要分享給大家!

本文分享的內(nèi)容主要如下幾個方面:

系統(tǒng)總線

處理器

主存儲器

輸入/輸出模塊

數(shù)據(jù)寄存器、地址寄存器、索引寄存器

段指針

棧指針

pc程序計數(shù)器

取指令和執(zhí)行指令

IO模塊

中斷系統(tǒng)機(jī)制

中斷處理

多道程序設(shè)計

存儲器的層次結(jié)構(gòu)

高速緩沖存儲器

塊大小

映射函數(shù)

直接存儲器訪問

DMA模塊

1.1 嵌入式系統(tǒng)組成概述

操作系統(tǒng)利用一個或多個處理器的硬件資源,為系統(tǒng)用戶提供一組服務(wù),它還代表用戶來管理輔助存儲器和輸入/輸出(Input/Output,I/O)設(shè)備。因此,在開始分析操作系統(tǒng)之前掌握一些底層的計算機(jī)系統(tǒng)硬件知識是很重要的。

本節(jié)給出了計算機(jī)系統(tǒng)硬件的概述。假設(shè)讀者對這些領(lǐng)域已經(jīng)比較熟悉,所以對大多數(shù)領(lǐng)域的概述是簡要的。但某些內(nèi)容對本書后面的主題比較重要,因此對這些內(nèi)容的講述比較詳細(xì)。

1.1.1 基本構(gòu)成

從最頂層看,一臺計算機(jī)由處理器、存儲器和輸入/輸出部件組成,每類部件有一個或多個模塊。這

些部件以某種方式互聯(lián),以實現(xiàn)計算機(jī)執(zhí)行程序的主要功能。因此,計算機(jī)有四個主要的結(jié)構(gòu)化部件:

? 處理器 (Processor):控制計算機(jī)的操作,執(zhí)行數(shù)據(jù)處理功能。當(dāng)只有一個處理器時,它通常指中

央處理器(CPU)。

? 主存儲器n (Main memory):存儲數(shù)據(jù)和程序。此類存儲器通常是易失性的,即當(dāng)計算機(jī)關(guān)機(jī)時,存

儲器的內(nèi)容會丟失。相對于此的是磁盤存儲器,當(dāng)計算機(jī)關(guān)機(jī)時,它的內(nèi)容不會丟失。主存儲器通

常也稱為實存儲器(real memory)或主存儲器(primary memory)。

? 輸入/ / 輸出模塊O (I/O modules):在計算機(jī)和外部環(huán)境之間移動數(shù)據(jù)。外部環(huán)境由各種外部設(shè)備組成,包括二級存儲器設(shè)備(如硬盤)、通信設(shè)備和終端。

嵌入式Linux系統(tǒng)編程——推薦給所有學(xué)嵌入式系統(tǒng)的,難得的好文(嵌入式linux編程與實踐教程)

1.1.2 處理器寄存器

處理器包括一組寄存器,它們提供一定的存儲能力,比主存儲器訪問速度快,但比主存儲器的容量小。

處理器中的寄存器有兩個功能:

? 用戶可見寄存器:優(yōu)先使用這些寄存器,可以使機(jī)器語言或匯編語言的程序員減少對主存儲器的訪

問次數(shù)。對高級語言而言,由優(yōu)化編譯器負(fù)責(zé)決定哪些變量應(yīng)該分配給寄存器、哪些變量應(yīng)該分配

給主存儲器。一些高級語言(如 C 語言)允許程序員建議編譯器把哪些變量保存在寄存器中。

? 控制和狀態(tài)寄存器:用以控制處理器的操作,且主要被具有特權(quán)的操作系統(tǒng)例程使用,以控制程序

的執(zhí)行。

這兩類寄存器并沒有很明顯的界限。例如,對某些機(jī)器而言,程序計數(shù)器是用戶可見的,但對其他機(jī)

器卻不是這樣。但為了方便起見,以下的討論使用這種分類方法。

1 用戶可見寄存器

用戶可見寄存器可以通過由處理器執(zhí)行的機(jī)器語言來引用,它一般對所有的程序都是可用的,包括應(yīng)

用程序和系統(tǒng)程序。通常可用的寄存器類型包括 數(shù)據(jù)寄存器、 地址寄存器和 條件碼寄存器

? 數(shù)據(jù)寄存器 (data register)可以被程序員分配給各種函數(shù)。在某些情況下,它們實際上是通用的,

可被執(zhí)行數(shù)據(jù)操作的任何機(jī)器指令使用。但通常也有一些限制,例如對浮點數(shù)運算使用專用的寄存

器,而對整數(shù)運算使用其他寄存器。

? 地址寄存器 (address register)包含數(shù)據(jù)和指令的主存儲器地址,或者包含用于計算完整地址或有

效地址的地址區(qū)域。這些寄存器可以是通用的,或者可以用來以某一特定方式或模式尋址存儲器。

如下面的例子所示:

? 索引寄存器(index register) :索引尋址是一種最常用的尋址方式,它通過給一個基值加一個索引

來獲得有效地址。

? 段指針t(segment pointer):對于分段尋址方式,存儲器被劃分成長度不等的段。一個存儲器引用

由一個特定段號和段內(nèi)的偏移量組成;這種尋址方式在嵌入式較少采用。采用這種尋址方式,需要

用一個寄存器保存段的基地址(起始地址)。可能存在多個這樣的寄存器;例如一個用于操作系統(tǒng)(即

當(dāng)操作系統(tǒng)代碼在處理器中執(zhí)行時使用),一個用于當(dāng)前正在執(zhí)行的應(yīng)用程序。

? 棧指針 (stack pointer):如果對用戶可見的棧進(jìn)行尋址,則應(yīng)該有一個專門的寄存器指向棧頂。

這樣就允許使用不包含地址域的指令,如入棧(push)和出棧(pop)。

在某些機(jī)器中,過程調(diào)用或子程序調(diào)用將導(dǎo)致所有用戶可見的寄存器自動保存,在調(diào)用返回時恢復(fù)保

存的寄存器。由處理器執(zhí)行的保存操作和恢復(fù)操作是調(diào)用指令和返回指令執(zhí)行過程的一部分。這就允許每個過程獨立地使用這些寄存器。而在其他一些機(jī)器上,在過程調(diào)用前保存相應(yīng)的用戶可見寄存器卻是程序員的責(zé)任,這通過在程序中包含完成此項任務(wù)的指令來實現(xiàn)。因此,保存和恢復(fù)功能可以由硬件完成,也可以由軟件完成,這完全取決于處理器的實現(xiàn)。

2 控制和狀態(tài)寄存器

有多種處理器的寄存器用于控制處理器的操作。在大多數(shù)機(jī)器上,大部分此類寄存器對用戶不可見,

其中一部分可被在控制模式(或稱為操作系統(tǒng)模式)下執(zhí)行的某些機(jī)器指令訪問。

當(dāng)然,不同的機(jī)器有不同的寄存器結(jié)構(gòu),并使用不同的術(shù)語。在這里我們列出了比較合理和完全的寄存器類型,并給出了簡要的說明。除了前面提到過的 MAR、MBR、I/O AR 和 I/0 BR 寄存器(如圖 l-1 所示)外,下面的寄存器是指令執(zhí)行所必需的:

? 程序計數(shù)器 (ProgramCounter , PC):包含將取指令的地址。

? 指令寄存器 (Instruction Register 。 IR):包含最近取的指令內(nèi)容。

所有的處理器設(shè)計還包括一個寄存器或一組寄存器,通常稱為 程序狀態(tài)字m (Program s Status Word ,PSW),它包含狀態(tài)信息。PSW 通常包含條件碼和其他狀態(tài)信息,如中斷允許/禁止位和管理/用戶模式位。

條件碼n (condition code , 也稱為標(biāo)記) )是由處理器硬件為操作結(jié)果設(shè)置的位。例如,算術(shù)運算可能產(chǎn)

生正數(shù)、負(fù)數(shù)、零或溢出的結(jié)果,除了結(jié)果自身存儲在一個寄存器或存儲器中,在算術(shù)指令執(zhí)行之后,也隨之設(shè)置一個條件碼。這個條件碼接著可作為條件分支運算的一部分被測試。條件碼位被收集到一個或多個寄存器中,通常它們構(gòu)成了控制寄存器的一部分。機(jī)器指令通常允許通過隱式訪問讀取這些位,但不能通過顯式訪問進(jìn)行修改,這是因為它們是為指令執(zhí)行結(jié)果的反饋而設(shè)計的。

在使用多種類型中斷的機(jī)器中,通常有一組中斷寄存器,每個指向一個中斷處理例程;如果使用棧實現(xiàn)某些功能(例如過程調(diào)用),則需要一個系統(tǒng)棧指針,最后,寄存器還可以用于控制 I/0 操作。

在設(shè)計控制和狀態(tài)寄存器結(jié)構(gòu)時需要考慮很多因素,一個關(guān)鍵問題是對操作系統(tǒng)的支持。某些類型的控制信息對操作系統(tǒng)來說有特殊的用途,如果處理器設(shè)計者對所用操作系統(tǒng)的功能有所了解,那么可以設(shè)

計寄存器結(jié)構(gòu),對操作系統(tǒng)的特殊功能提供硬件支持,如存儲器保護(hù)和用戶程序之間的切換等。

另一個重要的設(shè)計決策是在寄存器和存儲器間分配控制信息。通常把存儲器最初的(最低的)幾百個或幾千個字用于控制目的,設(shè)計者必須決定在昂貴、高速的寄存器中放置多少控制信息,在相對便宜、低速的主存儲器中放置多少控制信息。

嵌入式Linux系統(tǒng)編程——推薦給所有學(xué)嵌入式系統(tǒng)的,難得的好文(嵌入式linux編程與實踐教程)

嵌入式Linux系統(tǒng)編程——推薦給所有學(xué)嵌入式系統(tǒng)的,難得的好文(嵌入式linux編程與實踐教程)

嵌入式Linux系統(tǒng)編程——推薦給所有學(xué)嵌入式系統(tǒng)的,難得的好文(嵌入式linux編程與實踐教程)

嵌入式Linux系統(tǒng)編程——推薦給所有學(xué)嵌入式系統(tǒng)的,難得的好文(嵌入式linux編程與實踐教程)

嵌入式Linux系統(tǒng)編程——推薦給所有學(xué)嵌入式系統(tǒng)的,難得的好文(嵌入式linux編程與實踐教程)

嵌入式Linux系統(tǒng)編程——推薦給所有學(xué)嵌入式系統(tǒng)的,難得的好文(嵌入式linux編程與實踐教程)

嵌入式Linux系統(tǒng)編程——推薦給所有學(xué)嵌入式系統(tǒng)的,難得的好文(嵌入式linux編程與實踐教程)

嵌入式Linux系統(tǒng)編程——推薦給所有學(xué)嵌入式系統(tǒng)的,難得的好文(嵌入式linux編程與實踐教程)

嵌入式Linux系統(tǒng)編程——推薦給所有學(xué)嵌入式系統(tǒng)的,難得的好文(嵌入式linux編程與實踐教程)

嵌入式Linux系統(tǒng)編程——推薦給所有學(xué)嵌入式系統(tǒng)的,難得的好文(嵌入式linux編程與實踐教程)

嵌入式Linux系統(tǒng)編程——推薦給所有學(xué)嵌入式系統(tǒng)的,難得的好文(嵌入式linux編程與實踐教程)

嵌入式Linux系統(tǒng)編程——推薦給所有學(xué)嵌入式系統(tǒng)的,難得的好文(嵌入式linux編程與實踐教程)

嵌入式Linux系統(tǒng)編程——推薦給所有學(xué)嵌入式系統(tǒng)的,難得的好文(嵌入式linux編程與實踐教程)

嵌入式Linux系統(tǒng)編程——推薦給所有學(xué)嵌入式系統(tǒng)的,難得的好文(嵌入式linux編程與實踐教程)

嵌入式Linux系統(tǒng)編程——推薦給所有學(xué)嵌入式系統(tǒng)的,難得的好文(嵌入式linux編程與實踐教程)

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。

(0)
上一篇 2024年5月1日 下午4:49
下一篇 2024年5月1日 下午5:01

相關(guān)推薦