zoukankan      html  css  js  c++  java
  • 第3阶段——内核启动分析之make menuconfig内核配置(2)

    目标:

    分析make menuconfig内核配置过程

    在上1小结中(内核编译试验)讲到了3种不同的配置:

    (1)通过make menuconfig 直接从头到尾配置.config文件

    (2) 通过make s3c2410_deconfig 命令在默认的配置上进行自动修改.config文件

    (3)使用厂家提供的配置config_ok文件覆盖.config文件

    所以,所有的配置结果都是配置.config文件

    1 linux下通过vi指令查看.config内核配置文件

     

    如上图所示:就是一堆配置项: CONFIG_XXX=y/CONFIG_XXX=m/ CONFIG_XXX=n

    =y:表示编进内核

    =m:表示编译成模块,提供动态加载

    =n:表示不参与编译

    输入grep “CONFIG_DM9000”  -nwR   (grep指令详细介绍入口链接http://www.cnblogs.com/lifexy/p/7009706.html)

    可以看到4个地方在使用它

    (1) include/linux/autoconf.h中定义宏DM9000

    include/linux/autoconf.h:129:#define CONFIG_DM9000 1

    然后通过vi include/linux/autoconf.h得到,不管menuconfig中是y/m/n, autoconf.h所有宏都等于1,C源码使用

     

    (2)C源码里通过判断autoconf.h的宏DM9000

    arch/arm/plat-s3c24xx/common-smdk.c:46:#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
    arch/arm/plat-s3c24xx/common-smdk.c:162:#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
    arch/arm/plat-s3c24xx/common-smdk.c:250:#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)

    (3)在include/config/auto.conf设置COMFIG_DM9000=y,供./drivers/net/ Makefile使用

    include/config/auto.conf:128:CONFIG_DM9000=y

    通过vi include/config/auto.conf如下图可以看出,.config配置文件非常相似, 它被顶层Makefile包含,被子目录Makefile使用

     

    (4)在./drivers/net/ 子目录Makefile中添加DM9000文件到obj-$(CONFIG_DM9000)中,其中CONFIG_DM9000=y,所以编译进内核中.

    drivers/net/Makefile:197:obj-$(CONFIG_DM9000) += dm9dev9000c.o
    
    drivers/net/Makefile:198:#obj-$(CONFIG_DM9000) += dm9000.o
    
    drivers/net/Makefile:199:#obj-$(CONFIG_DM9000) += dm9ks.o

    因为make uImage编译内核刚开始时,内核会根据.config自动生成auto.confautoconf.h这两个文件( 其中autoconf.h是供c源码使用(宏开关),而auto.conf被顶层Makefile包含,供子目录Makefile使用)

    2.通过子目录Makefile得出:
    如果auto.conf中CONFIG_xxx=y,对应的源码文件会被Makefile编译进内核;
    如果auto.conf中CONFIG_xxx=m,对应的源码文件会被Makefile编译成xxx.ko模块文件
    如果auto.conf中CONFIG_xxx=n,对应的源码文件不会被makefile编译;

    接下来分析Makefile来找到内核编译过程,明白make uImage做了什么

  • 相关阅读:
    mysql函数取出单个字段重新组成一维数组
    《数字集成电路静态时序分析基础》笔记①
    MexgZABoRn
    备战秋招-手撕代码篇
    芯片岗实习面经(2020暑期实习)
    备战秋招-指导篇
    备战秋招[六]-FIFO深度计算
    将博客搬至CSDN
    备战秋招[五]-异步FIFO
    备战秋招[四]-复位
  • 原文地址:https://www.cnblogs.com/lifexy/p/7348454.html
Copyright © 2011-2022 走看看