歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux的uboot啟動映像uImage制作過程

Linux的uboot啟動映像uImage制作過程

日期:2017/2/28 16:47:01   编辑:Linux教程

  其實uboot啟動映像主要是在原來的zImage前加上一個他要0x40的tag,告訴uboot一些關於Linux內核啟動的信息。

  在arch/arm/boot/Makefile 62行開始有命令和規則:

  quiet_cmd_uimage = UIMAGE $@

  cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \

  -C none -a $(ZRELADDR) -e $(ZRELADDR) \

  -n 'Linux-$(KERNELRELEASE)' -d $

  $(obj)/uImage: $(obj)/zImage FORCE

  $(call if_changed,uimage)

  @echo ' Image $@ is ready'

  其實uboot啟動映像主要是在原來的zImage前加上一個他要0x40的tag,告訴uboot一些關於內核啟動的信息。這個規則的命令就是63行到65行的定義

  -A指定cpu體系結構

  -O指定是什麼操作系統

  -T指定映像類型,如standalone、kernel、ramdisk、multi、firmware、script、filesystem等

  -C指定映像壓縮方式,如none(不壓縮)、gzip、bzip2。這裡不對uImage進行壓縮

  -a指定映象在內存中的加載地址,映象下載到內存中時,要按照用MKIMAGE制作映象時,這個參數所指定的地址值來下載

  -e 指定映象運行的入口點地址,這個地址就是-a參數指定的值加上0x40(因為前面有個MKIMAGE添加的0x40個字節的頭)

  -n 指定映象名

  -d 指定制作映象的源文件

  上面命令中ZRELADDR在24行定義

  ZRELADDR := $(zreladdr-y)在第17行有

  include $(srctree)/$(MACHINE)/Makefile.boot

  而這個Makefile.boot的中有

  zreladdr-y := 0x30008000

  所以ZRELADDR := 0x30008000

Copyright © Linux教程網 All Rights Reserved