亚洲精品一二区_国产黄色片网站_99久久久成人国产精品_蜜臀网_国产精品一区二区三区免费_成人av中文字幕_91精品国产欧美一区二区成人

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > exynos4412內存分析

exynos4412內存分析 時間:2018-08-16      來源:未知

學生在進行開發時,經常對內存這塊有疑問,下面將使用exynos4412芯片的華清開發板(fs4412)為例作為講解。

使用到的手冊如下:

FS4412_CoreBoard_V2.pdf

FS4412-DevBoard-V5.pdf

SEC_Exynos4412_Users Manual_Ver.1.00.00.pdf

簡述

exynos4412存儲分下面幾塊:

iROM:啟動鏡像區,存放三星預置的程序,也叫bl0

iRAM :內部內存區,加載通過OM選擇后的啟動程序,通常加載bl1、bl2

SMC:靜態內存區,Static Read Only Memory Controller ,通常用于映射外部總線上設備,如網卡等,該區域被分為4個bank,每個16M(對應硬件手冊xm0開頭的)

SFR:特殊功能寄存器區,通常用于映射SOC內部設備,如GPIO等

DMC:動態內存區,就是我們通常意義上的內存。

ps:動態內存(由于動態內存本身不供電,需要不斷供電刷新,保存數據,所以叫動態內存)(對應硬件手冊xm1和xm2開頭的)

硬件原理(SMC)

Exynos4412中有1個獨立的SMC,分為4個bank

沒有行地址和列地址,整個芯片可用內存大小:2^8bit=256/16=16Byte

外部設備片選時,只能選0或者1.

硬件原理(DMC)

Exynos4412中有兩個獨立的DRAM控制器,分別叫DMC0和DMC1,可以接2組不同的DDR內存。DMC0和DMC1分別支持大1.5GB的DRAM,它們都支持DDR2/DDR3和LPDDR2等,512 Mb, 1 Gb, 2 Gb, 4 Gb and 8 Gbit的內存設備,支持16/32bit的位寬。DRAM0 對應的地址是0x4000_0000~0xAFFF_FFF共1.5GB,DRAM1 對應的地址是0xA000_000~0x0000_0000共1.5GB。

4412的1GB的DRAM是由4片大小為256M*16的DDR3芯片組合而成(查看芯片型號可以得到)

芯片型號:K4B4G1646B-HYXX

第一位: K表示內存

第二位:4表示falsh類型 DRAM

第三位:B表示DDR3

第4~5位. Density(注:實際單位應該是bit,而不是Byte),我們的是4Gbit=4G/16(數據位)=256MByte

第6~7位. organization:數據線引腳個數,我們的是16

分析完成,開發板上共有4片這樣的內存芯片,總容量就是256M*4=1G

這四片DDR 芯片被分成了兩兩一組,組成32位數據,四片都是掛接到DMC0處

總圖如下:

分解圖如下(只列了一半):

從上兩圖可以看出,這四片DDR 芯片被分成了兩兩一組,組成32位數據,四片都是掛接到DMC0處,如下:

· 左邊一片16位,右邊16位,組成32位數據

· 全部芯片片選掛到CS0:

· bank線數:

3路線(BA0-BA2),有2^3組合,也就是一個芯片上,bank有8個

· 地址線

地址線數:15(A0-A14)

ps:一個芯片內存大支持:2^(bank線數+地址線)=2^33=8Gbit/16=512MByte

· 行列地址線

nRAS,nCAS:復用地址線行和列選擇,同一時刻只能有一種地址線使用(不是行就是列),我們的板子上芯片有256M(2^28),28-3(bank)-15(行地址)=10(列地址)

· 尋址流程

這個操作順序是,先片選,CS拉低,然后,當RAS拉低時,表示傳過的是行地址,是A0-A14,15位;當CAS拉低時,表示傳過來的是列地址,是A0-A9,列地址多的幾位是預留的用來擴展內存,一個芯片內存多可以擴展到512M。

內存劃分多個bank原因

由于DDR是不自備充電電路的,所以,每隔一段時間,內存控制器就會刷新一次電路,也就是要充一次電,如果只有一個Bank,那么結果就是在某一時刻,要么都充電,要么都不充電。

像上面這樣分成了8個Bank,當我對000充電的時候,我還可以在010或是剩下的別的Bank中讀取數據,這樣就減小了等待的時間,不用說當電路刷新時,不能讀取數據了。

exynos板子上,每個bank大小= 256M/8=32M(1個芯片上有2^3個bank)

