最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

uImage和zImage的區(qū)別

2018-10-10 16:06 作者:韋東山  | 我要投稿
轉(zhuǎn)自:https://blog.csdn.net/yi412/article/details/19131549
有修改刪減。

內(nèi)核編譯(make)之后會(huì)生成兩個(gè)文件,一個(gè)Image,一個(gè)zImage,其中Image為內(nèi)核映像文件,而zImage為內(nèi)核的一種映像壓縮文件,Image大約為4M,而zImage不到2M。? ??

那么uImage又是什么的?它是uboot專用的映像文件,它是在zImage之前加上一個(gè)長(zhǎng)度為64字節(jié)的“頭”,說(shuō)明這個(gè)內(nèi)核的版本、加載位置、生成時(shí)間、大小等信息;其0x40之后與zImage沒(méi)區(qū)別。

如何生成uImage文件?

首先在uboot的/tools目錄下尋找mkimage文件,把其copy到系統(tǒng)/usr/local/bin目錄下,這樣就完成制作工具。然后在內(nèi)核目錄下運(yùn)行make uImage,如果成功,便可以在arch/arm/boot/目錄下發(fā)現(xiàn)uImage文件,其大小比zImage多64個(gè)字節(jié)。

有了uImage頭部的描述, u-boot就知道對(duì)應(yīng)Image的信息, 如果沒(méi)有頭部則需要自己手動(dòng)去設(shè)置那些參數(shù)。




U-boot的U是“通用”的意思。?

zImage是ARM Linux常用的一種壓縮映像文件,uImage是U-boot專用的映像文件,它是在zImage之前加上一個(gè)長(zhǎng)度為0x40的“頭”,說(shuō)明這個(gè)映像文件的類型、加載位置、生成時(shí)間、大小等信息。換句話說(shuō),如果直接從uImage的0x40位置開始執(zhí)行,zImage和uImage沒(méi)有任何區(qū)別。另外,Linux2.4內(nèi)核不支持uImage,Linux2.6內(nèi)核加入了很多對(duì)嵌入式系統(tǒng)的支持,但是uImage的生成也需要設(shè)置,這個(gè)以后我會(huì)介紹。




幾種linux內(nèi)核文件的區(qū)別:

1、vmlinux? :編譯出來(lái)后未壓縮最原始的內(nèi)核文件

2、zImage? ?:vmlinux經(jīng)過(guò)gzip壓縮后的文件。

3、bzImage:bz表示“big zImage”,不是用bzip2壓縮的。兩者的不同之處在于,zImage解壓縮內(nèi)核到低端內(nèi)存(第一個(gè)640K),bzImage解壓縮內(nèi)核到高端內(nèi)存(1M以上)。如果內(nèi)核比較小,那么采用zImage或bzImage都行,如果比較大應(yīng)該用bzImage。

4、uImage :?U-boot專用的映像文件,它是在zImage之前加上一個(gè)長(zhǎng)度為0x40的TAG。

5、vmlinuz:? bzImage/zImage文件的拷貝或指向bzImage/zImage的鏈接。

6、initrd ,: “initial ramdisk”的簡(jiǎn)寫。一般被用來(lái)臨時(shí)的引導(dǎo)硬件到實(shí)際內(nèi)核vmlinuz能夠接管并繼續(xù)引導(dǎo)的狀態(tài)


一般情況下都在生成vmlinux后,再對(duì)內(nèi)核進(jìn)行壓縮成為zImage,壓縮的目錄是kernel/arch/arm/boot。

下載到 flash 中的是壓縮后的zImage文件,zImage是由壓縮后的vmlinux和解壓縮程序組成的。

查看 2440 的 datasheet , 發(fā)現(xiàn)內(nèi)存映射的基址是 0x3000 0000 ,?那么0x30008000 又是如何來(lái)的呢?

在內(nèi)核文檔kernel/Document/arm/Booting 文件中有:

Calling the kernel image

Existingboot loaders: MANDATORY New boot loaders: MANDATORY There are two options for calling the kernel zImage. If the zImage is stored inflash, and is linked correctly to be run from flash, then it is legal for the boot loader to call the zImage in flashdirectly. The zImage may also be placed in system RAM (at any location) and called there.Note that the kernel uses 16K of RAM below the image to store page tables. The recommended placement is 32KiBinto RAM.?

看來(lái)在image下面用了32K(0x8000)的空間存放內(nèi)核頁(yè)表,

0x30008000 就是 2440 的內(nèi)核在 RAM 中的啟動(dòng)地址,這個(gè)地址就是這么來(lái)的。



比如用U-Boot啟動(dòng)Linux內(nèi)核步驟如下:

1、下載uImage.bin到SDRAM的0x30008000處

tftp 0x30008000 uImage


2、啟動(dòng)內(nèi)核
bootm 0x30008000


uImage和zImage的區(qū)別的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
普格县| 巴塘县| 左贡县| 集安市| 达州市| 甘孜县| 新田县| 枣庄市| 宝丰县| 宁化县| 武安市| 浙江省| 滦南县| 松阳县| 彰化市| 汪清县| 古浪县| 通榆县| 余姚市| 佛坪县| 衡山县| 临猗县| 平定县| 昌黎县| 奉贤区| 中卫市| 三江| 吴忠市| 宣武区| 平乡县| 武宁县| 贵溪市| 德清县| 沈丘县| 广平县| 乐山市| 惠水县| 乌鲁木齐市| 甘洛县| 肥城市| 秦皇岛市|