uImage與Image的區別

 內核編譯(make)之後會生成兩個文件,一個Image,一個zImage,其中Image爲內核映像文件,而zImage爲內核的一種映像壓縮文件,Image大約爲4M,而zImage不到2M

        那麼uImage又是什麼的?它是uboot專用的映像文件,它是在zImage之前加上一個長度爲64字節的“頭”,說明這個內核的版本、加載位置、生成時間、大小等信息;其0x40之後與zImage沒區別。

        如何生成uImage文件?首先在uboot/tools目錄下尋找mkimage文件,把其copy到系統/usr/local/bin目錄下,這樣就完成製作工具。然後在內核目錄下運行makeuImage,如果成功,便可以在arch/arm/boot/目錄下發現uImage文件,其大小比zImage64個字節。

其實就是一個自動跟手動的區別,有了uImage頭部的描述,u-boot就知道對應Image的信息,如果沒有頭部則需要自己手動去搞那些參數

U-bootU是“通用”的意思

zImageARMLinux常用的一種壓縮映像文件,uImageU-boot專用的映像文件,它是在zImage之前加上一個長度爲0x40的“頭”,說明這個映像文件的類型、加載位置、生成時間、大小等信息。換句話說,如果直接從uImage0x40位置開始執行,zImageuImage沒有任何區別。另外,Linux2.4內核不支持uImageLinux2.6內核加入了很多對嵌入式系統的支持,但是uImage的生成也需要設置,這個以後我會介紹。


幾種linux內核文件的區別

1vmlinux編譯出來的最原始的內核文件,未壓縮。

2zImagevmlinux經過gzip壓縮後的文件。

3bzImagebz表示“bigzImage”,不是用bzip2壓縮的。兩者的不同之處在於,zImage解壓縮內核到低端內存(第一個640K)bzImage解壓縮內核到高端內存(1M以上)。如果內核比較小,那麼採用zImagebzImage都行,如果比較大應該用bzImage

4uImage U-boot專用的映像文件,它是在zImage之前加上一個長度爲0x40tag

5vmlinuzbzImage/zImage文件的拷貝或指向bzImage/zImage的鏈接。

6initrd是“initialramdisk”的簡寫。一般被用來臨時的引導硬件到實際內核vmlinuz能夠接管並繼續引導的狀態


一般情況下都在生成vmlinux後,再對內核進行壓縮成爲zImage,壓縮的目錄是

kernel/arch/arm/boot

下載到flash中的是壓縮後的zImage文件,zImage是由壓縮後的vmlinux和解壓縮程序組成,如下圖所示:


查看2410datasheet,發現內存映射的基址是0x30000000 ,那麼0x30008000又是如何來的呢?

在內核文檔kernel/Document/arm/Booting文件中有:

Calling the kernel image

Existingboot loaders: MANDATORY
New boot loaders: MANDATORY 
There aretwo options for calling the kernel zImage. If the zImage is stored inflash, and is linked correctly to be run
from flash, then it islegal for the boot loader to call the zImage in flash directly.
ThezImage may also be placed in system RAM (at any location) and calledthere. Note that the kernel uses 16K of
RAM below the image tostore page tables. The recommended placement is 32KiB into RAM.
看來在image下面用了32K(0x8000)的空間存放內核頁表,

0x30008000就是2410的內核在RAM中的啓動地址,這個地址就是這


          通常情況下,將U-BOOT  內核及文件系統都通過TFTP下載到SDRAM中,然後再燒寫到NAND FLASH中,因爲SDRAM是掉電易失的。下載地址通過數據手冊查詢SDRAM的起始地址,然後固化。SDRAM類似於內存,NAND FLASH相當於硬盤。燒寫固化後設置U-BOOT從NAND FLASH中啓動。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章