內存計算方法

SDRAM容量計算

計算可尋址單元的數量(32位)

地址線數(管腳數):11(A0-A10)

bank線數:2(BA0-BA1) 可以組合出2^2個 bank

大行線數=211(例如地址線的編號,11個管腳線,組合有211種)

大列線數=211(例如地址線的編號,11個管腳線,組合有211種)

一個bank中總單元數=211x 211

芯片中總單元數=(bank個數)×(一個bank中總單元數)

= 22 x 211 x 211

= 224

備注:

因為行線與列線上傳輸的數據是經過編碼(組合方式)的,而不是直接的行號和列號,

也就是說每個bank里有213 個行和 29 個列,并非只有13行和9列。

所以要尋址的單元在第(2行線數據 )行,第( 2列線數據)列。

例如bank0,行線數據是0 0000 0010 0000,列線數據是0 0000 1000,

意思是要獲取行32,列8的單元的數據,而不是行5,列3的數據。

如果行線數據是 0 0010 1101 0110,列線數據是0 0011 1010,意思是獲取行726,列58的單元的數據。

例如一個32MB的SDRAM芯片中有4個Logic-bank(邏輯bank),位寬16bit(即每個單元是16bits),地址線13條,大行線數13,大列線數9。計算得:

一個bank的單元數= 213 x 29= 4194304(即4M)。

芯片總單元數=4Banks × 4M units = 16M units 。

芯片總位數=16M units × 16bits/per_unit = 256M bits 。

芯片總字節數=256M bits/8 = 32M Bytes 。

內存初始化流程

在三星提供的數據手冊《SEC_Exynos4412_Users Manual_Ver.1.00.00》的第1046頁提供給了一段關于LPDDR2-S4的初始化步驟,LPDDR2表示低功耗DDR2,DDR3的初始化過程應和這個一樣,我們就按這個過程來初始化DDR3

初始化流程,如手冊中 18.3.1 LPDDR2-S4 描述:

18.3.1 LPDDR2-S4

Use the sequence given here to initialize LPDDR2 devices. Unlessspecified otherwise, these steps are

mandatory. Note that the memory CK/CKn must be less than or equal to50 MHz before you initialize the

LPDDR2-S4 device.

1. DMC must assert and holdCKE to a logic low level to provide stable power for memory device and thenapply

stable clock.

2. Set thePhyControl0.ctrl_start_point and PhyControl0.ctrl_inc bit-fields to a correctvalue according to clock

frequency. Set the PhyControl0.ctrl_dll_on bit-field to"1" to activate the PHY DLL.

3. DQS cleaning: Set thePhyControl1.ctrl_shiftc and PhyControl1.ctrl_offsetc bit-fields to theappropriate value

according to clock frequency, board delay, and memory tDQSCKparameter.

4. Set thePhyControl0.ctrl_start bit-field to "1".

5. Set the ConControl. Atthis moment, an auto-refresh counter should be disabled.

6. Set the MemControl. Atthis moment, all power down modes should be disabled.

7. Set the MemConfig0register. When there are two external memory chips, set the MemConfig1register.

8. Set the PrechConfig andPwrdnConfig registers.

9. Set the TimingAref,TimingRow, TimingData, and TimingPower registers according to memory AC

parameters.

10. Set the QosControl0 to 15and QosConfig0 to 15 registers when a certain bus master requires QoS scheme.

11. Wait for thePhyStatus0.ctrl_locked bit-fields to change to "1". Verify whetherPHY DLL is locked.

PHY DLL compensates the changes of delay amount that pressure,volume, and temperature variation

causes during memory operation. Therefore, you should not power offPHY DLL for reliable operation.

It can be in power-off mode except when it runs at low frequency.When you use the power-off mode,

set the PhyControl0.ctrl_force bit-field to the correct valueaccording to the PhyStatus0.ctrl_lock_value[9:2]

bit-field for fix delay amount. Clear the PhyControl0.ctrl_dll_onbit-field to turn off PHY DLL.

12. Set thePhyControl1.fp_resync bit-field to "1" to update DLL information.

13. Confirm that Clock Enable(CKE) is in a logic low level at least 100ns after power on.

14. Issue a NOP command byusing the DirectCmd register to assert and hold CKE to a logic high level.

15. Wait for a minimum of 200ms.

16. Issue a MRS command byusing the DirectCmd register to reset memory devices and program the operating

parameters.

17. Wait for minimum of 1 μs.

18. Issue a MRR command byusing the DirectCmd register to poll the DAI bit of the MRStatus register.

