SDRAM和NAND Flash的幾個注意點

2021-08-27 08:39:46 字數 1629 閱讀 3212

這幾天在研究st2410開發板上的儲存器控制部分,現結合自己在實驗中碰到的問題和查詢的相關資料,談談幾個注意點。

1)s3c2410與sdram的連線問題

1、首先cpu向sdram傳送乙個讀位址,a0-a14對應的位址訊號是001000000000000b,此時sdram上的a0-a12上的位址訊號是0010000000000b,然後sdram返回該位址對應的儲存單元的資料(32位資料),最後儲存器控制器將該資料的低8位資料返回給cpu;

2、cpu向sdram傳送下乙個讀位址,a0-a14對應的位址訊號是001000000000001b,此時sdram上的a0-a12上的位址訊號是0010000000000b,然後sdram返回該位址對應的儲存單元的資料,最後儲存器控制器將該資料的次低8位資料返回給cpu;

3、cpu向sdram傳送下乙個讀位址,a0-a14對應的位址訊號是001000000000010b,此時sdram上的a0-a12上的位址訊號是0010000000000b,然後sdram返回該位址對應的儲存單元的資料,最後儲存器控制器將該資料的次高8位資料返回給cpu;

4、cpu向sdram傳送下乙個讀位址,a0-a14對應的位址訊號是001000000000011b,此時sdram上的a0-a12上的位址訊號是0010000000000b,然後sdram返回該位址對應的儲存單元的資料,最後儲存器控制器將該資料的高8位資料返回給cpu;

這樣,就完成了乙個32位資料的完整讀取過程,從中可以發現,cpu的a0和a1位址線被自動遮蔽,並不參與解碼,也就是說cpu傳送的位址訊號必須是4的倍數,這樣讀寫的資料才是變化的。

總結:一般地,外設與cpu的連線方式取決於外設的資料位數:

如果外設的資料位數是8位,則cpu的a0連線外設的a0;

如果外設的資料位數是16位,則cpu的a1連線外設的a0;

如果外設的資料位數是32位,則cpu的a2連線外設的a0;

2)nand flash啟動方式

st2410開發板支援從nand flash啟動系統。

我們知道,應用程式通常需要被裝載到記憶體中才可以執行,而nand flash並沒有連線到系統匯流排上,只是通過幾個io口與s3c2410連線,那麼系統是怎樣從nand flash上啟動的呢?首先看一下2410啟動後的儲存器對映圖:

圖的右邊是從nand flash啟動後的對映圖,可以看到在最下面有4kb大小的sram被對映到bank0處,其實現原理是這樣的:s3c2410內部提供乙個叫做「stepping stone」的sram緩衝器,系統啟動時nand flash的前4kb**(通常是bootloader的stage 1)被自動複製到stepping stone中,又因為程式的執行是從0位址開始的,所以stepping stone被對映到bank0處,然後cpu開始執行這段**,當引導**執行完之後就自動跳轉到sdram中執行,開始啟動作業系統。

3)nor flash

由於nor flash通過系統匯流排與s3c2410相連,所以應用程式可以直接在flash裡面執行,無需再裝載到記憶體中,所以bootloader一般放在nor flash中。

SDRAM和NAND Flash的幾個注意點

這幾天在研究st2410開發板上的儲存器控制部分,現結合自己在實驗中碰到的問題和查詢的相關資料,談談幾個注意點。1 s3c2410與sdram的連線問題 1 首先cpu向sdram傳送乙個讀位址,a0 a14對應的位址訊號是001000000000000b,此時sdram上的a0 a12上的位址訊號...

SDRAM和重定位

sdram和重定位 段 段通常是指用來存放程式執行 的一塊記憶體區域,這部分區域的大小在程式執行前就已經確定,並且記憶體區域通常屬於唯讀。也有可能包含一些唯讀的常數變數,例如字串常量等。資料段 用來存放程式中已初始化的全域性變數的一塊記憶體區域,屬於靜態記憶體分配。bss段 用來存放程式中未初始化的...

nand flash啟動和nor flash啟動

1 nor flash啟動 cpu看到的0位址是在nor flash上 1 把bootloader燒寫在nor flash的0位址 2 上電時,從nor flash的0位址開始執行。3 比較大時需重定位,重定位時,把 從nor flash 複製到sdram上的鏈結位址 程式執行時應該位於的地方 2 ...