Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1971575
  • 博文数量: 185
  • 博客积分: 10707
  • 博客等级: 上将
  • 技术积分: 1777
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-19 17:31
文章分类

全部博文(185)

文章存档

2014年(1)

2012年(6)

2011年(27)

2010年(13)

2009年(75)

2008年(63)

分类: LINUX

2008-12-29 14:10:45

arch/arm/boot/Makefile 59行开始有命令和规则:

 

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前加上一个他要0x40tag,告诉uboot一些关于内核启动的信息。这个规则的命令

 

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

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

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

 

-A指定cpu体系结构

 

-O指定是什么操作系统

 

-T指定映像类型,如standalonekernelramdiskmultifirmwarescriptfilesystem

 

-C指定映像压缩方式,如none(不压缩)gzipbzip2。这里不对uImage进行压缩

 

-a指定映象在内存中的加载地址,映象下载到内存中时,要按照用MKIMAGE制作映象时,这个参数所指定的地址值来下载

 

-e 指定映象运行的入口点地址,这个地址就是-a参数指定的值加上0x40(因为前面有个MKIMAGE添加的0x40个字节的头)

 

-n 指定映象名

 

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

 

上面命令中ZRELADDR24行定义

 

ZRELADDR    := $(zreladdr-y)

 

在第14行有

 

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

 

而这个Makefile.boot的中有

 

   zreladdr-y  := 0x80008000

 

所以ZRELADDR    := 0x80008000

阅读(2243) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~