国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

bootloader淺析

2019-11-14 11:56:52
字體:
供稿:網(wǎng)友

bootloader淺析

背景: 一個嵌入式linux系統(tǒng)從軟件的角度看通常可以分為四個層次: 1、 引導加載程序。包括固化在固件(firmware)中的boot代碼(可選),和BootLoader兩大部分。 2、Linux內(nèi)核。特定于嵌入式板子的定制內(nèi)核以及內(nèi)核的啟動參數(shù)。 3、 文件系統(tǒng)。包括根文件系統(tǒng)和建立于Flash內(nèi)存設備之上文件系統(tǒng)。通常用ramdisk來作為rootfs。 4、 用戶應用程序。特定于用戶的應用程序。有時在用戶應用程序和內(nèi)核層之間可能還會包括一個嵌入式圖形用戶界面。常用的嵌入式GUI有:MicroWindows和MiniGUI等。 一個嵌入式的存儲設備通常包括四個分區(qū): 第一分區(qū):存放的當然是u-boot 第二個分區(qū):存放著u-boot要傳給系統(tǒng)內(nèi)核的參數(shù) 第三個分區(qū):是系統(tǒng)內(nèi)核(kernel) 第四個分區(qū):則是根文件系統(tǒng)。 存儲設備分區(qū) Bootloader定義: Bootloader是在操作系統(tǒng)運行之前執(zhí)行的一小段程序,通過這一小段程序,我們可以初始化硬件設備、建立內(nèi)存空間的映射表,從而建立適當?shù)南到y(tǒng)軟硬件環(huán)境,為最終調(diào)用操作系統(tǒng)內(nèi)核做好準備。意思就是說如果我們要想讓一個操作系統(tǒng)在我們的板子上運轉(zhuǎn)起來,我們就必須首先對我們的板子進行一些基本配置和初始化,然后才可以將操作系統(tǒng)引導進來運行。具體在Bootloader中完成了哪些操作我們會在后面分析到,這里我們先來回憶一下PC的體系結構:PC機中的引導加載程序是由BIOS和位于硬盤MBR中的OS Boot Loader(比如LILO和GRUB等)一起組成的,BIOS在完成硬件檢測和資源分配后,將硬盤MBR中的Boot Loader讀到系統(tǒng)的RAM中,然后將控制權交給OS Boot Loader。Boot Loader的主要運行任務就是將內(nèi)核映象從硬盤上讀到RAM中,然后跳轉(zhuǎn)到內(nèi)核的入口點去運行,即開始啟動操作系統(tǒng)。在嵌入式系統(tǒng)中,通常并沒有像BIOS那樣的固件程序(注:有的嵌入式cpu也會內(nèi)嵌一段短小的啟動程序),因此整個系統(tǒng)的加載啟動任務就完全由Boot Loader來完成。比如在一個基于ARM7TDMI core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復位時通常都從地址0x00000000處開始執(zhí)行,而在這個地址處安排的通常就是系統(tǒng)的Boot Loader程序。 U-boot: 常見的bootloader有:Redboot,ARMboot,U-Boot,Blob等,其中U-boot,全稱Universal Boot Loader,是由DENX小組的開發(fā)的遵循GPL條款的開放源碼項目,它的主要功能是完成硬件設備初始化、操作系統(tǒng)代碼搬運,并提供一個控制臺及一個指令集在操作系統(tǒng)運行前操控硬件設備。U-boot之所以這么通用,原因是他具有很多特點:開放源代碼、支持多種嵌入式操作系統(tǒng)內(nèi)核、支持多種處理器系列、較高的穩(wěn)定性、高度靈活的功能設置、豐富的設備驅(qū)動源碼以及較為豐富的開發(fā)調(diào)試文檔與強大的網(wǎng)絡技術支持。 U-Boot源代碼下載地址: 免費下載地址在 http://linux.linuxidc.com/具體下載目錄在 /pub/u-boot/ 用戶名與密碼都是www.linuxidc.com uboot官網(wǎng):http://www.denx.de/wiki/U-Boot/WebHome; 飛思卡爾的芯片有自己的uboot源碼及編譯工程可供免費下載;

U-Boot—kernel 以飛思卡爾的imx6q為例: 燒錄入板子的文件有三個: uboot.bin; //由單獨的工程生成 boot.img; //實際==kernel + ramdisk + cmdline; system.img; //文件系統(tǒng),與boot.img一起生成 其中cmdline來源于:M~~4.3_android/device/Q~i~s/q~i~s/BoardConfig.mk,

BOARD_KERNEL_CMDLINE := console=ttymxc0,115200 init=/init ~~~~~~~ androidboot.console=ttymxc0 androidboot.hardware=freescale bluetooth

uboot通過解析BOARD_KERNEL_CMDLINE,setenv,生成bootargs傳遞給kernel。

Linux內(nèi)核在啟動的時候需要一些參數(shù),以獲得當前硬件的信息或者啟動所需資源在內(nèi)存中的位置等等。這些信息可以通過bootloader傳遞給kernel,也可以kernel強制使用自己的cmdline。 1、kernel若是采用uboot傳遞的cmdline,需要M~~4.3_android/kernel_imx/arch/arm/configs/imx6_android_eng_defconfig下的

#CONFIG_CMDLINE_FORCE is not set

2、kernel強制使用自己的cmdline,需要M636_JB4.3_android/kernel_imx/arch/arm/configs/imx6_android_eng_defconfig下的

CONFIG_CMDLINE="console=ttymxc0,115200 video=mxcfb0:dev=lcd,lcd_640x480_2,if=RGB24,bpp=32 video=mxcfb1:ldb,LDB-8PLCD if=RGB24,bpp=32 video=mxcfb2:off fbmem=30M vmalloc=400M init=/init androidboot.console=ttymxc0 androidboot.hardware=freescale ldo_active=off"# CONFIG_CMDLINE_FROM_BOOTLOADER is not set# CONFIG_CMDLINE_EXTEND is not setCONFIG_CMDLINE_FORCE=y //強制使用自己的cmdline

運行時進入uboot的方式是運行到如下時敲回車鍵或者其他鍵,就會進入uboot,

##### PAD6_DDR_VERSION_ISSI_1G #####Net: got MAC address from IIM: 00:00:00:00:00:00FEC0 [PRIME]Hit any key to stop autoboot: 0

可以輸入help查看支持的指令,若想繼續(xù)引導,可以輸入boot kernel指令。

參考:http://www.360doc.com/content/12/0913/12/9072830_235879252.shtml


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 成安县| 渝北区| 林芝县| 青海省| 英山县| 株洲县| 萝北县| 古蔺县| 门源| 石景山区| 赤峰市| 肇源县| 北辰区| 平阴县| 汉源县| 河曲县| 福鼎市| 沈丘县| 民勤县| 大兴区| 江安县| 中江县| 娱乐| 浮山县| 临邑县| 墨竹工卡县| 南充市| 灵山县| 阿尔山市| 吴忠市| 工布江达县| 中阳县| 会理县| 鸡泽县| 浏阳市| 沁水县| 天等县| 昌邑市| 合江县| 德钦县| 岳池县|