儲存管理器基礎知識

2021-06-25 09:07:32 字數 1397 閱讀 2251

一、框架

想訪問乙個晶元,需要哪些條件:

1.位址線    2.資料線 8/16/32 資料寬度   3.時鐘/頻率   

我們看到cpu上整合了乙個儲存管理器,外圍的儲存裝置都接在這個儲存管理器上。cpu負責發出命令,其它的一切工作都交給了儲存管理器。那麼儲存管理器是如何來管理這些外設的呢?

首先位址空間被分為8個bank(bank0-bank7),每個bank對應128m空間。每個bank都對應乙個選通位(ngcs0-ngcs7),選通位為低電平是表示該bank選通。這樣的話,雖然位址線只有27條,但是總的位址空間可以達到了1g。s3c2440的位址空間組織如下圖所示:

我們看到位址空間是0-0x40000000,果然是1g。那麼s3c2440的cpu是32位的,他可以使用的位址理論上可以達到4g,除了用於連線外設的1g位址空間之外,還有一部分是cpu內部暫存器的位址,其餘的位址沒有用。其中cpu的內部暫存器的位址都在:0x48000000-0x5fffffff之間。

下面我們比較關心的乙個問題就是如果我們想要訪問乙個外設的話,我們應該發出什麼位址?其實很簡單,首先由ngcsn來確定基位址,然後用位址線表示的位址加上這個基位址就是我們需要的外設的訪問位址了。

我們以dm9000為例來說明一下:

0x20000000,寫資料的話就訪問:

0x20000004

我們再以sdram為例來分析一下:

我們只分析一片sdram,並不去管那個擴充套件了。我們的sdram是掛接在bank6上面的,所以基位址是:0x30000000。接在sdram上的位址線有15條,分別是:laddr2-laddr14,以及:laddr24-laddr25。cpu訪問sdram的位址為:基位址

為什麼會這樣呢?這其實是乙個比較複雜的過程,我們來分析一下:

首先sdram的位址可以分為3部分:l_bank、行位址、列位址,如下圖所示:

laddr24-laddr25對應於4個l-bank

laddr2-laddr14對應於行位址和列位址,根據控制位來決定是行位址還是列位址,其中行位址13位,對應

laddr2-laddr14

,列位址9位,對應

laddr2-laddr10

,所以位址一共26位,即64m空間。

那麼為什麼要空出

laddr0-laddr1呢?因為sdram是32的,即乙個位址對應著4個位元組,而cpu每發出乙個位址對應1個位元組,所以cpu發出4個位址才能對應sdram的乙個位址。

我們jz2440上其它一些外部儲存裝置的位址空間我們就不一一分析了,下面貼出來:

那麼當儲存管理器找到了外部儲存裝置之後,它該如何去發出訊號去控制儲存裝置呢?那就需要設定儲存控制器的相關暫存器了,我們需要使之與外設的要求相一致。

關於控制暫存器的設定我們在這裡就不廢話了,講到具體例子的時候再做分析。

儲存管理器

cpu配置儲存管理器 cpu讀操作發命令給儲存管理器,儲存管理器根據配置讀取資料 nand flash啟動方式,開機片內sram拷貝nand flash前4k執行,在這4k的程式裡需要完成sram sdram跳轉 s3c2440有8個bank,即8個片選訊號,直連可以接8個記憶體類外設 sdram,...

儲存管理器

一儲存暫存器的性質 儲存管理器負責管理2440的所有記憶體裝置,2440的位址線addr0 addr26,即最大執行定址2 27 128m空間。cpu通過8根片選訊號ngcs0 ngcs7,控制bank0 bank7,每個bank大小為128m,這樣就實現了須知1g位址空間。2440是32位的cpu...

儲存基礎知識

主要知識點 基本分割槽 邏輯卷lvm ext3 4檔案系統 磁碟限額 raid 從工作原理區分 機械 固態從插拔方式 熱插拔 非熱插拔 硬板的主要介面 ide sata i ii iii scsi sas pcie fckernel對不同介面硬碟命名方式 os ide 並口 sata 串列埠 scs...