zoukankan      html  css  js  c++  java
  • 612 根目录下vmlinux , compressed下的vmlinux,boot下的Image、zImage

    根据arch/unicore/kernel下的连接脚本vmlinux.lds以及hend.S等其他文件生成根目录下的vmlinuxELF格式文件。

    quiet_cmd_vmlinux__ ?= LD      $@  

          cmd_vmlinux__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_vmlinux) -o $@ \

          -T $(vmlinux-lds) $(vmlinux-init)                          \   

          --start-group $(vmlinux-main) --end-group                  \   

          $(filter-out $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) vmlinux.o FORCE ,$^)

    Image以根目录下的vmlinux通过objcopy生成binary格式。

    cmd_arch/unicore/boot/Image := unicore32-linux-objcopy -O binary -R .note -R .note.gnu.build-id -R .comment -S  vmlinux   arch/unicore/boot/Image

    运用压缩工具gzip将Image进行压缩,生成piggy.gz

    cmd_arch/unicore/boot/compressed/piggy.gz := (cat arch/unicore/boot/compressed/../Image | gzip -f -9 > arch/un    icore/boot/compressed/piggy.gz) || (rm -f arch/unicore/boot/compressed/piggy.gz ; false)

     

    在compressed目录下有个piggy.S,其中使用了.incbin 将piggy.gz”植入”piggy.S中,而后生成piggy.o

    ./boot/compressed/Makefile:56:$(obj)/piggy.o:  $(obj)/piggy.gz FORCE

    下面两个通过压缩而成的Image和compressed下的head.S(不同于kernel下的head.S)及piggy.o,misc.c生成含有部分被压缩的代码vmlinux(此vmlinux位于compressed目录下,不同于更目录下的vmlinux),运用的连接脚本是compressed目录下的vmlinux.lds(不同于kernel目录下的vmlinux.lds)

    $(obj)/compressed/vmlinux: $(obj)/Image FORCE

      $(Q)$(MAKE) $(build)=$(obj)/compressed $@

     

    $(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.o \

            $(addprefix $(obj)/, $(OBJS)) FORCE

        $(call if_changed,ld)

        @:

    zImage有compressed下的vmlinux使用objcopy生成

    cmd_arch/unicore/boot/zImage :=unicore32-linux-objcopy O binary -R .note –R .note.gnu.build-id –R .comment –S arch/unicore/boot/compressed/vmlinux arch/unicore/boot/zImage

    uImage通过compressed下的zImage运用 mkimage工具生成。

    cmd_arch/unicore/boot/uImage     :=      /bin/bash /home/liuchangcheng/contest_android/kernel/scripts/mkuboot.sh -A unicore -O linux -T kernel -C none -a 0x40808000 -e 0x40808000 -n 'Linux-2.6.32.9' -d arch/unicore/boot/zImage ar    ch/unicore/boot/uImage

     

    mkimage的源程序大致看了一下(从tool下的mkimage.c文件开始阅读,而后是头文件中的数据结构,主要是里面有几个数据结构,自己的抽象能力还是不足,struct stat、truct image_type_params、struct mkimage_params还有个头结构,过段时间再看看),我们可以使用hexdump工具看看zImage 与uImage的区别,uImage在zImage前加了64个字节作为头信息)。 

  • 相关阅读:
    python全栈开发_day48_bootstrap
    python全栈开发_day47_js,jQuery
    python全栈开发_day46_html文本标签
    抽象集合
    ViewState的用法
    sql(join中on与where区别)
    微软的技术文档链接地址
    微软的帮助文档,详细的介绍VS开发工具的使用
    [摘录]解决C# DateTime去掉时分秒几种方法
    验证(摘录)
  • 原文地址:https://www.cnblogs.com/openix/p/2456075.html
Copyright © 2011-2022 走看看