vivi的第二階段

2021-06-16 23:36:54 字數 2814 閱讀 7591

vivi

的第二階段

vivi

的第二階段是從

main

()函式開始,同一般的

c語言程式一樣,該函式在

/init/main.c

檔案中,總共可以分為

8個步驟。(1

)函式開始,通過

putstr(vivi_banner)

列印出vivi

的版本。

vivi_banner

在/init/version.c

檔案中定義(2

)對開發板進行初始化(

board_init

函式),

board_init

是與開發板緊密相關的,這個函式在

/arch/s

3c2410/smdk.c

檔案中。開發板初始化主要完成兩個功能,時鐘初始化(

init_time()

)和通用

io口設定(

set_gpios()

)。注意這裡

vgpxcon中的v

表示value

,ogpxcon中的o

表示offset

void set_gpios(void)

其中,gpio

口在smdk2410.h

(\vivi\include\platform\

目錄下)檔案中定義。(3

)記憶體對映初始化和記憶體管理單元的初始化工作:

mem_map_init();

mmu_init();

這兩個函式都在

/arch/s

3c2410/mmu.c

檔案中。

void mem_map_init(void)

如果配置

vivi

時使用了

nand

作為啟動裝置,則執行

mem_map_nand_boot()

,否則執行

mem_map_nor()

。這裡要注意的是,如果使用

nor啟動,則必須先把

vivi

**複製到

ram中。這個過程是由

copy_vivi_to_ram()

函式來完成的。**如下:

static void copy_vivi_to_ram(void)

vivi_ram_base

、vivi_rom_base

、vivi_ram_size

這些值都可以在

smdk2410.h

中查到,並且這些值必須根據自己開發板的

ram實際大小修改。這也是在移植

vivi

的過程中需要注意的乙個地方。

mmu_init()

函式中執行了

arm920_setup

函式。這段**是用組合語言實現的,針對

arm920t

核的處理器。(4

)初始化堆疊,

heap_init()

。(定義在

\vivi\lib\heap.c

檔案中)

int heap_init(void)(5

)初始化

mtd裝置,

mtd_dev_init()

。int mtd_init(void)

return 0; }

這幾個函式可以在

/drivers/mtd/maps/s

3c2410_flash.c

裡找到。(6

)初始化私有資料,

init_priv_data()

。(定義在

\vivi\lib\priv_data\rw.c

檔案中)

此部分的功能是把

vivi

可能用到的所有私有引數都放在預先規劃的記憶體區域,大小為

48k,基位址為

0x33df0000

。在記憶體的分配示意圖方面,可以參考《

s

3c2410

完全開發》,到此為止,

vivi

作為bootloader

的三大核心任務:

initialise various devices, and eventually call the linux kernel,passing information to the kernel.

,現在只是完成第一方面的工作,裝置初始化基本完成,實際上

step 6

是為啟動

linux

核心和傳遞引數做準備的,把

vivi

的私有資訊,核心啟動引數,

mtd分割槽資訊等都放到特定的記憶體區域,等待後面兩個重要工作使用(在

step 8

完成,後面的

step 7

也是為step 8

服務的)。

這48k

區域分為三個組成部分:

mtd引數、

vivi parameter

、linux

啟動命令。(7

)初始化內建命令,

init_builtin_cmds()。通過

add_command

函式,載入

vivi

內建的幾個命令。(8

)啟動boot_or_vivi()

。啟動成功後,將通過

vivi_shell()

啟動乙個

shell

(如果配置了

config_serial_term

),此時

vivi

的任務完成。

0 給主人留下些什麼吧!~~

第二階段小結

資料結構基本概念 資料 資料即資訊的載體,是能夠輸入到計算機中並且能被計算機識別,儲存和處理的符號總稱 資料元素 資料元素是資料的基本單位,又稱之為記錄。一般,資料元素由若干基本項 字段,域,屬性 組成。資料結構 資料結構指的是資料元素及資料元素之間的相互關係,或組織資料的形式 資料之間的結構關係 ...

第二階段小結

先是pta上的作業 這題要求我們熟練的掌握類之間的繼承與多型的使用,在類與類之間傳遞資訊時不能弄混,要弄清楚單一職責原則。這一題主要考察繼承與多型,泛型容器的應用。接下來是學習通上的課後作業 第乙個是單向鍊錶 單向鍊錶由乙個個的節點組成,這些節點都帶有下乙個節點的引用,最後乙個節點指向null,這樣...

Bete衝刺第二階段

web 修復了a版本中介面資料返回錯誤的問題。通知對資料表新增了幾個字段。並且新增了乙個通知查詢的介面。ios 修正網路連線bug 招募功能介面完成但是跳轉問題正在解決 web bug是解決可以一步一步摳好,查查資料也就解決了。晚上手殘,在eclipse的行數條上不小心設了個斷點,導致啟動tomca...