S3C2440A Memory design

S3C2440A Memory design
更改我的閱讀文章字型大小大 小

作者 : harlanstars(harlan)
[ 貼文 17 | 人氣 6265 | 評價 0 | 送出評價 0 次 ]

[ 回應本文 ]  [ 發表新文 ]  [ 給予評價 ]  [ 給予評價 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

2008/3/20 上午 10:08:04

在S3C2440A中, memory storage 分成8 個 bank, 每個 bank 128 M bit, 總共是 1 G bit. Bank0~Bank5 用於ROM/SRam, Bank6~Bank7用於ROM/SRam/SDRam.
但是硬體上只有SDRam 512 M bit (2ch 128 Mbit) / AMD ROM 1 M bit * 16 bit / NAND Flash 64M * 8 bit. 硬體上的 SDRam 如何 map 到 Bank 0 ~ Bank 7 ??
謝謝

作者 : harlanstars(harlan)
[ 貼文 17 | 人氣 6265 | 評價 0 | 送出評價 0 次 ]

[ 回應本文 ]  [ 發表新文 ]  [ 給予評價 ]  [ 給予評價 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

2008/3/20 下午 02:25:29

搞錯了, S3C2440A 內部有 1G (bytes) 的儲存空間, 應該沒錯吧?
然後分成 8 個 Bank, NAND Flash 不在這裡面, SDRam 在Bank6 or Bank7, 因此可以知道Max SDRam是多少. 其他的 bank 的用途 ??
以及內部那 1GB 是什麼 ?? 還是他只是一個 slot bank ??

作者 : cyanite0909(cyanite)
[ 貼文 431 | 人氣 15101 | 評價 300 | 送出評價 0 次 ] 貼文超過200則人氣指數超過10000點

[ 回應本文 ]  [ 發表新文 ]  [ 給予評價 ]  [ 給予評價 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

2008/3/20 下午 05:58:28

其他的 Bank 看你想怎麼用了,一般 Bank0 是拿來接 NorFlash 的,其他 Bank1,2,3,4,5 就看你還需要擴充甚麼周邊了,每一個 Bank 都有對應的 Chip select 訊號 nGCSx ,這是做 Bank 最大兩個位址線解碼的訊號, 像 Bank1(nGCS1) 就可以拿去接 網卡之類的.反正那些 Bank 就是拿來擴充功能用的.不過得是支援 Host interface 的周邊 IC 才能往上兜.
其實 Bank 6,7 不需要用到那麼大的記憶體只用到 Bank6 時,那Bank 7也可以設定成 ROM/SRAM的模式,一樣可以拿來擴充周邊功能.

作者 : huah(Huah)
[ 貼文 292 | 人氣 263 | 評價 1910 | 送出評價 2 次 ] C++優秀好手貼文超過200則

[ 回應本文 ]  [ 發表新文 ]  [ 給予評價 ]  [ 給予評價 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

2008/3/21 上午 12:57:08

有些事, 你的先後順序弄錯了, S3C2440A的core是一顆ARM920T, 它的定址
空間是4G bytes (目前的SOC大慨都差不多是4G bytes的定址空間, 2^32).
有了這些定址空間 (目前都以Physical address來說), 設計chip的工程師或公司
就會詳加利用這些空間來規劃要使用到的週邊, 記憶體或flash等, 一般我們都會
先看memory map, 你應該看到的應該是Figure 5.1的memory map, 它其實
只顯示0x00000000-0x3FFFFFFF的1G bytes定址空間, Table1.4還有其它
用到的定址空間.
要注意, 是定址空間, 不是儲存空間***
週邊有很多種連結方式, UART, I2C, SPI, PCI, .., 信號都不同, 其中有些會用memory
interface的方式來access該chip, 例如一些ethernet chip, general usb device
controller. 另外, 最重要的是RAM和FLASH.
所謂的memory interface一般就是有clock, chip select, address lines, data lines,
read, write 等等, 所以SDRAM, NOR, NAND, 或假設接了一顆CS8900來當ethernet
controller, 它就會須要有正確的信號來access這些chips, 而每一顆的訊號特性都不同,
一個bank代表你可以規劃正確而獨立的信號特性來access某一chip, 所以你BANK 0和
BANK 1的信號特性可能完全不像, 因為你分別接的兩顆chips信號特性完全不同. 而這些
信號特性主要分SDRAM使用的高速memory interface, 和其他速度要求較低的低速
memory interface.
正確的思考模式是, 你access一個實體記憶體位置的內容, SOC會跟據該SOC的規劃
得知屬於那個bank, 所以該bank的chip select會在信號動作時active, 而信號特性會
依system registers的設定來動作. 所以一般booting最重要的一步在設SDRAM所屬
bank的信號特性.
那個chip使用那個bank, 要直接看硬體設計圖, 沒一定的, 只是有限制, 如果你用EVB,
光碟裡面會有schematics, 做embedded system 底層的人, 都是要學會看的.
大體上而言, SOC在分配每個bank的定址空間時, 會考量它的特性, 以S3C2440A而言,
BANK 6和7是拿來放SDRAM的, 就要考慮夠大的空間, 至於實際使用多少, 就看你的
product的需求, 例如, 某IP分享器可能8MB SDRAM就OK了, 那就不會多用, 那都是成本,
實際做產品, 都會考慮cost down, 誰不希望成本低可以賣一樣的錢. 所以你看到兩個
banks加起來可以最高放上去256MB的SDRAM, 大部份不會真的用那麼大, 但還是要留
夠大的定址空間範圍. 有4GB來分配, 沒甚麼好省的, 定址空間範圍大並不會多花錢. 像
pocket PC phone假如用到128MB, 如果當初給定的範圍不夠大, 就完全無法拿來用在
該類產品上.
實際如果用memory bus來使用NAND, 一般只用兩根address lines(for ALE和CLE),
如果是該NAND一次是16 bits的access, 換算起來就是用到8個bytes的定址空間,
NAND的full access方法並不是簡單的送信號到address lines, 就可以讀寫相對應的內
容, 有一些先後關係和程序, NAND的interface也有很多種, 這裡不贅述, 一般標準的是
使用ALE和CLE的方式. 有的SOC有單獨的NAND controller, 信號不是透過memory
interface, 而是SOC上專門的接腳. 為了要使用到該controller的好處(如ECC自動計算,
booting), 我們便會用專屬界面來與NAND連接, 但是你喜歡的話, 還是可以把它接在
memory interface上, 反正信號是正確的就可以使用該NAND chip. 實際上S3C2440A
上有專門的ALE/CLE信號接腳, 如果要用NAND boot, 也必須接到那些信號.

作者 : huah(Huah)
[ 貼文 292 | 人氣 263 | 評價 1910 | 送出評價 2 次 ] C++優秀好手貼文超過200則

[ 回應本文 ]  [ 發表新文 ]  [ 給予評價 ]  [ 給予評價 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

2008/3/21 上午 01:13:29

另外, 要想清楚了解相關的topics, 需要注意信號的解釋, 以S3C2440A上BANK6的
SDRAM而言, 要能正確運作, 就要follow該SDRAM chip的信號特性, 並設對參數,
也就是BANKCON06 (0x4800001C), REFRESH (0x48000024), BANKSIZE
(0x48000028), MRSRB6 (0x4800002C). 之後信號就會依這些設定運作, 當你
看到信號level時, 你應該注意到, 假如16 bits的SDRAM, ACCESS 0x3000_2468
1. 對S3C2440A而言, address是0x3000_2468, 不過信號上address lines
    只會有(以2進位顯示) 0 0 0 ...(0 0 1 0) (0 1 0 0) (0 1 1 0) (1 0 0).
2. 對SDRAM而言, 是它的位置0x00002468.
雖然你會覺得觀念轉不過來, 不過系統運作正常是靠電氣信號的match, 在這層它們兩
個是一致的. 如果你有機會接觸到PCI相關的topics, 也是一樣, 一般而言, 你的memory
address和PCI bus上的address不會是一致的, 同樣的, 到電氣level是一致的.
另外, 目前的討論都是physical address, 完全不牽涉到virtual address, 如果是有
MMU且virtual address轉換過, 最後都要換回physical address來看interface信號.

作者 : harlanstars(harlan)
[ 貼文 17 | 人氣 6265 | 評價 0 | 送出評價 0 次 ]

[ 回應本文 ]  [ 發表新文 ]  [ 給予評價 ]  [ 給予評價 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

2008/3/21 上午 10:37:53

感謝各位大大, 昨天我也理解address map和memory interface的概念.
我有個疑問, 在SFR內, 兩各 reg 差距乍看大部分都是 4 的倍數 ? 有什麼特別原因? 硬體的設計從 sch 內部的 cs 決定會用到那些 bank ??
謝謝

作者 : huah(Huah)
[ 貼文 292 | 人氣 263 | 評價 1910 | 送出評價 2 次 ] C++優秀好手貼文超過200則

[ 回應本文 ]  [ 發表新文 ]  [ 給予評價 ]  [ 給予評價 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]

2008/3/22 上午 12:18:56

如果是32 bits就會放在4-bytes alignment的位置, 方便起見, 8 bits或16 bits如此
編排也OK一致. 以TI OMAP850的UART而言 , 是一次8 bits access, 該UART
controller的registers間是連續的, 也就是1-byte alignment, 但到TI OMAP 2430,
一樣的UART controller, 該controller的register當然同樣是8 bits, 但位置是一次跳
4 bytes.
一般SOC內也是切成一塊塊IP, 內部也有bus, 結構更複雜, 不同的資料流動, 會有bus
arbitrator, 同樣會有address lines, 所以同一家的產品, 相同功用的controller (同為
UART, 同為USB, 等等)正常都是單獨的區塊, 以剛才的OMAP例子而言, TI OMAP850
就是bus A0接UART(0, 1, 2) controller的A0, 但到了OMAP 2430, 可能希望都一致
化為4-bytes alignment, 所以變成bus A2接UART controller的A0.
硬體設計會如何考量BANK, 取決於
1. 特性: 以S3C2440A而言, SDRAM只能放BANK6或BANK7
2. boot-up 功能: 一顆SOC可能有幾種booting方式 (將configuration pins依設計
    考量拉high或low), 以S3C2440A而言, 如果要以NOR boot, 要放在BANK0
3. System vector address: 以ARM而言, ARM11前的core, interrupt/exception等
    須落在位置0x00000000 (有virtual address時, 是virtual address的
    0x00000000), 如果是以Protection UNIT為主的ARM core, 無法實現virtual
   address, 設計上可以選擇0x00000000是對到NOR, 或對到SDRAM, 那必須follow
   該SOC能support的方式. 由於S3C2440A是用ARM920T, 有MMU, 所以以
    virtual address處理即可. 如果以S3C2510而言, 它是用ARM940T, 只有
    proteciton unit, 要把 0x00000000 map到SDRAM, 必須靠remap的設定, 此
    時, 0x00000000是remap到SDRAM BANK0, 0x40000000是remap到SDRAM
   BANK1, 所以單一SDRAM你又想用SDRAM來放system vector address, 只可
    連到SDRAM BANK0上.
4. PIN腳multiplexers: 一般SOC包含的所有功能並無法同時使用, 其中一個因素在於
   有限的pin腳, 越多的pin腳代表越大的面積, 以及施工的困難度增高, 所以SOC廠商會
   依據該SOC的不同application種類, 來規劃pin腳共用, 所以一但某根pin腳拿來做某一
   interface的信號時, 別的interface就無法同時使用. 我們在survey SOC時, 會很小心
   的分析pin腳是否有兩個interface打架的狀況. 一般而言, bank的選取一般由小的開
   始選, CSx通常會獨立保留, 另外, 特殊的信號設定也可能只有前面的彈性最高.
5. 輔助型NAND Controller: 它可能只搭配特殊的bank來完成工作, 不過S3C2440A
    有獨立的ALE/CLE, 所以要使用NAND controller的好處, 請接專屬電路.
以上只列出一些我想到的, 實際可能還有很多我沒想到的.
另外, 其實大部份都直接會參考reference design(s), 單純又比較有保證.

原文地址:https://www.cnblogs.com/cute/p/2007891.html