重定位之前,要將 flash 初始化,flash 的初始化分為 norflash 和 nandflash,norflash 不用初始化,所以不用做任何操作
3.1 nandflash 初始化
在 nandflash 初始化之前,需要設(shè)置棧:
1 /** 6. 重定位:把 bootloader 本身的代碼從flash 復(fù)制到它的鏈接地址中 */
2 /** copy_code_to_sdram 用 C語言寫,需要先設(shè)置棧 */
3 ldr sp, =0x34000000 /** 棧指向 SDRAM 的頂端 */
進(jìn)入初始化:
1 bl nand_init
nandflash 初始化需要注意兩個內(nèi)容,一個是 s3c2440 手冊的第 6 章 nandflash 控制器,一個是 nandflash 的芯片手冊。
3.1.1 寄存器 NFCONF
要注意兩個寄存器,是初始化需要操作的:
注意圖中標(biāo)記的三個寄存器參數(shù),這三個參數(shù)與 nandflash 控制器的時序有關(guān):
發(fā)出 CLE/ALE 之后,一個寫信號 nWE 需要多久變?yōu)?a href="http://www.nncyjs.com/zhuanti/qXzvTS" style="color:#4595e6;" target="_blank">低電平,nWE 變?yōu)榈碗娖胶螅珻LE/ALE 又需要保存多長時間才能變?yōu)榈碗娖健?p>nWE 中的低電平為 /WE 中的 twp 處位置,為寫信號的脈沖寬度,最小為 12 ns,最小值都是通過 nandflash 手冊得到的,如下:
HCLK * (TWRPH0 + 1) >= 12ns
自己設(shè)置的時鐘FCLK(CPU主頻是 400MHZ),分頻比是 FCLK: HCLK: PCLK = 1:4:8,那么 HCLK 是100MHZ,即為10ns;則 10 * (TWRPH0 + 1) >= 12,TWRPH0 >= 0.2,那么 TWRPH0 可以設(shè)置為 1。
發(fā)出 CLE 和 ALE 之后,過多少時間才能發(fā)出寫信號?time = tcls - twp >= 0,這里說明 CLE 信號和 WE 信號可以同時發(fā)出,那么可以將 TACLS 時間設(shè)置為 0,即發(fā)出 CLE 后,立即發(fā)出寫信號。
TWRPH1 表示寫信號變?yōu)?a href="http://www.nncyjs.com/zhuanti/qbnP0C" style="color:#4595e6;" target="_blank">高電平之后,CLE 和 ALE 還需要維持多長時間,從 nandflash 時序圖和手冊,可以知道 tclh >= 5ns,則 10 * (TWRPH1 + 1) >= 5,則 TWRPH1 >= 0。
3.1.2 寄存器 NFCONT
這個寄存器需要設(shè)置 MODE(NAND Flash 控制器運行模式),要使能 nandflash;Reg_nCE(NAND Flash 存儲器的 nFCE 信號控制),我們是引導(dǎo)期間,所以要使能片選;InitECC,雖然在引導(dǎo)期間不會使用 ECC,但是也要進(jìn)行 ECC 初始化。
3.1.3 初始化代碼
1 void nand_init(void)
2 {
3 #define TACLS 0
4 #define TWRPH0 1
5 #define TWRPH1 0
6
7 /** 設(shè)置時序 */
8 NFCONF = (TACLS << 12) | (TWRPH0 << 8) | (TWRPH1 << 4);
9 /** 使能 NND Flash 控制器, 初始化 ECC, 禁止片選 */
10 NFCONT = (1 << 4) | (1 << 1) | (1 << 0);
11 }
上一篇:GCC編譯器原理(一)------交叉編譯器制作和GCC組件及命令
下一篇:二、編寫 s3c24x0 的 bootloader——SDRAM 設(shè)置
推薦閱讀最新更新時間:2025-06-13 06:02




設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- AM1D-1515S-RZ 15V 1 瓦 DC/DC 轉(zhuǎn)換器的典型應(yīng)用
- 【涂鴉智能】寵物喂食器&智能貓屋【未完成】
- 使用 ON Semiconductor 的 ADP1148 的參考設(shè)計
- ADR391B 2.5 Vout 微功率、低噪聲精密電壓基準(zhǔn)的典型應(yīng)用
- LTC2260-12 演示板,12 位 105Msps ADC,LVDS 輸出,5-170MHz
- DC528A,LTC1740 演示板,14 位 6 MSPS ADC
- DT-USB5734,使用USB5734 4端口USB-C/USB-3集線器的開發(fā)板,帶電池充電和串口
- 【課程設(shè)計】超小型紅外開機卡
- AHT10
- EV-AD74412RSDZ,用于評估 AD74412R 四通道、軟件可配置輸入/輸出的評估套件
- 為什么電源紋波測試結(jié)果與理論設(shè)計如此之大?
- UWB信標(biāo)與LoRa基站網(wǎng)關(guān)數(shù)據(jù)區(qū)別在哪里?
- 什么是AI 同傳技術(shù)
- 人工智能處理器和加速器到底是什么?
- PWM控制(脈沖寬度調(diào)制)的基本原理是什么
- 如何設(shè)計帶集成運放構(gòu)成的方波發(fā)生器
- DSP調(diào)度算法的基本概念和原理
- 什么是集成動力總成? 集成動力總成的優(yōu)勢在哪里
- 鐵威馬 D5/D8 Hybrid:精準(zhǔn)擴容時代的“5+8”雙引擎
- MOMAX摩米士堅守品質(zhì)承諾,移動電源符合國家 CCC 認(rèn)證及航空UN38.3安全標(biāo)準(zhǔn)
- 蘇黎世大學(xué)Rolf Pfeifer:機器人將與人類一起見證未來
- 能源互聯(lián)網(wǎng)下的多能互補綜合能量管理
- 電動汽車車聯(lián)網(wǎng) 世界因你更精彩
- 電話自動營銷你見過嗎?對的,它是智能電銷機器人
- 會寒暄 會引導(dǎo) 會記錄 智能外呼器人初體驗
- 金信諾:密切跟蹤6G技術(shù),在衛(wèi)星和毫米波領(lǐng)域有儲備工作
- 蘋果審查非理性高價App;山東黃金董事長入圍院士候選者
- 小米長江產(chǎn)業(yè)基金入股長晶科技-半導(dǎo)體芯片開發(fā)公司
- 擴大生產(chǎn)進(jìn)行時,中芯紹興工人已增長到1700人
- 指控Siri竊聽用戶對話 針對蘋果公司的集體訴訟被駁回了