历史上的今天
返回首页

历史上的今天

今天是:2025年08月20日(星期三)

正在发生

2021年08月20日 | 1_5.3.2_内核配置裁剪及启动流程_内核启动流程分析之配置_P

2021-08-20 来源:eefocus

配置结果:生成一个.config文件。


以配置项:CONFIG_DM9000为例。


使用vim打开.config,搜索DM9000,可以看到CONFIG_DM9000=y,表示编译内核时DM9000会被链接,编入内核。

在这里插入图片描述

有一些参数等于m,表示编译后作为模块,不编入内核但可以动态加载这个模块。

在这里插入图片描述

在这里插入图片描述

使用grep “CONFIG_DM9000” * -nwR指令在全部文件中搜索CONFIG_DM9000。


可以看到,在以下四种地方可以搜索到CONFIG_DM9000。


C源码:CONFIG_DM9000(主要是宏,在autoconf.h文件中定义)

子目录Makefile:drivers/net/Makefile

include/config/auto.conf

include/linux/autoconf.h(从文件名可以看出,是根据一些命令和.config自动生成的)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看autoconf.h,发现在autoconf.h中,不论是定位为y还是m,在该文件中都被定义为1。

在这里插入图片描述

那么y和m的差别在哪里体现呢?


答:是在子目录的Makefile中体现的。之前有说过,y是会被链接进内核,m只是生成一个模块,需要的时候再动态加载,也就是说y和m都会被编译,只是一个是会被链接而另一个只是生成模块不被链接。


查看子目录的Makefile,可以看到一个obj-$(CONFIG_DM9000) += dm9dev9000c.o

在这里插入图片描述

先对obj做一个说明,如果子目录的Makefile中有以下两种语句的话,那么:


obj-y += xxx.o,表示最后会被编译进内核;

obj-m += yyy.o,表示yyy.c最后会被编译为可加载的模块yyy.ko;

也就是说,当CONFIG_DM9000 = y时,dm9dev9000c.c会被编译进内核;当CONFIG_DM9000 = m时,dm9dev9000.c会被编译为可加载的模块。


那么,这个CONFIG_DM9000 从哪里来?来源于auto.conf。


查看auto.conf,搜索DM9000,发现在这个文件中CONFIG_DM9000=y,那么这个等于y从哪里来呢?答:也是来源于.config。

在这里插入图片描述

显然,这个auto.conf要想起作用,是要被其他文件包含的,那么是什么文件包含的呢?


答:是顶层的Makefile包含的,顶层的Makefile包含了这个文件,同时也包含了其他子目录的Makefile,这样其他子目录的Makefile和auto.conf文件就联系起来了。


所以,当make uImage时:


根据.config文件,生成了autoconf.h,这个文件是在源代码中使用的,决定是否编译;

根据.config文件,还生成了auto.conf文件,这个文件是在Makefile中使用的,决定是否链接;

推荐阅读

史海拾趣

ANOVA公司的发展小趣事

面对日益复杂多变的电子市场环境,ANOVA公司始终保持着清醒的头脑和敏锐的洞察力。无论是疫情带来的供应链挑战,还是技术更新换代带来的竞争压力,ANOVA都能迅速应对,不断调整策略,确保公司的稳健发展。同时,ANOVA也积极展望未来,不断探索新的业务领域和技术方向,以期在电子行业中继续保持领先地位。

这五个故事只是ANOVA公司发展过程中的冰山一角,但它们足以展现出ANOVA公司如何在电子行业中逐步崛起,成为一支不可忽视的力量。ANOVA以其卓越的技术实力、全球化的布局和紧密的合作伙伴关系,不断推动着电子行业的发展和进步。

捷茂微(GATEMODE)公司的发展小趣事

面对日益复杂多变的电子市场环境,ANOVA公司始终保持着清醒的头脑和敏锐的洞察力。无论是疫情带来的供应链挑战,还是技术更新换代带来的竞争压力,ANOVA都能迅速应对,不断调整策略,确保公司的稳健发展。同时,ANOVA也积极展望未来,不断探索新的业务领域和技术方向,以期在电子行业中继续保持领先地位。

这五个故事只是ANOVA公司发展过程中的冰山一角,但它们足以展现出ANOVA公司如何在电子行业中逐步崛起,成为一支不可忽视的力量。ANOVA以其卓越的技术实力、全球化的布局和紧密的合作伙伴关系,不断推动着电子行业的发展和进步。

