• 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个字节作为头信息)。 

  • 相关阅读:
    博客园的使用和设置
    关于递推算法求解约瑟夫环问题P(n,m,k,s)
    HTML超链接和路径
    HTML文本元素标签
    HTML前序
    Java正则表达式验证至少6位表达式中至少包含数字大小写字母中的一种
    创建自己的第一个Vue项目
    查看端口及进程
    Java读取数据库(Oracle,MySQL,PostgresSQL)表信息以及字段信息生成Word文档
    启动项目报错ORA-12505, TNS:listener does not currently know of SID given in
  • 原文地址:https://www.cnblogs.com/openix/p/2456075.html
Copyright © 2020-2023  润新知