亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1643 | 回復(fù): 0
打印 上一主題 下一主題

u-boot mkimage 的用法 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-12-22 08:51 |只看該作者 |倒序瀏覽
原文地址:http://zhuairlunjj.blog.163.com/blog/static/80050945201122444441998/


在嵌入式系統(tǒng)中,Linux內(nèi)核和根文件系統(tǒng)一般都與bootloader一起燒寫在flash芯片中,系統(tǒng)啟動后,bootloaderLinux內(nèi)核壓縮到RAM中,并把壓縮的根文件系統(tǒng)復(fù)制到RAM中,然后啟動內(nèi)核,由內(nèi)核解壓縮根文件系統(tǒng),并調(diào)用文件系統(tǒng)中的應(yīng)用程序和腳本文件啟動系統(tǒng)。

在燒寫Linux內(nèi)核和根文件系統(tǒng)之前應(yīng)該對它們進(jìn)行適當(dāng)處理,在它們的頭部加入一些提供給bootloader的信息字符,以便bootloader能夠辨認(rèn)它們并獲取它們的信息,從而正確地將它們解壓縮、復(fù)制到RAM中的正確位置,并正確啟動內(nèi)核。這個為Linux內(nèi)核和根文件系統(tǒng)添加頭部的工作一般由編譯bootloader時生成的一個小應(yīng)用程序來完成,比如u-boot編譯后會在其tools子目錄下生成一個叫mkimage的應(yīng)用程序,而cfe在編譯后也會在其cfe/hosttools子目錄下生成一個叫mkflashimage的應(yīng)用程序,它們就是完成上述功能的工具程序,此處我們只介紹u-bootmkimage

mkimage命令格式如下:

# mkimage [-x] -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image

其中各字段含義如下:

 

    

    

-x

指定內(nèi)核就在Flash中運(yùn)行,即XIPexecute in place

-T

指定輸入文件的類型,如“kernel”、“filesystem”、“firmware”、“ramdisk

-A

指定處理器體系架構(gòu)

-O

指定操作系統(tǒng)類型名字,如“linux”、“vxworks”、“psos”等

-C

指定壓縮模式,可能設(shè)置為“none”、“bzip2”、“gzip

-a

指定程序被解壓縮或復(fù)制到RAM中的地址

-e

指定程序(內(nèi)核)的入口地址

-n

指定image文件的名字

-d

指定輸入的程序文件,可是有多個文件,如內(nèi)核或/和根文件系統(tǒng)二進(jìn)制文件

image

輸出文件名

mkimage命令舉例如下:

#mkimage -n "My Kernel" -A arm -O linux -T kernel -C gzip –a 0x8000 –e 0x8000 -d kernel.gz kernel.img

以上命令將壓縮了的內(nèi)核二進(jìn)制文件kernel.gz轉(zhuǎn)換成u-boot能夠辨認(rèn)的二進(jìn)制文件kernel.img,并指定kernel.img的名字為“My Kernel”,處理器體系架構(gòu)為arm,操作系統(tǒng)類型為linux,程序類型為操作系統(tǒng)內(nèi)核,程序由gzip壓縮,程序的鏈接起始地址為0x8000,程序的入口地址為0x8000,注意這兩個地址一定要是物理地址而不是對應(yīng)的虛擬地址。

#mkimage -n "My Rootfs" -A arm -O linux -T ramdisk -C gzip -d ramdisk.gz ramdisk.img

以上命令將壓縮了的ramdisk根文件系統(tǒng)二進(jìn)制文件ramdisk.gz轉(zhuǎn)換成u-boot能夠辨認(rèn)的二進(jìn)制文件ramdisk.img,并指定ramdisk.img的名字為“My Rootfs”,處理器體系架構(gòu)為arm,操作系統(tǒng)類型為linux,程序類型為ramdisk,程序由gzip壓縮,不需要指定ramdisk的鏈接起始地址和入口地址。

如果我們將kernel.imgramdisk.img文件分別寫到flash芯片的0xFF0000000xFF200000位置,系統(tǒng)啟動后進(jìn)入u-boot命令行界面,執(zhí)行以下u-boot命令:

# bootm 0xFF000000 0xFF200000

那么u-boot將把0xFF000000位置的Linux內(nèi)核解壓縮到RAM中的0x8000位置,再將0xFF200000位置的ramdisk文件系統(tǒng)映像文件刨掉u-boot頭部后復(fù)制到RAM中的某個位置,然后跳轉(zhuǎn)到內(nèi)核的入口地址0x8000位置啟動內(nèi)核,同時把板子信息、ramdiskRAM中的起始地址和結(jié)束地址、命令行字符串傳給內(nèi)核,這樣Linux開始啟動運(yùn)行。

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP