




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 Bootloader技術(shù)分析技術(shù)分析嵌入式軟件系統(tǒng)嵌入式軟件系統(tǒng) n嵌入式操作系統(tǒng)已經(jīng)得到廣泛應(yīng)用嵌入式操作系統(tǒng)已經(jīng)得到廣泛應(yīng)用 n帶操作系統(tǒng)的嵌入式軟件體系一般分為:帶操作系統(tǒng)的嵌入式軟件體系一般分為:1.引導(dǎo)加載程序引導(dǎo)加載程序 2.操作系統(tǒng)內(nèi)核操作系統(tǒng)內(nèi)核 3.文件系統(tǒng)(可選)文件系統(tǒng)(可選) 4.用戶應(yīng)用程序用戶應(yīng)用程序 PC 機(jī)的引導(dǎo)加載程序機(jī)的引導(dǎo)加載程序 nBIOS+MBR 1.BIOS的本質(zhì)是一段固件程序(的本質(zhì)是一段固件程序(Firmware) 2.MBR (master boot record主引導(dǎo)記錄)是磁主引導(dǎo)記錄)是磁盤上的一段分區(qū),位于磁盤的第一個扇區(qū),大小盤上的
2、一段分區(qū),位于磁盤的第一個扇區(qū),大小為為512B,包含了磁盤的分區(qū)信息以及系統(tǒng)引導(dǎo),包含了磁盤的分區(qū)信息以及系統(tǒng)引導(dǎo)代碼,在單一的代碼,在單一的 MBR 中只能存儲一個操作系統(tǒng)中只能存儲一個操作系統(tǒng)的引導(dǎo)記錄,當(dāng)需要多個操作系統(tǒng)時就會出現(xiàn)問的引導(dǎo)記錄,當(dāng)需要多個操作系統(tǒng)時就會出現(xiàn)問題,需要更靈活的引導(dǎo)加載程序,比如題,需要更靈活的引導(dǎo)加載程序,比如Lilo和和Grub 。PC 機(jī)的引導(dǎo)加載程序機(jī)的引導(dǎo)加載程序n主引導(dǎo)記錄本身要包含兩類內(nèi)容主引導(dǎo)記錄本身要包含兩類內(nèi)容 部分部分(或全部)引導(dǎo)加載程序以及分區(qū)表(其中(或全部)引導(dǎo)加載程序以及分區(qū)表(其中包含有關(guān)于介質(zhì)其余部分如何劃分為分區(qū)的包含有
3、關(guān)于介質(zhì)其余部分如何劃分為分區(qū)的信息)。信息)。n當(dāng)當(dāng) BIOS 引導(dǎo)時,它會尋找硬盤驅(qū)動器第一引導(dǎo)時,它會尋找硬盤驅(qū)動器第一個扇區(qū)(個扇區(qū)(MBR)中存儲的數(shù)據(jù);)中存儲的數(shù)據(jù);BIOS 使用使用存儲在存儲在 MBR 中的數(shù)據(jù)激活引導(dǎo)加載程序。中的數(shù)據(jù)激活引導(dǎo)加載程序。 PC 機(jī)的引導(dǎo)加載程序機(jī)的引導(dǎo)加載程序n由于由于BIOS只能訪問很少量的數(shù)據(jù),所以大部分引導(dǎo)只能訪問很少量的數(shù)據(jù),所以大部分引導(dǎo)加載程序分兩個階段進(jìn)行引導(dǎo)。在引導(dǎo)的第一個階加載程序分兩個階段進(jìn)行引導(dǎo)。在引導(dǎo)的第一個階段中,段中,BIOS引導(dǎo)一部分引導(dǎo)加載程序,即引導(dǎo)一部分引導(dǎo)加載程序,即初始程序初始程序加載程序加載程序(in
4、itial program loader,IPL)。)。IPL 查詢分區(qū)表,從而能夠加載位于不同介質(zhì)上任意位查詢分區(qū)表,從而能夠加載位于不同介質(zhì)上任意位置的數(shù)據(jù)。通過這步操作來定位第二階段引導(dǎo)加載置的數(shù)據(jù)。通過這步操作來定位第二階段引導(dǎo)加載程序(其中包含加載程序的其余部分)。程序(其中包含加載程序的其余部分)。 n第二階段引導(dǎo)加載程序是引導(dǎo)加載程序的主體,很第二階段引導(dǎo)加載程序是引導(dǎo)加載程序的主體,很多人認(rèn)為這才是引導(dǎo)加載程序的真正部分。它包含多人認(rèn)為這才是引導(dǎo)加載程序的真正部分。它包含有加載程序更需要磁盤空間的部分,比如用戶界面有加載程序更需要磁盤空間的部分,比如用戶界面和內(nèi)核引導(dǎo)程序。從簡
5、單的命令行到繪聲繪色的和內(nèi)核引導(dǎo)程序。從簡單的命令行到繪聲繪色的 GUI,這些用戶界面的范圍很廣泛。,這些用戶界面的范圍很廣泛。 PC 機(jī)的引導(dǎo)加載程序機(jī)的引導(dǎo)加載程序n引導(dǎo)加載程序通常配置為兩種方式之一:要么是作為主引導(dǎo)加載程序通常配置為兩種方式之一:要么是作為主引導(dǎo)加載程序(引導(dǎo)加載程序(primary boot loader),要么是作為),要么是作為二級引導(dǎo)加載程序(二級引導(dǎo)加載程序(secondary boot loader)。主引)。主引導(dǎo)程序是安裝在導(dǎo)程序是安裝在 MBR上的第一階段引導(dǎo)加載程序(見上的第一階段引導(dǎo)加載程序(見先前的描述)。二級引導(dǎo)加載程序先前的描述)。二級引導(dǎo)加
6、載程序 是安裝在可引導(dǎo)分區(qū)是安裝在可引導(dǎo)分區(qū)的第一階段引導(dǎo)加載程序,必須在的第一階段引導(dǎo)加載程序,必須在 MBR 上安裝單獨的上安裝單獨的引導(dǎo)加載程序,并配置它將控制權(quán)轉(zhuǎn)交給二級引導(dǎo)加載引導(dǎo)加載程序,并配置它將控制權(quán)轉(zhuǎn)交給二級引導(dǎo)加載程序。程序。 n很多很多Linux引導(dǎo)加載程序特別實用,因為它們提供了不引導(dǎo)加載程序特別實用,因為它們提供了不同程度的交互,比如高級的同程度的交互,比如高級的 GUI 和加密的口令,以及和加密的口令,以及通過選擇操作系統(tǒng)進(jìn)行引導(dǎo)的能力。這樣,可以在具有通過選擇操作系統(tǒng)進(jìn)行引導(dǎo)的能力。這樣,可以在具有多個物理磁盤的同一機(jī)器上共存多個操作系統(tǒng),只使用多個物理磁盤的同一
7、機(jī)器上共存多個操作系統(tǒng),只使用一臺機(jī)器就可同時擁有一臺機(jī)器就可同時擁有Linux和和Windows。 PC 機(jī)的引導(dǎo)加載程序機(jī)的引導(dǎo)加載程序nGRUB 和和 LILO 是在基于是在基于Intel的系統(tǒng)上引導(dǎo)的系統(tǒng)上引導(dǎo)Linux最常用的方法。作為操作系統(tǒng)裝載程序,它們僅使最常用的方法。作為操作系統(tǒng)裝載程序,它們僅使用在計算機(jī)硬件中內(nèi)建的基本用在計算機(jī)硬件中內(nèi)建的基本 I/O 系統(tǒng)(或系統(tǒng)(或 BIOS)。)。n在多數(shù)基于在多數(shù)基于 Intel 的計算機(jī)中,的計算機(jī)中,GRUB 和和 LILO 要要接受由接受由 BIOS 所強加的限制。例如,多數(shù)所強加的限制。例如,多數(shù) BIOSes 無法進(jìn)入兩
8、個以上的硬盤,而且它們無法訪問任一無法進(jìn)入兩個以上的硬盤,而且它們無法訪問任一驅(qū)動器上在超越柱面驅(qū)動器上在超越柱面 1023 以上所貯存的數(shù)據(jù)。值以上所貯存的數(shù)據(jù)。值得注意的是,某些新的得注意的是,某些新的 BIOSes 沒有這些限制。沒有這些限制。 PC 機(jī)的引導(dǎo)加載程序機(jī)的引導(dǎo)加載程序n所有所有 GRUB 和和 LILO 需要在引導(dǎo)期間訪問的數(shù)據(jù)需要在引導(dǎo)期間訪問的數(shù)據(jù) (包括(包括 Linux 內(nèi)核)內(nèi)核)位于位于 /boot 目錄中。目錄中。/boot 目錄既可以是一個單獨的小分區(qū),也可能會目錄既可以是一個單獨的小分區(qū),也可能會駐留在根分區(qū)駐留在根分區(qū) (/)上。上。 在任一情況下,如
9、果要使用在任一情況下,如果要使用 GRUB 或或 LILO 來引來引導(dǎo)導(dǎo)Linux系統(tǒng),系統(tǒng), /boot 所駐留的分區(qū)一定要遵守以下條例:所駐留的分區(qū)一定要遵守以下條例: n1)在前兩個)在前兩個IDE 驅(qū)動器上:如果有兩個驅(qū)動器上:如果有兩個IDE(或(或 EIDE)驅(qū)動器,)驅(qū)動器, /boot 必須要位于其中之一,必須要位于其中之一, 兩個驅(qū)動器的限制也包括任何在主兩個驅(qū)動器的限制也包括任何在主IDE控控制器上的制器上的IDE光盤驅(qū)動器。因此,如果在主控制器上有一個光盤驅(qū)動器。因此,如果在主控制器上有一個 IDE 硬盤,硬盤,和一個光盤驅(qū)動器,和一個光盤驅(qū)動器, /boot 必須僅能位
10、于第一個硬盤,即便你在次必須僅能位于第一個硬盤,即便你在次IDE控制器上另有硬盤??刂破魃狭碛杏脖P。 n2)在第一個)在第一個 IDE 或第一個或第一個 SCSI 驅(qū)動器上:如果你有一個驅(qū)動器上:如果你有一個 IDE(或(或 EIDE)驅(qū)動器以及一個或更多)驅(qū)動器以及一個或更多 SCSI 驅(qū)動器,驅(qū)動器,/boot 必須位于必須位于IDE 驅(qū)動驅(qū)動器上或器上或 ID 為為 0 的的 SCSI 驅(qū)動器上。驅(qū)動器上。n3)在前兩個)在前兩個 SCSI 驅(qū)動器上:如果你只有驅(qū)動器上:如果你只有 SCSI 硬盤,硬盤,/boot 必須位于必須位于 ID 為為 0 或或 1 的驅(qū)動器上。的驅(qū)動器上。n4
11、)分區(qū)完全在柱面)分區(qū)完全在柱面 1023 之下:無論是以上哪一種配置,容有之下:無論是以上哪一種配置,容有 /boot 的分區(qū)必須要全部位于柱面的分區(qū)必須要全部位于柱面 1023 之下。如果容有之下。如果容有 /boot 的分區(qū)位于柱的分區(qū)位于柱面面 1023 的兩側(cè),所面對的情形可能是,的兩側(cè),所面對的情形可能是,GRUB 和和 LILO 最初會起作用最初會起作用 (因為所有必需的信息都位于柱面(因為所有必需的信息都位于柱面 1023 之下),之下), 但是如果一個新內(nèi)核但是如果一個新內(nèi)核被載入后駐留在柱面被載入后駐留在柱面 1023 之上的話,它們將會失敗。之上的話,它們將會失敗。 PC
12、 機(jī)的機(jī)的Linux引導(dǎo)加載過程引導(dǎo)加載過程 n啟動過程啟動過程 1.BIOS完成硬件檢測、資源分配,然后將引導(dǎo)代完成硬件檢測、資源分配,然后將引導(dǎo)代碼(碼(512B)讀入內(nèi)存)讀入內(nèi)存0 x7c00中,然后跳轉(zhuǎn)到中,然后跳轉(zhuǎn)到0 x7c00運行運行(將將CPU控制權(quán)交給引導(dǎo)程序控制權(quán)交給引導(dǎo)程序) 2.引導(dǎo)代碼將自己搬移到引導(dǎo)代碼將自己搬移到0 x90000,再跳轉(zhuǎn)到該,再跳轉(zhuǎn)到該地址執(zhí)行,然后將磁盤上的地址執(zhí)行,然后將磁盤上的setup和內(nèi)核映像讀和內(nèi)核映像讀入內(nèi)存入內(nèi)存0 x90200,并跳轉(zhuǎn)到,并跳轉(zhuǎn)到setup運行運行 3.在在setup中完成處理器設(shè)置、解壓縮等操作,將中完成處理器
13、設(shè)置、解壓縮等操作,將內(nèi)核解壓到一個固定地址,然后跳轉(zhuǎn)到此地址運內(nèi)核解壓到一個固定地址,然后跳轉(zhuǎn)到此地址運行,從而進(jìn)入到內(nèi)核初始化過程行,從而進(jìn)入到內(nèi)核初始化過程 嵌入式系統(tǒng)中的引導(dǎo)程序嵌入式系統(tǒng)中的引導(dǎo)程序 n一般嵌入式系統(tǒng)沒有一般嵌入式系統(tǒng)沒有BIOS n引導(dǎo)程序被稱為引導(dǎo)程序被稱為Bootloader n引導(dǎo)程序完成硬件檢測、資源分配和操作引導(dǎo)程序完成硬件檢測、資源分配和操作系統(tǒng)內(nèi)核的引導(dǎo)(拷貝系統(tǒng)內(nèi)核的引導(dǎo)(拷貝+跳轉(zhuǎn))跳轉(zhuǎn))nBootloader還需要完成映像下載、還需要完成映像下載、flash燒寫、代碼調(diào)試等功能燒寫、代碼調(diào)試等功能n常用的開源常用的開源Bootloader有有u-
14、boot、Blob、redboot、vivi等等 Bootloader的特點的特點 n與硬件關(guān)系密切與硬件關(guān)系密切 1.與具體與具體CPU類型有關(guān)類型有關(guān) 2.與系統(tǒng)的具體硬件實現(xiàn)(電路板)有關(guān)與系統(tǒng)的具體硬件實現(xiàn)(電路板)有關(guān) n與具體操作系統(tǒng)無關(guān)與具體操作系統(tǒng)無關(guān) n通常保存在某種被映射到通常保存在某種被映射到CPU某個指定地某個指定地址(一般為址(一般為0 x00,reset的入口地址)的的入口地址)的固態(tài)存儲器中固態(tài)存儲器中 n一旦系統(tǒng)開始運行,一旦系統(tǒng)開始運行,Bootloader便不再起便不再起作用作用 Bootloader的特點的特點 nBootloader啟動可以是單階段或多階
15、段,代啟動可以是單階段或多階段,代碼可以都在碼可以都在flash中運行,或者一部分在中運行,或者一部分在flash中運行,另一部分在中運行,另一部分在ram中運行中運行 n一般一般bootloader至少有一部分在至少有一部分在flash中運行,中運行,但有少數(shù)例外(需要處理器支持)但有少數(shù)例外(需要處理器支持)n一般一般bootloader有有“引導(dǎo)引導(dǎo)”和和“下載下載”兩種兩種工作模式工作模式 n還需要支持與主機(jī)(還需要支持與主機(jī)(Host)之間的通信,一)之間的通信,一般為串口般為串口 采用兩級啟動方式的采用兩級啟動方式的Bootloader nStage1:主要完成一些依賴于處理器體系
16、主要完成一些依賴于處理器體系結(jié)構(gòu)的任務(wù),通常用匯編語言完成結(jié)構(gòu)的任務(wù),通常用匯編語言完成 1.硬件設(shè)備初始化硬件設(shè)備初始化 2.為加載為加載stage2準(zhǔn)備準(zhǔn)備RAM空間空間 3.將將stage2代碼復(fù)制到代碼復(fù)制到RAM空間,并設(shè)置堆空間,并設(shè)置堆棧棧 4.跳轉(zhuǎn)到跳轉(zhuǎn)到stage2的代碼入口的代碼入口 采用兩級啟動方式的采用兩級啟動方式的Bootloader nStage2:完成諸如命令處理等更加復(fù)雜的完成諸如命令處理等更加復(fù)雜的功能,通常用功能,通常用C語言完成語言完成 1.初始化本階段需要用到的其他硬件設(shè)備初始化本階段需要用到的其他硬件設(shè)備 2.準(zhǔn)備系統(tǒng)內(nèi)存映射準(zhǔn)備系統(tǒng)內(nèi)存映射 3.將操
17、作系統(tǒng)內(nèi)核從將操作系統(tǒng)內(nèi)核從Flash中搬移到中搬移到RAM中中 4.為內(nèi)核設(shè)置啟動參數(shù)為內(nèi)核設(shè)置啟動參數(shù) 5.調(diào)用內(nèi)核入口函數(shù)調(diào)用內(nèi)核入口函數(shù) Bootloader結(jié)構(gòu)結(jié)構(gòu) n處理器啟動初始化代碼及中斷向量表處理器啟動初始化代碼及中斷向量表 n必要的設(shè)備管理機(jī)制和驅(qū)動函數(shù)必要的設(shè)備管理機(jī)制和驅(qū)動函數(shù) n對傳輸協(xié)議的支持對傳輸協(xié)議的支持 由于需要完成由于需要完成“下載下載”功能,需要同主機(jī)功能,需要同主機(jī)之間進(jìn)行文件傳輸,所以需要支持至少某之間進(jìn)行文件傳輸,所以需要支持至少某種文件傳輸協(xié)議和相應(yīng)的驅(qū)動程序,一般種文件傳輸協(xié)議和相應(yīng)的驅(qū)動程序,一般通過串口,需要支持通過串口,需要支持xmodem
18、/ymodem/zmodem等,當(dāng)然等,當(dāng)然通過網(wǎng)絡(luò)是一個更好的選擇通過網(wǎng)絡(luò)是一個更好的選擇 Bootloader結(jié)構(gòu)結(jié)構(gòu) n由于由于bootloader在工作過程中(尤其是調(diào)在工作過程中(尤其是調(diào)試階段)需要與開發(fā)者進(jìn)行交互,所以提試階段)需要與開發(fā)者進(jìn)行交互,所以提供一個用戶界面是必要的,通常通過串口供一個用戶界面是必要的,通常通過串口終端的方式來完成終端的方式來完成 n有些有些bootloader支持壓縮格式,也就是說支持壓縮格式,也就是說可以在拷貝代碼的過程中進(jìn)行解壓操作可以在拷貝代碼的過程中進(jìn)行解壓操作 Bootloader代碼結(jié)構(gòu)代碼結(jié)構(gòu) n一般的一般的Bootloader的結(jié)構(gòu)分
19、成:的結(jié)構(gòu)分成: 1.目標(biāo)處理器相關(guān)代碼,一般目標(biāo)處理器相關(guān)代碼,一般stage1的入口的入口代碼在此目錄中代碼在此目錄中 2.目標(biāo)板相關(guān)代碼,一般目標(biāo)板相關(guān)代碼,一般stage2的入口代碼的入口代碼在此目錄中在此目錄中 3.驅(qū)動代碼,包括串口、網(wǎng)絡(luò)、驅(qū)動代碼,包括串口、網(wǎng)絡(luò)、USB、以及、以及ROM操作驅(qū)動操作驅(qū)動 4.命令處理代碼命令處理代碼 5.其他代碼其他代碼 Bootloader vivi nMizi 為為 Samsung 的的 ARM開發(fā)板提供的一開發(fā)板提供的一種種ARM bootloader n支持支持autoboot模式和模式和prompt模式模式 n支持支持xmodem文件傳
20、輸文件傳輸 n提供提供flash的操作功能,以及的操作功能,以及l(fā)oad、part、param、boot等命令等命令 Vivi代碼結(jié)構(gòu)代碼結(jié)構(gòu) nArch:包含:包含vivi支持的處支持的處理器理器 nDrivers:包含了包含了MTD和串和串口驅(qū)動程序口驅(qū)動程序 n Init:包含:包含main程序,程序,stage2的入口點的入口點 nLib:與平臺無關(guān)的公共:與平臺無關(guān)的公共的代碼,比如的代碼,比如memory操操作、命令操作等作、命令操作等nInclude:所有頭文件所有頭文件 目標(biāo)板配置目標(biāo)板配置 n處理器:處理器:samsung S3C2410X(ARM920T) n32M Nan
21、dFlash,用作用作Boot n64M SDRAM,地址,地址范圍范圍0 x300000000 x33ffffff S3C2410不同不同boot方式的內(nèi)存映射方式的內(nèi)存映射 從從NandFlash啟動的啟動的2410 nS3c2410內(nèi)置內(nèi)置NandFlash控制器,支持控制器,支持NandFlash boot模式模式 n在在NandFlash boot時,系統(tǒng)自動拷貝時,系統(tǒng)自動拷貝NandFlash最初最初4K的代碼到片內(nèi)的代碼到片內(nèi)sram中中作為啟動代碼作為啟動代碼 n前前4K代碼完成代碼完成stage1的工作的工作 代碼在存儲區(qū)中的位置代碼在存儲區(qū)中的位置 Vivi的存儲器區(qū)域的
22、存儲器區(qū)域_ROM n VIVI_ROM_BASE: 1.使用使用Bon分區(qū),起始區(qū)域保存分區(qū),起始區(qū)域保存vivi代碼,然代碼,然后是后是Kernel和和rootfs映像,除映像,除vivi起始為起始為VIVI_ROM_BASE外,其他的起始地址可外,其他的起始地址可變變nVIVI_PRIV_ROM_BASE: 1.保存保存Bon分區(qū)表分區(qū)表 2.Vivi參數(shù)表參數(shù)表 3. linux系統(tǒng)啟動參數(shù)(系統(tǒng)啟動參數(shù)(commandline) Vivi的存儲器區(qū)域的存儲器區(qū)域_RAM nRAM_BASE: 1.RAM起始地址,低地址留給內(nèi)核使用,高地址由起始地址,低地址留給內(nèi)核使用,高地址由viv
23、i使用使用nVIVI使用的使用的RAM空間空間: 1.Vivi在在RAM中的起始地址中的起始地址VIVI_RAM_BASE 2.Vivi使用的堆地址:使用的堆地址:HEAP_BASE 3.2410使用的使用的MMU地址:地址:MMU_TABLE_BASE 4.Vivi參數(shù)地址:參數(shù)地址:VIVI_PRIV_RAM_BASE 5.Vivi使用的棧地址:使用的棧地址:STACK_BASE U-boot簡介簡介 n由德國由德國DENX小組開發(fā)的用于多種嵌入式小組開發(fā)的用于多種嵌入式CPU的的bootloader程序,起源于程序,起源于PPC-BOOT n支持支持Linux、VxWork等操作系統(tǒng),還
24、支持等操作系統(tǒng),還支持MIPS、X86、ARM等處理器,是一種通用等處理器,是一種通用的的Bootloader n開源,高度模塊化開源,高度模塊化 n驅(qū)動程序豐富、命令操作靈活驅(qū)動程序豐富、命令操作靈活 U-BOOT代碼結(jié)構(gòu)代碼結(jié)構(gòu) nBoard:與目標(biāo)板相關(guān)代碼與目標(biāo)板相關(guān)代碼 nCommon:命令的實現(xiàn)代碼命令的實現(xiàn)代碼 nCpu:與目標(biāo)處理器相關(guān)代與目標(biāo)處理器相關(guān)代碼碼 nDrivers:各種驅(qū)動程序各種驅(qū)動程序 nFs:支持的文件系統(tǒng)支持的文件系統(tǒng) nLib_arm:ARM平臺的公共平臺的公共接口代碼接口代碼 U-BOOT代碼結(jié)構(gòu)代碼結(jié)構(gòu) ndisk:對磁盤的支持對磁盤的支持 ninc
25、lude:頭文件、支持頭文件、支持各種硬件平臺的匯編文各種硬件平臺的匯編文件、系統(tǒng)配置文件和支件、系統(tǒng)配置文件和支持文件系統(tǒng)的文件持文件系統(tǒng)的文件nnet:與網(wǎng)絡(luò)協(xié)議棧相關(guān)與網(wǎng)絡(luò)協(xié)議棧相關(guān)代碼,代碼,TFTP協(xié)議等和協(xié)議等和NFS文件系統(tǒng)文件系統(tǒng) ntools:生成生成UBOOT的工的工具具CPU相關(guān)文件相關(guān)文件 nCpu.c 和和cpu核相關(guān)的操作,注意對于某一核相關(guān)的操作,注意對于某一個系列的個系列的cpu來說,這個文件一般是公共的來說,這個文件一般是公共的 nStart.s 入口點入口點 nAutoconfig.h 自動設(shè)置文件自動設(shè)置文件nInterrupts.c 這個文件定義了中斷處
26、理相關(guān)這個文件定義了中斷處理相關(guān)操作操作 Board相關(guān)文件相關(guān)文件 nlowlevel_init.S 用于初始化一些周邊設(shè)備,用于初始化一些周邊設(shè)備,主要是存儲器主要是存儲器 nSmdk2410.c 用于板級系統(tǒng)初始化用于板級系統(tǒng)初始化 nFlash.c 是板級系統(tǒng)的是板級系統(tǒng)的Flash驅(qū)動函數(shù)所在驅(qū)動函數(shù)所在 n在此目錄中,包含了整個系統(tǒng)的在此目錄中,包含了整個系統(tǒng)的 .lds文件文件 Lib_arm中的相關(guān)文件中的相關(guān)文件 nArmlinux.c arm系統(tǒng)引導(dǎo)內(nèi)核的函數(shù)所在系統(tǒng)引導(dǎo)內(nèi)核的函數(shù)所在文件文件 n_umodsi3.s和和_udivsi3.s 用于用于arm的算術(shù)的算術(shù)運算運
27、算nCache.c和和div0.c nboard.c 包含了包含了stage2的入口點的入口點 U-boot所使用的文件格式所使用的文件格式 nU-boot的的tools目錄提供一個工具目錄提供一個工具mkimage用來將用來將elf格式的格式的image文件轉(zhuǎn)文件轉(zhuǎn)成成uImage 1.Vmlinuxelf格式格式 2.zImage和和bzImage 經(jīng)過壓縮的經(jīng)過壓縮的image 3.用用objcopy可以將可以將elf轉(zhuǎn)成轉(zhuǎn)成bin文件文件 U-boot下載映像的制作過程下載映像的制作過程 n編譯內(nèi)核,得到編譯內(nèi)核,得到vmlinux文件文件n使用使用objcopy得到二進(jìn)制文件得到二進(jìn)
28、制文件linux.bin $CROSS_COMPILE-objcopy -O binary -R .note -R .comment -S vmlinux linux.bin n壓縮二進(jìn)制文件壓縮二進(jìn)制文件linux.bin,得到,得到linux.bin.gz n使用使用u-boot工具工具mkimage將壓縮文件打包,加將壓縮文件打包,加入入load地址、解壓地址等信息地址、解壓地址等信息 UBOOT編譯與配置編譯與配置nuboot的的makefile從功能上可以分成兩從功能上可以分成兩個部分:一部分是用來編譯生成個部分:一部分是用來編譯生成uboot.bin文件;另一部分是用來執(zhí)行文件;另一部分是用來執(zhí)行每種每種board相關(guān)的配置。相關(guān)的配置。nuboot.bin的生成分為兩步:一是對的生成分為兩步:一是對board進(jìn)行配置;接下來進(jìn)行編譯生成進(jìn)行配置;接下來進(jìn)行編譯生成uboot.binUBOOT的啟動過程的啟動過程n與大多數(shù)與大多數(shù)bootloader類似,類似,uboot包含包含兩種不同的操作模式:啟動加載模式和兩種不同的操作模式:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 長春工業(yè)大學(xué)人文信息學(xué)院《BM安裝工程計量》2023-2024學(xué)年第二學(xué)期期末試卷
- 南昌理工學(xué)院《現(xiàn)代控制》2023-2024學(xué)年第二學(xué)期期末試卷
- 昆明幼兒師范高等??茖W(xué)校《金融學(xué)前沿動態(tài)》2023-2024學(xué)年第二學(xué)期期末試卷
- 信陽農(nóng)林學(xué)院《臺港暨海外華文文學(xué)研究》2023-2024學(xué)年第二學(xué)期期末試卷
- 西安體育學(xué)院《大數(shù)據(jù)機(jī)器學(xué)習(xí)》2023-2024學(xué)年第二學(xué)期期末試卷
- 濰坊工商職業(yè)學(xué)院《機(jī)器學(xué)習(xí)實驗》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東信息工程職業(yè)學(xué)院《UML及形式化建?!?023-2024學(xué)年第二學(xué)期期末試卷
- 山西旅游職業(yè)學(xué)院《化工原理(Ⅰ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 湘潭醫(yī)衛(wèi)職業(yè)技術(shù)學(xué)院《信號分析與處理》2023-2024學(xué)年第二學(xué)期期末試卷
- 麗水職業(yè)技術(shù)學(xué)院《詩歌導(dǎo)讀》2023-2024學(xué)年第二學(xué)期期末試卷
- DB14-T 3043-2024 黃土丘陵溝壑區(qū)水土流失綜合治理技術(shù)規(guī)范
- 青島西海岸新區(qū)2025中考自主招生英語試卷試題(含答案詳解)
- 《氣象學(xué)與氣候?qū)W》全書電子教案B
- 生產(chǎn)設(shè)備更新和技術(shù)改造項目資金申請報告-超長期國債
- 江西省“振興杯”信息通信網(wǎng)絡(luò)運行管理員競賽考試題庫-上(單選題)
- DLT 5756-2017 額定電壓35kV(Um=40.5kV)及以下冷縮式電纜附件安裝規(guī)程
- 循環(huán)伏安法 課件
- 2023高考數(shù)學(xué)藝考生一輪復(fù)習(xí)講義(學(xué)生版)
- 2024年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫含答案
- 2024年連云港專業(yè)技術(shù)人員繼續(xù)教育《飲食、運動和健康的關(guān)系》92分(試卷)
- 《短視頻拍攝與制作》課件-2短視頻前期創(chuàng)意
評論
0/150
提交評論