Linux驱动之配置内核

Linux在嵌入式系统中大受欢迎的一个重要因素就是开源,开源的特性决定了Linux内核可以根据个人的需求进行裁剪,裁剪内核就是根据你的硬件资源,将一些不需要的驱动裁剪掉,再把一些原本没有的驱动添加到内核,那么配置好的内核就适用于你特定的硬件平台。配置内核时,make zImage   make menuconfig,还有  .config    Kconfig  Makefile文件,以讯为iTop-4412(三星exynos4412处理器)平台,捋一捋这些命令,文件的关系。

编译内核时,首先要在源码目录下执行make zImage,如果是刚解压完的源码,直接执行make zImage命令是不会成功的,因为源码目录下缺少了.config文件,这个文件是干嘛的,打开看一下就会发现,基本上是一些宏定义的赋值


那么这些宏在什么时候用呢,我们知道,执行make zImage后,会逐层的在各目录下执行make,执行make时,就会需要Makefile文件,以/driver/char目录下的Makefile文件为例


Makefile文件中,$是取值的意思,也就是取各个宏的值,那么这些宏的值在哪,就在.config文件中。这时候,如果这些宏的未定义,那么相应的驱动就不会被编译进内核,如果这些宏的定义为y,以上图最后一行代码为例,如果CONFIG_PRINTER这个宏在.config文件中有CONFIG_PRINTER=y,那么最后一行代码就等价于

obj -y += lp.o

那么对应的驱动就会被编译进内核,这也就是我们裁剪内核的手段,就是把相应的宏赋值为y或者未定义,来决定哪些驱动要编译进内核,哪些不编译。

那么这个文件是怎么来的,手动写?这个有点不太现实,因为驱动太多了,关键是手动写很容易出错。然后Linux就想了一个办法,make menuconfig图形化的配置界面。有了这个配置界面后,就可以用键盘来对内核进行配置,在源码根目录下执行make menuconfig就会出现配置界面。


这样我们就可以用空格来决定那些驱动要配置进内核,配置好了之后,保持退出,就会自动生成   .config文件。假设我们在上图中将Enable LEDS config这个菜单选中,那么就会在.config文件中出现这样一行代码


那么make menuconfig是怎么工作的呢,这些配置的菜单是怎么出现的,假如我自己要添加一个驱动,怎么才能让配置菜单出现在make menuconfig的选项中呢。这一连串的问题都是因为Kconfig这个文件,make menuconfig名令就是逐层的读取Kconfig文件,然后生成菜单,看一下/driver/char目录下的Kconfig文件


以上每五行为一组,第一行表示配置哪个宏,也就是说刚刚在上面描述的CONFIG_LEDS_CTL这个宏,最初就是在这里定义的。第二行告诉表示这个变量在配置界面中是bool值还是tristate,bool值在配置的时候只能配置为y或者未定义,tristate还可以选择为m,表示编译为模块。第三行表示该选项的默认值。第四行和第五行表示用户选择help时的帮助内容。

如果用一张图表示上面的关系,是这样的


那么假设现在有一个测试驱动名字为hello,假设驱动已经书写好了,保存在/driver/char/hello.c文件中,该如何把这个驱动编译进内核,根据上图中关系,首先要编辑/driver/char目录下的Kconfig文件,在这个文件中照葫芦画瓢,添加这样一句代码


保存退出后,在源码根目录下,执行make menuconfig进入到Device Driver-->Character devices就会看到刚刚添加的内容


默认状态下是选中的,因为我们在Kconfig文件中配置的default y  。这样我们保存退出后就会在.config文件中看到这个宏的值已经被赋值为y


那么这个宏被赋值为y有什么作用的,我们还需要修改一下/driver/char目录下的Makefile文件,在文件中也是照葫芦画瓢,添加这样一行代码


这样在编译的时候,我们的hello.c文件就最终编译进内核。


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iTop,即IT运营门户(IT Operation Portal),是一种开源web应用程序,用于IT环境的日常运营。它基于ITIL最佳实践,而又不拘泥于任何具体流程。它很灵活,可以适应不管是非正式的、务实的流程,还是严格遵循ITIL的流程。 它的核心是CMDB,即配置管理数据库(Configuration Management Data Base)。CMDB是iTop最早开发的部分,然后是工单流程和其它衍生流程。 它的理念是,CMDB必须是业务工具。保证CMDB的准确性和最新性的唯一方式是: IT团队(如技术支持代理、IT工程师等)依赖它解决IT服务管理的各类问题。此外,CMDB与其它IT工具(如监控系统、报表工具、自动化库存等)整合得越多,CMDB就越全面。 它的用途有: - 记录IT基础设施(如服务器、应用程序、网络设备、虚拟机、联系人、位置等)及其各个部件之间的关联关系; - 管理事件、用户请求和计划停机等; - 归档IT服务及与外部供应商的合约,包括SLA(服务级别协议); - 手动或脚本方式导出所有信息; - 批量导入(手动和脚本方式)或同步/联调所有来自外部系统的数据; 它适用于不同角色: - 服务台; - 技术支持工程师(一线支持、二线支持…); - 服务经理; - IT经理; - 终端用户:通过简易的门户界面,终端用户可以直接提出请求; iTop基于Apache/IIS、MySQL和PHP,因此,它可以在任何支持这些程序的操作系统上运行。其,Windows和Linux(Debian、Ubuntu和Redhat)已得到验证;Solaris和MacOS X同样也支持。此外,由于iTop是基于网页的应用程序,因此不需要在用户电脑上部署任何客户端,而只需要一个简单的Web浏览器(IE 8+、Firefox 3.5+、Chrome或Safari 5+)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值