linux kconfig配置

kernel的配置最终都会集中在一个.config文件中,然后会根据这个.config文件来配合Makefile来选择性的build内核镜像

.cnfig文件的生成分为如下几个步骤

首先每个子目录中的Kconfig

Kconfig中会添加配置的描述,用menuconfig会显示这些信息

例如:config  xxxx_xx

Makefile中需要将相应的模块的目标,为后面makefile编译看到.config中有这条CONFIG就会编译这条

例如:obj-$(CONFIG_XXXX_XX) +=  mmmmm.o

另外再加上dts就可以把新的模块加到内核中


kconfig中的描述常用的有depend on 与 select

依赖 depends on
这个关键字表示了在某些配置选中后,本配置项才会显示。
在 driver/pci/Kconfig文件中有,
config PCI_MSI
    bool "Message Signaled Interrupts (MSI and MSI-X)"
    depends on PCI
    depends on ARCH_SUPPORTS_MSI
可以发现,要配置MSI必须要先支持PCI。 恩这个道理咱都懂, 连PCI都没有,哪里来的MSI啊。


反向依赖 select
这个关键字表示了当本配置项选中后,其他的配置项也需要选中。
在 arch/x86/Kconfig文件中有:
config HIGHMEM64G
    bool "64GB"
    depends on !M386 && !M486
    select X86_PAE
    ---help---
      Select this if you have a 32-bit processor and more than 4
      gigabytes of physical RAM.

看上去就是说要支持更多的物理内存,那么在x86的平台上,就要选中X86_PAE。


另外再insmod的时候出现error  找不到内核符号

查找.config或者System.map确实没找到这个符号,查找原因obj-m的模块的内核模块不会将其模块符号编译到内核中去


error  moduleA: cant request region for resource[mem   0xaaaaaaaa  0xbbbbbbbbbbbb]

怀疑是在使用devm_ioremap_resource的时候因为dts中的模块之间的地址冲突造成的

与 request_mem_region()函数有关

可以通过查看/proc/mem看这段mem是否已经被映射过了


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shenhuxi_yu

感谢投币,继续输出

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值