2.1 介紹
2.1.1 硬件
在對(duì)時(shí)鐘頻率進(jìn)行初始化之后,就可以使用存儲(chǔ)器控制器對(duì) SDRAM 進(jìn)行初始化了。
可以看看存儲(chǔ)器控制器的映射表:
由圖上可以看出,S3C2440 可以接兩個(gè) SDRAM,一個(gè)起始地址是 0x30000000,一個(gè)是 0x38000000,分別由片選信號(hào) nGCS6 和 nGCS7 控制。
查看原理圖上的 SDRAM 控制電路:
使用的是 nGCS6,那么 SDRAM 的地址就是 0x30000000
2.1.2 寄存器
存儲(chǔ)器控制器涉及到的寄存器很多,具體看芯片手冊(cè)。
2.2 代碼編寫(xiě)
start.S 代碼中:
1 /** 5. 初始化 SDRAM */
2 mov ip, lr /** 保存當(dāng)前程序地址到 ip 寄存器 */
3 bl sdram_init /** 執(zhí)行 SDRAM 的初始化 */
4 mov lr, ip
跳轉(zhuǎn)到 sdram_init 標(biāo)簽中執(zhí)行
sdram_init.S,這里是使用的 uboot 中的源碼。
1 /** =============== BWSCON: 地址 0x48000000 總線寬度和等待控制寄存器 ================ */
2 #define BWSCON 0x48000000
3
4 /* DW:數(shù)據(jù)總線寬度數(shù)據(jù)定義 */
5 #define DW8 (0x0) /** 8 位數(shù)據(jù)總線寬度 */
6 #define DW16 (0x1) /** 16 位數(shù)據(jù)總線寬度 */
7 #define DW32 (0x2) /** 32 位數(shù)據(jù)總線寬度 */
8
9 /* WS: wait 狀態(tài) */
10 #define WAIT (0x1<<2) /** 開(kāi)啟 BANK 的 WAIT 功能 */
11
12 /* ST: 是否使用 使用 UB/LB */
13 #define UBLB (0x1<<3) /** BANK 使用 UB/LB */
14
15 #define B1_BWSCON (DW32) /** BANK1 的總線位寬設(shè)置 32 位 */
16 #define B2_BWSCON (DW16) /** BANK2 的總線位寬設(shè)置 16 位 */
17 #define B3_BWSCON (DW16 + WAIT + UBLB) /** BANK3 的總線位寬設(shè)置 16 位,使能 WAIT 和 UB/LB */
18 #define B4_BWSCON (DW16) /** BANK4 的總線位寬設(shè)置 16 位 */
19 #define B5_BWSCON (DW16) /** BANK5 的總線位寬設(shè)置 16 位 */
20 #define B6_BWSCON (DW32) /** BANK6 的總線位寬設(shè)置 32 位 */
21 #define B7_BWSCON (DW32) /** BANK7 的總線位寬設(shè)置 32 位 */
22
23 /** =================================== end BWSCON =============================== */
24
25 /** =============== BANK0CON: 地址 0x48000004 BANK0 控制寄存器 ===================== */
26 #define B0_Tacs 0x0 /* 0clk */
27 #define B0_Tcos 0x0 /* 0clk */
28 #define B0_Tacc 0x7 /* 14clk */
29 #define B0_Tcoh 0x0 /* 0clk */
30 #define B0_Tah 0x0 /* 0clk */
31 #define B0_Tacp 0x0
32 #define B0_PMC 0x0 /* normal */
33 /** =================================== end BANK0CON =============================== */
34
35 /** =============== BANK1CON: 地址 0x48000008 BANK1 控制寄存器 ===================== */
36 #define B1_Tacs 0x0 /* 0clk */
37 #define B1_Tcos 0x0 /* 0clk */
38 #define B1_Tacc 0x7 /* 14clk */
39 #define B1_Tcoh 0x0 /* 0clk */
40 #define B1_Tah 0x0 /* 0clk */
41 #define B1_Tacp 0x0
42 #define B1_PMC 0x0
43 /** =================================== end BANK1CON =============================== */
44
45 /** =============== BANK2CON: 地址 0x4800000C BANK2 控制寄存器 ===================== */
46 #define B2_Tacs 0x0
47 #define B2_Tcos 0x0
48 #define B2_Tacc 0x7
49 #define B2_Tcoh 0x0
50 #define B2_Tah 0x0
51 #define B2_Tacp 0x0
52 #define B2_PMC 0x0
53 /** =================================== end BANK2CON =============================== */
54
55 /** =============== BANK3CON: 地址 0x48000010 BANK3 控制寄存器 ===================== */
56 #define B3_Tacs 0x0 /* 0clk */
57 #define B3_Tcos 0x3 /* 4clk */
58 #define B3_Tacc 0x7 /* 14clk */
59 #define B3_Tcoh 0x1 /* 1clk */
60 #define B3_Tah 0x0 /* 0clk */
61 #define B3_Tacp 0x3 /* 6clk */
62 #define B3_PMC 0x0 /* normal */
63 /** =================================== end BANK3CON =============================== */
64
65 /** =============== BANK4CON: 地址 0x48000014 BANK4 控制寄存器 ===================== */
66 #define B4_Tacs 0x0 /* 0clk */
67 #define B4_Tcos 0x0 /* 0clk */
68 #define B4_Tacc 0x7 /* 14clk */
69 #define B4_Tcoh 0x0 /* 0clk */
70 #define B4_Tah 0x0 /* 0clk */
71 #define B4_Tacp 0x0
72 #define B4_PMC 0x0 /* normal */
73 /** =================================== end BANK4CON =============================== */
74
75 /** =============== BANK5CON: 地址 0x48000018 BANK5 控制寄存器 ===================== */
76 #define B5_Tacs 0x0 /* 0clk */
77 #define B5_Tcos 0x0 /* 0clk */
78 #define B5_Tacc 0x7 /* 14clk */
79 #define B5_Tcoh 0x0 /* 0clk */
80 #define B5_Tah 0x0 /* 0clk */
81 #define B5_Tacp 0x0
82 #define B5_PMC 0x0 /* normal */
83 /** =================================== end BANK5CON =============================== */
84
85 /** =============== BANK6CON: 地址 0x4800001C BANK6 控制寄存器 ===================== */
86 #define B6_MT 0x3 /* 配置BANK6的存器類型為 SDRAM */
87 #define B6_Trcd 0x1
88 #define B6_SCAN 0x1 /* 9bit */
89 /** =================================== end BANK6CON =============================== */
90
91 /** =============== BANK7CON: 地址 0x48000020 BANK7 控制寄存器 ===================== */
92 #define B7_MT 0x3 /* SDRAM */
93 #define B7_Trcd 0x1 /* RAS 到 CAS 的延遲為 3 個(gè)時(shí)鐘 */
94 #define B7_SCAN 0x1 /* 列地址數(shù)為 9bit */
95 /** =================================== end BANK7CON =============================== */
96
97 /** =============== REFRESH: 地址 0x48000024 BANK7 SDRAM 刷新控制寄存器 ===================== */
98 #define REFEN 0x1 /* SDRAM 刷新使能 */
99 #define TREFMD 0x0 /* SDRAM 刷新模式為 CBR/自動(dòng)刷新*/
100 #define Trp 0x0 /* SDRAM RAS 預(yù)充電時(shí)間 2 個(gè)時(shí)鐘 */
101 #define Trc 0x3 /* SDRAM 半行周期時(shí)間 7 個(gè)時(shí)鐘 */
102 #define Tchr 0x2 /* 3clk */
103 #define REFCNT 1113 /* SDRAM 刷新計(jì)數(shù)值, period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */
104 /** ======================================== end REFRESH ================================== */
105
106 .globl sdram_init
107 sdram_init:
108 /* memory control configuration */
109 /* make r0 relative the current location so that it */
110 /* reads SMRDATA out of FLASH rather than memory ! */
111 ldr r0, =SMRDATA /** 執(zhí)行 SMRDATA 函數(shù),對(duì)各個(gè)寄存器進(jìn)行配置 */
112 ldr r1, =CONFIG_SYS_TEXT_BASE /** CONFIG_SYS_TEXT_BASE 為 0 */
113 sub r0, r0, r1
114 ldr r1, =BWSCON /* Bus Width Status Controller */
115 add r2, r0, #13*4 /* 將SMRDATA這一塊地址賦值給r2中 */
116 0: /** 循環(huán)操作 */
117 ldr r3, [r0], #4
118 str r3, [r1], #4
119 cmp r2, r0
120 bne 0b /** 比較R2和R1,如果不相等,則跳回前面的 0 標(biāo)號(hào) */
上一篇:三、編寫(xiě) s3c24x0 的 bootloader——重定位(一)
下一篇:一、編寫(xiě) s3c24x0 的 bootloader——介紹、看門(mén)狗及時(shí)鐘設(shè)置
推薦閱讀最新更新時(shí)間:2025-06-07 23:42




