4.内核编译和裁剪

一 内核编译--Makefile

        1.编译

     将Linux内核源码编译成针对特定硬件的二进制镜像--zImage /uIamge。

         2.方法
         *一般拿到一份新的源码,第一步先要将其编译通过。当第一次生成.config文件时,会进行首次配置,选择编译项目。建议对已有.config文件源码

     进行备份,以防丢失或错误。

         (1).在源码的顶层目录下,根据主机配置环境修改Makefile中的CROSS_COMPLIER路径(.bashrc)及处理器架构。        
         (2).在源码的顶层目录下,执行make命令,则会根据编写好的Makefile文件去编译源码,最终在 kernel/arch/arm/boot 文件夹下生成
               zImage文件。如有错误,根据错误去修改。
        
       3.make执行流程

    执行顶层Makefile文件 -> 查找编译器和库文件 -> 查找顶层目录下.config -> 通过各层次的Makefile和Kconfig 编译系统。

       4.静态添加驱动进内核

   (1).将.c源文件复制到相应的目录下。
       (2).在该目录的Konfig配置文件中,添加配置选项。
       (3).在该目录的Makefile文件中,添加编译选项。

二 内核配置/裁剪 --Kconfig make menuconfig
        
        内核配置系统的组成
        (1).各级的Makefile文件,用于指定编译方式,版本说明,选定编译器, 编译各级目录下的源文件成为指定二进制格式。              
        (2).Kconfig文件,存在于各级目录下,给用户提供可配置选择功能。和make menuconfig工具组成菜单配置界面,方便用户进行内核的裁剪       
        (3).配置工具,现在用的比较多的是make menuconfig,图形化内核配置工具。该配置工具是用脚本语言来写的,有两方面的组成。一是内部的脚本
        语言命令解释器,对配置脚本文件的命令进行解释;二是提供图形化的界面,提供字符及图形配置界面。
        内核配置的实质
        内核配置最终在源码顶层目录下生成 .config文件,该文件是经过内核配置后生成的配置文件,裁剪过相关的功能。
        
三、由源码到板级代码的步骤
       

  一份已经完成的板级代码最重要看三部分:基础代码(能够运行最小文件系统,能够跑起来了);驱动代码(支持板子上的外设,并已经写好了驱动);

  其他代码(代码用途:)。
      (1).基础代码
            包括体系结构移植代码、处理器核心代码、板级支持包的部分代码。主要看主板的配置文件(.config)和主板代码文件(mach-xxx.c)    
            
     (2).驱动代码
        
            
     (3).其他代码
        
        
        
        

原文地址:https://www.cnblogs.com/nyqm/p/7954682.html