This is to know whether or not Device Auto-Initialization iscomplete.

19. If there are two externalmemory chips, execute step 14 to 19 for chip1 memory device.

20. Set the ConControl toturn on an auto-refresh counter.

21. Set MemControl registerwhen you require power-down modes.

翻譯上面的步驟:

1、DMC功能必須設置,并且要保持CKE為低電平,以便可以提供穩定的電源和時鐘給DDR

2、根據時鐘頻率設置PhyControl0.ctrl_start_point 和PhyControl0.ctrl_inc bit-fields,并且設置PhyControl0.ctrl_dll_on bit-field 為 "1" 已啟動PHY DLL。

3、DQS 清除,根據時鐘頻率、板子延時和芯片的tDQSCK參數設置PhyControl1.ctrl_shiftc 和PhyControl1.ctrl_offsetcbit-fields。

4、設置 PhyControl0.ctrl_start bit-field 為"1"。

5、設置ConControl,此時,不能使能自動刷新計數器(auto-refresh counter )。

6. 設置MemControl,此時,所有的power down模式應關閉。

7、設置MemConfig0 寄存器,當外面有兩片存儲芯片時,設置MemConfig1寄存器。

8、設置 PrechConfig和 PwrdnConfig寄存器。

9、根據DDR3的 AC參數設置TimingAref, TimingRow, TimingData, 和 TimingPower寄存器。

10、當總線主控者需要QoS時序參數時,設置QosControl0 到15寄存器和QosConfig0 到 15寄存器。

11、等待 PhyStatus0.ctrl_locked bit-fields 變成 "1",以確定 PHY DLL 是否鎖定。PHY DLL 可以補償壓力、體積?和溫度等環境的變化,因為在芯片工作期間,我們不能關閉了PHY DLL的電源,只有當他在低的時鐘頻率時才可以切換到Power-off 模式,當我們用power-off 模式,參考PhyStatus0.ctrl_lock_value[9:2]的延時參數來設置PhyControl0.ctrl_forcebit-field,清楚PhyControl0.ctrl_dll_on bit-field來關閉 PHY DLL。

12、設置PhyControl1.fp_resync bit-field 為 "1" 來更新 DLL的設置。

13、確保在電源上電后至少保持Clock Enable (CKE)在低電平100ns。

14、用DirectCmd 寄存器來執行一條NOP指令且保持CKE 為高電平。

15、至少等待200us。

16、發出MRS指令來重新設置存儲芯片的操作參數。

17、至少等待1us。

18、用MRR指令來查詢MRStatus的寄存器的DAI位,用這們來確定自動初始化過程是否完成。

19、如果外部有別的存儲芯片,重復執行14到19步來設置芯片1。

20、設置ConControl來啟動auto-refresh counter.

21、當我們要進行power-down模式,設置MemControl寄存器。

按照上邊的步驟來設置就可以完成DDR的初始化。

更多exynos4412內存分析問題

Exynos4412特殊功能寄存器的封裝

上一篇:arm11開發板適合新手學習嗎

下一篇:Linux平臺下pci總線驅動

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 黄色免费小说网站 | 久久这里只有精品视频99 | 日韩波多野结衣 | 久久嫩草影院免费看夜色 | 人人鲁免费播放视频人人香蕉 | 青青久精品观看视频最新 | 亚洲aa在线 | 国产亚洲视频在线 | 亚洲日本天堂在线 | 99re8热精品免费视频 | 欧美zoosex | 久操小视频 | 起碰免费视频97网站 | 精品一区二区视频在线观看 | 99在线小视频| 亚洲视频黄色 | 亚洲一区二区三区日本久久九 | 国内精品一区二区2021在线 | 色播性播爱播放影院 | 亚洲精品中文字幕久久久久久 | 欧美成人性色生活片免费在线观看 | 国产一区二区三区久久 | 色视频线观看在线播放 | 日本一二三区视频 | 久久综合视频网 | 久久免费精品高清麻豆 | 国产色司机在线视频免费观看 | 久热网| 精品成人免费视频 | 国产伦精品一区二区三区免费迷 | 欧美日韩性视频 | 日本污污视频在线观看 | 九九精品热线免费观看6 | 人人澡人人澡人人看欧美新闻 | 男女激情在线观看 | 免费黄频 | jizzjizz日本护士18 | 日本不卡视频在线视频观看 | 丁香视频在线 | 天天摸夜班摸天天碰 | 国产免费无遮挡精品视频 |