- 熱門(mén)資源推薦
- 熱門(mén)放大器推薦
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 神經(jīng)形態(tài)芯片可能是革新機(jī)器人實(shí)時(shí)電機(jī)控制的未來(lái)
- 從三個(gè)方面理解ARM嵌入式系統(tǒng)
- 自動(dòng)報(bào)警 基于MCU的家庭防盜報(bào)警系統(tǒng)的設(shè)計(jì)
- 存儲(chǔ)控制器及其訪問(wèn)外設(shè)的原理
- 基于51系列單片機(jī)的智能照明控制系統(tǒng)設(shè)計(jì)方案
- 基于STM32的四旋翼飛行器控制系統(tǒng)
- 單片機(jī)應(yīng)用編程技巧解析
- 基于89C52的教室智能節(jié)能照明系統(tǒng)設(shè)計(jì)
- 一種新型的雨量光照傳感器的設(shè)計(jì)
- LTM4602HV 演示板、28V、6A 降壓模塊穩(wěn)壓器
- PCB書(shū)簽 尺子 卡片
- PeanutPI
- 平衡自行車+獨(dú)輪車
- AM1DR-1209SZ 9V 1 瓦 DC-DC 轉(zhuǎn)換器的典型應(yīng)用
- NCV33074ADR2G 直流耦合反相放大器最大輸出擺幅的典型應(yīng)用
- 【明日方舟】羅德島本艦主控板V6.2
- DC795A,使用 LT5527EUF 4.5V 至 5.25V 高線性下變頻混頻器的演示板
- XL4016可調(diào)恒壓恒流實(shí)驗(yàn)電源
- 帶內(nèi)部開(kāi)關(guān)的 PAM2863 2A LED 驅(qū)動(dòng)器的典型應(yīng)用
- 賽昉科技發(fā)布并開(kāi)源基于Yocto的昉·天樞Linux SDK
- 西安封鎖擾亂DRAM/NAND生產(chǎn) 價(jià)格跌幅縮小至8%
- 51單片機(jī)教程:數(shù)碼管動(dòng)態(tài)顯示(0~99999999)74hc138驅(qū)動(dòng)
- 瑞薩采用動(dòng)態(tài)電荷泵,突破MRAM寫(xiě)入瓶頸
- 3699元起,realme首款高端旗艦真我GT2 Pro發(fā)布
- 三相電壓不平衡的分析及辨別方法
- 數(shù)據(jù)中臺(tái)的價(jià)值兌現(xiàn) -- 孵化核心數(shù)據(jù)分析能力
- 用于示波器時(shí)基的觸發(fā)器選擇電路
- 蜂巢能源2025年試產(chǎn)半固態(tài)電池,2027年大批量供貨
- 激光雷達(dá)進(jìn)化論:RoboSense如何持續(xù)領(lǐng)跑?
- 法雷奧-全景顯示技術(shù) Panovision | 申報(bào)2025第七屆金輯獎(jiǎng)中國(guó)汽車新供應(yīng)鏈百?gòu)?qiáng)
- 公安部:目前我國(guó)市售汽車搭載的“智駕”系統(tǒng),都不具備“自動(dòng)駕駛”功能
- 德賽西威-旗艦級(jí)AI智能座艙域控制器 | 申報(bào)2025第七屆金輯獎(jiǎng)中國(guó)汽車新供應(yīng)鏈百?gòu)?qiáng)
- Mobileye推出駕駛員監(jiān)測(cè)系統(tǒng)(DMS)技術(shù) ,實(shí)現(xiàn)人與車輛協(xié)同駕駛
- 第三屆安富利汽車生態(tài)圈峰會(huì)盛大啟幕,雙城聯(lián)動(dòng)激發(fā)智慧出行產(chǎn)業(yè)新動(dòng)能
- Vicor Corporation 2025年第二季度財(cái)報(bào):專利訴訟和解推動(dòng)強(qiáng)勁增長(zhǎng)
- 智能底盤(pán)2.0競(jìng)賽,這家外資巨頭按下加速鍵
- GaN技術(shù)如何應(yīng)用到人形機(jī)器人執(zhí)行關(guān)節(jié)?
- 地平線新品將于29日發(fā)布,自動(dòng)駕駛芯片再創(chuàng)新
- 因?yàn)檫^(guò)高專利費(fèi),蘋(píng)果有可能退出英國(guó)手機(jī)市場(chǎng)
- 日本UNIST尋找鋰離子電池中的陽(yáng)離子替代物 以提升電池放電容量
- 中興通訊和證通股份簽署5G消息戰(zhàn)略合作協(xié)議
- 巴斯夫與保時(shí)捷聯(lián)合開(kāi)發(fā)用于電動(dòng)汽車的高性能鋰離子電池
- 小米神秘新機(jī)入網(wǎng):高通驍龍870加持 定位在中高端
- 首款驍龍898旗艦入網(wǎng):X2超大核加持、跑分可破百萬(wàn)
- 華為不放棄手機(jī)業(yè)務(wù) 徐直軍:未來(lái)會(huì)有新的5G手機(jī)
- iPhone 13 Pro Max榮獲DisplayMate最佳智能手機(jī)顯示屏獎(jiǎng)
- 美半導(dǎo)體政策遭韓國(guó)業(yè)界抗議:強(qiáng)行索機(jī)密數(shù)據(jù)“損人利己