u-boot
啟動**的第二階段 在
u-boot**啟動的
第二階段
,主要初始化一些與硬體相關的資訊
,比如串列埠
,lcd,flash,timer等。
這些硬體是根據自己的需要來初始化的
,過程如下
從這個圖中,可以看出第二階段的執行流程,裡面的函式也比較多。
**在lib_arm/board.c
(1) board_init
函式
01 int board_init (void)
02
這個函式主要是初始化開始板的資訊,比如mpll,一些gpio等,它還儲存了機器的id,及傳遞給kernel的引數位址。
(2)檢測記憶體對映
01 int dram_init (void)
02
第
3行為記憶體的開始位址
,這個要根據不同的開發板
,位址不相同
,mini2440
的為0x30000000. 第
4行為記憶體的大小
,這裡面為
0x400000000。
(3)nor flash
函式
01 ulong flash_init (void)
02 27 size += flash_info[i].size;
28 }
29 30 .........................
31 }
初始化函式
,主要是設定
nor flash
的大小,id,
每個扇區的開始位址等資訊
第10-12
行nor
flash的id
的初始化.
第16行設定nor
flash
的大小,
這裡面是
0x200000,
大小為2m
,根據自己開發板上
nor flash
的大小第
17行扇區的個數
,這個可以計算出來
,2m/4k=512 第
23-27
行分別設定每個扇區的起始位址
在對nor flash
的操作中
,除了這個函式,還有
flash_earse函式,
對flash
進行擦除.
(4)nand flash
初始化nand flash
初始化首先會呼叫
drivers/mtd/nand.c
中的nand_init函式,
在這個函式會呼叫
nand_itit_chip函式,
如果只有一塊
nand flash裝置,
只需要迴圈一次.在
nand_init_chip
函式中,
首先會把乙個
mtd的指標指向這個
nand
的位址,
然後對nand
的讀寫位址進行初始化。
01 int board_nand_init(struct nand_chip *nand)
02
第5行把
locktime
暫存器的位址賦給
clk_power指標第
11-14
行對nand flash
的時序進行初始化
.可以查手冊,設定
twrph0=4, twrph1 = 2; tacls = 0;
分別是twrph0=5
個hclk
時鐘,twrph1等於3
個hclk
時鐘,tacls=1
個時鐘週期.對於
s3c2440
的開發板
,還要設定
nfcont,
主要是使能
nand flash
等一些資訊。 第
20行設定
nand flash
的讀寫位址
,0x4e000010
這個位址是
nfdata
暫存器的位址
第22-24
行是對nand flash
結構體中的兩個函式指標初始化.
uboot啟動流程概述 uboot啟動流程
u boot系統啟動流程 大多數bootloader都分為stage1和stage2兩大部分,u boot也不例外。依賴於cpu體系結構的 如裝置初始化 等 通常都放在stage1,且可以用組合語言來實現,而stage2則通常用c語言來實現,這樣可以實現複雜的功能,而且有更好的可讀性和移植性。2.1...
u boot啟動流程
uboot啟動流程分析 華清遠見嵌入式學院講師。uboot是嵌入式系統中最常用的bootloader,這裡我們以s3c2410為例分析一下uboot的啟動流程。首先通過uboot的鏈結檔案,我們可以看到uboot執行是執行的第一段 在start.s中。entry start sections ali...
uboot啟動流程
華清遠見嵌入式學院 講師。uboot是嵌入式系統中最常用的bootloader,這裡我們以s3c2410為例分析一下uboot的啟動流程。首先通過uboot的鏈結檔案,我們可以看到uboot執行是執行的第一段 在start.s中。entry start sections align 4 rodata...