依必安派特(ebmpapst)公司的发展小趣事

在实现了从贸易到制造的转变后,依必安派特并没有停止前进的步伐。在2012年,依必安派特亚太研发中心正式落户上海,开始了本土化研发之路。这一举措使得依必安派特能够更好地了解中国市场的需求和趋势,为中国客户提供更加符合其需求的产品和解决方案。同时,本土化研发也加速了依必安派特在中国市场的创新步伐,推动了公司业务的快速发展。

Cavium Networks公司的发展小趣事

随着通信网络的不断升级和转型,Cavium Networks 看到了市场的巨大潜力。在2008年,尽管全球经济风暴肆虐,但 Cavium Networks 依然保持着强劲的增长势头。同年11月,公司宣布收购 W&W Communications 公司,这一举措进一步拓展了 Cavium Networks 的业务范围,增强了其在网络通信领域的竞争力。通过收购,Cavium Networks 获得了更多的技术资源和市场份额,为其后续的发展提供了有力的支持。

ADMOS公司的发展小趣事

在电子行业的早期,ADMOS公司以其前瞻性的技术视野和不懈的研发努力,成功开发出一款高效能、低能耗的功率管理芯片。这款芯片在市场上迅速获得了认可,为ADMOS公司赢得了良好的口碑。这一技术突破不仅奠定了ADMOS在功率管理领域的领先地位,也为公司的后续发展奠定了坚实的基础。

Engineered Components Co公司的发展小趣事

Engineered Components Co(ECC)公司成立于XXXX年,由几位在电子制造领域有丰富经验的工程师共同创立。他们看到了电子行业中对于高质量、高精度电子元件的迫切需求,因此决定专注于此领域。ECC在创立初期就确立了以客户需求为导向,以技术创新为驱动的发展战略。他们通过自主研发,生产出了第一批高精度电子连接器,并在市场上获得了良好的反响。

问答坊 | AI 解惑

FM调频发射制作实验

这是一个比较简单的实用型制作,本文打算从简到繁一步步深入,你若是愿意同步动手实验,不久你将能够制作适合正式场合使用的调频发射机。当然,实验还是从最简单的做起,下图是一个最简单的振荡器,它是调频发射的基础。   图中的线圈用1.0 ...…

查看全部问答>

路由器安装

路由器安装技术…

查看全部问答>

求基于51单片机的rs232与PC机串口通讯程序

编了几天了,越编头越大,哪位大大有,借鉴一下…

查看全部问答>

要做一个用单片机采集数据 通过gsm网络传输到电脑端的毕业设计谁给个思路或资料?

要做一个用单片机采集数据 通过gsm网络传输到电脑端的毕业设计谁给个思路或资料?…

查看全部问答>

EVC的treectrl控件的成员函数setbkcolor不能用吗(分数不多了 多谢大家帮忙看看)

不知道大家在EVC下编界面程序的时候遇到这个问题没有 m_tree.SetBkColor();编译的时候说不是tree的成员函数 很奇怪? 要设置tree控件的背景颜色 HBRUSH CTreeListDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = ...…

查看全部问答>

版主请进,给版主的建议

  强烈要求开一个 FPGA板块,硬件设计里面竟然没有FPGA和CPLD的东西, !!!!!!!!!!!!!!!!!!!!…

查看全部问答>

关于Wi-Fi开发

   开发板是君正的开发板,Samsung2440处理器, Wi-Fi模块是Atheros的6002, Wince 5.0的系统。把Wi-Fi模块的驱动移植好后,在不加密的情况下,是很良好的与AP 连接。 但在加密的情况下,输入密钥连接时, 会一直提示,验证,连接不上的情 ...…

查看全部问答>

请问lpc2148的usb virtualcom 功能会占用uart资源吗?

我下了一个lpc2148 usb virtualcom的例程,跑了一下。 里面有两种方式:一种是 VirtuaCom 和 PhysicalCom之间的通讯,另一种是直接VirtualCom的下行通讯点灯和上行通讯,在pc机的串口调试助手可以看到上发的信息提示。 第一种方式,当然是肯定用了 ...…

查看全部问答>

工业上的PLC程控与java有什么区别

请问一下工业上的PLC程控与java有什么区别和联系,两者可以互相替代吗?…

查看全部问答>

DSP的电源一种设计

网上找到的DSP的电源一种设计,供大家参考…

查看全部问答>