精华内容
下载资源
问答
  • kconfig文件
    2020-11-10 10:31:58

    1 Kconfig的格式

    1.1 menuconfig表示目录菜单
    1.2 config表示配置项
    1.3 tristate表示有三个配置项,分别是编译,不编译,编译成模块
    1.4 bool表示有两个配置项,分别是编译或者不编译
    1.5 depends表示依赖与那个文件
    1.6 select表示默认配置

    2 当前的Kconfig要使用需要在上一级目录下的Kconfig中用source引入。

    3 查看配置是否编译成功可以去源目录下查看是否生成.o文件或者.ko文件

    更多相关内容
  • linux 驱动之Kconfig文件和Makefile文件实例 在Linux编写驱动的过程中,有两个文件是我们必须要了解和知晓的。这其中,一个是Kconfig文件,另外一个是Makefile文件。如果大家比较熟悉的话,那么肯定对内核编译需要的...
  • 这其中,一个是Kconfig文件,另外一个是Makefile文件。如果大家比较熟悉的话,那么肯定对内核编译需要的.config文件不陌生,在.config文件中,我们发现有的模块被编译进了内核,有的只是生成了一个module。这中间,...

    在Linux编写驱动的过程中,有两个文件是我们必须要了解和知晓的。这其中,一个是Kconfig文件,另外一个是Makefile文件。如果大家比较熟悉的话,那么肯定对内核编译需要的.config文件不陌生,在.config文件中,我们发现有的模块被编译进了内核,有的只是生成了一个module。这中间,我们如何让内核发现我们编写的模块呢,这就需要在Kconfig中进行说明。至于如何生成模块,那么就需要利用Makefile告诉编译器,怎么编译生成这个模块。模仿其实就是最好的老师,我们可以以内核中经常使用到的网卡e1000模块为例,说明内核中是如何设置和编译的。

    首先,我们可以看一下,在2.6.32.60中关于e1000在Kconfig中是怎么描述的,

    但也不能不熟悉,不然就做出各种愚蠢事情,诸如中断里睡眠(真得见过在中断服务程序里直接调一些复杂到他认识不到会引起睡眠和调度的内核函数)

    不熟悉linux内核,就很容易把内核搞死,或者cpu占用严重,或者隐藏不稳定的bug (诸如申请大的局部变量导致内核栈溢出,内核栈只有可怜的2页)

    我的判断标准是,至少看完lkd并且完全理解,有一些判断题目可供参考。知道以下答案也就差不多了,可以搞驱动了:

    1、为什么中断上下文不能睡眠

    2、自己写linux内核程序,如何操作物理地址

    3、在是否smp 是否可抢占内核 中断上下文还是内核上下文 ,一共8种组合下,应该使用哪些内核同步互斥机制

    4、liunux内核启动完成后,是为进程提供服务,还是主动管理进程?

    5、能够遍历一些内核数据结构,诸如task_struct

    6、熟悉linux虚拟内存地址空间的分配。不需要理解到mmu 页表之类的,但至少能理解内核线程有没有用户空间内存描述?为什么不同进程的用户空间内存没有影响?为什么多线程用户态空间共享,那么内核态栈是否也共享?

    config E1000

    tristate "Intel(R) PRO/1000 Gigabit Ethernet support"

    depends on PCI

    ---help---

    This driver supports Intel(R) PRO/1000 gigabit ethernet family of

    adapters.  For more information on how to identify your adapter, go

    to the Adapter & Driver ID Guide at:

    For general information and support, go to the Intel support

    website at:

    More specific information on configuring the driver is in

    .

    To compile this driver as a module, choose M here. The module

    will be called e1000.

    上面的内容是从drivers/net/Kconfig中摘录出来的。内容看上去不复杂,最重要的就是说明了模块的名称、用途、依赖的模块名、说明等等。只要有了这个说明,我们在shell下输入make menuconfig的时候就可以看到e1000这个选项了,输入y表示编译内核;输入n表示不编译;输入m表示模块编写,这是大家都知道的。

    那么,有了这个模块之后,需要编译哪些文件中,我们在drivers/net/Makefile看到了这样的内容,

    obj-$(CONFIG_E1000) += e1000/

    显然,这段代码只是告诉我们,要想编译e1000,必须要包含e1000这个目录,所以e1000目录下必然还有一个Makefile,果不其然,我们在e1000目录下发现了这个Makefile,内容如下,

    obj-$(CONFIG_E1000) += e1000.o

    e1000-objs := e1000_main.o e1000_hw.o e1000_ethtool.o e1000_param.o

    看了这个文件,其实大家心理就应该有底了。原来这个e1000模块最终生成的文件就是e1000.ko,依赖的文件就是e1000_main.c、e1000_hw.c、e1000_ethtool.c、e1000_param.c这四个文件。只要CONFIG_E1000被设置了,那么这个模块就会被正常编译。我们要做的就是打开这个开关就可以了,剩下kernel会帮我们搞定一切。当然,如果大家想把这个模块拿出来,自己用一个独立的module编译也是可以的。

    Linux环境下使用VSCode编译makefile文件的注意事项

    Linux环境下使用VSCode编译makefile文件的注意事项 首先安装C/C++的两个依赖 在debug,launch会自动的生成下方的launch.json launch.json { // ...

    Ubuntu 16.04下Linux驱动编写第一步

    源码环境的搭建 Install源码 >sudo apt-cache search linux-source linux-source - Linux kernel source with Ubu ...

    linux驱动学习(二) Makefile高级【转】

    转自:http://blog.csdn.net/ghostyu/article/details/6866863 版权声明:本文为博主原创文章,未经博主允许不得转载. 在我前一篇写的[ linux驱动学 ...

    编写一个通用的Makefile文件

    1.1在这之前,我们需要了解程序的编译过程 a.预处理:检查语法错误,展开宏,包含头文件等 b.编译:*.c-->*.S c.汇编:*.S-->*.o d.链接:.o +库文件=*.exe ...

    Android驱动中的Kconfig文件与Makefile文件

    内核源码树的目录下都有两个文档Kconfig(2.4版本是Config.in)和Makefile.分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文 ...

    linux驱动编写(电源管理驱动)

    对于嵌入式设备来说,合适的电源管理,不仅可以延长电池的寿命,而且可以省电,延长设备运行时间,在提高用户体验方面有很大的好处.所以,各个soc厂家在这方面花了很多的功夫.下面,我们可以看看linux是如 ...

    Linux驱动编写(块设备驱动代码)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 按照ldd的说法,linux的设备驱动包括了char,block,net三种设备.char设备 ...

    linux驱动编写之poll机制

    一.概念 1.poll情景描述 以按键驱动为例进行说明,用阻塞的方式打开按键驱动文件/dev/buttons,应用程序使用read()函数来读取按键的键值.这样做的效果是:如果有按键按下了,调用该re ...

    linux驱动编写(pwm驱动)【转】

    本文转载自:https://blog.csdn.net/feixiaoxing/article/details/79889240 pwm方波可以用来控制很多的设备,比如它可以被用来控制电机.简单来说, ...

    随机推荐

    【补解体报告】topcoder 634 DIV 2

    A:应该是道语文题,注意边界就好: B:开始考虑的太复杂,没能够完全提取题目的思维. 但还是A了!我愚蠢的做法:二分答案加暴力枚举, 枚举的时候是完全模拟的,比如每次取得时候都是从大到小的去取,最后统 ...

    angularJS+requireJS并集成karma测试实践

    最近在为下一个项目做前端技术选型,Angular是必须要用的(BOSS指定,个人感觉也不错,开发效率会很高).由于需要加载的JS很多,所以打算看看angular和requirejs一起用会怎么样.在g ...

    手动向IIS注册.net框架组件

    安装.NET Framework时,会自动在IIS上注册ASP.NET,如果已经存在.NET Framework再安装的IIS,必须告诉IIS已经存在framework.   有时IIS功能缺失或异常 ...

    (转)ubuntu下如何查看软件安装目录以及安装版本

    1.查询版本 aptitude show 软件名 例如:aptitude show kde-runtime 显示如下: ****@ubuntu:~$ aptitude show kde-runtime ...

    sqlserver—数据完整性(理论篇)

    数据完整性主要指的是数据的精确性和可靠性,目的就是为了防止数据库中存放的数值,以及字符具有合法性(即按照管理员定义的规则进行存放) 分为以下四类: 实体完整性 实体完整性要求每一个表中的主键字段都不能 ...

    S7 Connection 通讯

    参考两个链接: http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=74626&cid=1029 https://su ...

    六.使用python操作mysql数据库

    数据库的安装和连接 pymysql的安装              pip install PyMySQL python连接数据库 import pymysql db = pymysql.connec ...

    后端自测必备神器-PostMan

    作为后端的一个小小菜鸟,写代码没有把握,总怕出错,也不敢直接扔测试,这个时候就需要一个神器能够辅助自己去测试各种情况,让自己安心的交给测试,嗯……这时神器出场了------PostMan.在一个偶然的 ...

    C#获取获取北京时间多种方法

    #region 获取网络时间 /// /// 获取中国国家授时中心网络服务器时间发布的当前时间 /// ///

    手机web——自适应网页设计(html/css控制)(转)

    一. 允许网页宽度自动调整: "自适应网页设计"到底是怎么做到的?其实并不难. 首先,在网页代码的头部,加入一行viewport元标签.

    展开全文
  • 1.1、Kconfig文件内容 menuconfig NETDEVICES default y if UML depends on NET bool "Network device support" ---help--- You can say N here if you don't intend to connect your Linux box to any ...

    1.1、Kconfig文件内容

    menuconfig NETDEVICES
    	default y if UML
    	depends on NET
    	bool "Network device support"
    	---help---
    	  You can say N here if you don't intend to connect your Linux box to
    	  any other computer at all.
    
    config DM9000
    	tristate "DM9000 support"
    	depends on ARM || BLACKFIN || MIPS
    	default y
    	select CRC32
    	select MII
    	---help---
    	  Support for DM9000 chipset.
    
    	  To compile this driver as a module, choose M here.  The module
    	  will be called dm9000.
    
    source "drivers/net/arcnet/Kconfig"
    

    1.2、Kconfig文件内容对应在Menuconfig中

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

    1.3、Kconfig文件介绍

    Kconfig按照一定的格式来书写,menuconfig会按照约定的格式来解析,然后提前出有效信息并以图形界面的方式显示出来。将来我们添加驱动的时候,需要在menuconfig添加一个对应的配置项,只需要在对应的Kconfig中按照格式添加,重新打开menuconfig就会显示出来该配置项。

    1.4、关键字介绍:

    (1)menuconfig是关键字,表示这是一个菜单,该选项下还有子目录,一个menuconfig后面跟着的所有config项就是这个menuconfig的子菜单,CONFIG_NETDEVICES是配置项在.config中的名字;
    (2)config表示这是个选项,DM9000是名字;
    (3)“default y”,表示这个选项如果不配置,默认选Y;
    (4)bool “Network device support”:bool说明这个选项只能选中或者去除,Network device support是在menuconfig中该选项的名字;
    (5)tristate “DM9000 support”:表明该选项不仅可以选中或者去除,还可以单独编译成一个模块;
    (6)depends on NET:说明该选项还依赖于前面的NET选项,NET没被选中该选项就不会有效,在menuconfig中甚至都不会显示出来;
    (7)select CRC32:只要选中该选项就默认选中后面的CRC32;
    (8)—help—:后面的是该选项的说明,在menuconfig中查询时的帮助信息就是这里写的;
    (9)source “drivers/net/arcnet/Kconfig”:source关键字和C语言的include关键字一样的,起到引用的作用;

    展开全文
  • ESP-IDF Kconfig文件配置

    2021-10-08 19:13:53
    ESP-IDF Kconfig文件配置 IDF开发环境的工程目录下,有一个sdkconfig文件,这个文件中包含了一些预设的参数,可以通过menuconfig进行可视化调节参数,十分方便。但是如果我们要修改这个文件,会发现编译的时候,我们...

    ESP-IDF Kconfig文件配置

    IDF开发环境的工程目录下,有一个sdkconfig文件,这个文件中包含了一些预设的参数,可以通过menuconfig进行可视化调节参数,十分方便。但是如果我们要修改这个文件,会发现编译的时候,我们修改的文件会被编译器改写,因此,下面就教大家如何修改Kconfig文件。

    1.建立Kconfig.projbuild文件

    在工程的main路径中建立Kconfig.projbuild文本文件

    image-20211008190349992

    2.改写Kconfig文件

    这里是Kconfig文件格式的介绍

    下面是一个I2C自定义组件里的例子,在Kconfig中增加关于I2C总线SCL引脚的定义:

    image-20211008190405060

    menu "Example Configuration"
    
    
    
      menu "I2C Master"
    
    ​    config I2C_MASTER_SCL
    
    ​      int "SCL GPIO Num"
    
    ​      default 6 if IDF_TARGET_ESP32C3
    
    ​      default 19 if IDF_TARGET_ESP32 || IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3
    
    ​      help
    
    ​        GPIO number for I2C Master clock line.
    

    menu "I2C Master"是生成菜单的名字,内部包含N个关键字或者配置选项,可以进行嵌套,时间效果如下图:

    image-20211008190432498

    config是关键字,表示一组配置选项的开始,内部包含N个配置选项

    int "SCL GPIO Num"这个为所配置选项的名称,前面跟该变量的数据类型。

    default 跟该条目的初始变量值,可用if进行预值判断。

    help就是在UI界面中,点击问号,会出现的文本,给用户做配置选项的说明。

    image-20211008190445369

    实际的最后配置界面中,就会出现这样子的目录结构:

    image-20211008190459972

    具体的Kconfig语言还有很多其他的语法,它使我们可以使用menuconfig时能快速配置各个选项,十分方便,其他的写法可以举一反三。

    修改完Kconfig,projbuild文件后,点击保存,进入下一步。

    3.清空工程(Full Clean)并编译

    猴急的小伙伴修改完肯定迫不及待地点了编译,这时候你会发现,你的Kconfig文件还是没有任何更改,因为编译器二次编译的检索文件更新,检测不到我们新增的Kconfig.projbuild,因此我们需要点击VSCODE下方的垃圾桶图标(也可用idf.py的clean命令):

    image-20211008190516981

    然后再点击右侧的编译,等待漫长的编译过程后,再点击下方的menuconfig的齿轮图标,可以看到成果了:

    image-20211008190557201

    image-20211008190615013

    4.CONFIG变量使用

    配置完可视化界面修改变量后,我们要怎么使用这个变量呢?

    这个时候,这个CONFIG变量已经转换成了常量,只能读取,不能进行修改,因此我们可以很方便地进行操作。

    首先在我们之前定义的CONFIG变量名前加上前缀CONFIG_,这个是编译器帮我们加的,具体的变量可以在sdkconfig文件中找到:

    image-20211008190630929

    可以发现我们使用的是IDF_TARGET_ESP32平台,因此编译器将此数值定义为了19。

    我们可以使用#define关键字,将改预定义变量,与实际程序中的接口变量进行替换:

    image-20211008190654329

    当然也可以直接将该常量赋值给其他的变量:

    image-20211008191137379

    这样子就完成了,本人才疏学浅,若文中有误请各位大佬不吝赐教!

    展开全文
  • 关键的动作是在/drivers/char/Makefile的后面增加对应的source,这样就会使依赖关系发生作用obj-$(CONFIG_SM1623DRV) += sm1623drv/第二步就是同样在/drivers/char/Kconfig的后面增加对应的子文件夹的Kconfig文件,...
  • Kconfig文件的用途及解析

    千次阅读 2020-08-17 17:19:45
    Linux中Kconfig文件的用途 语法, 以及使用方式 遇到的问题: Kconfig文件中定义的宏控和config文件中定义的不一致,导致不能编译生成指定的文件,需要详细了解并总结下该文件,记录该问题
  • 在对应目录下配置Kconfig文件,就是在配置对应的menuconfig项目。有很多种配置方式,这里我暂时只是给一种简单的,也就是yes和no的方式。比如我新添加了一个配置,写了一个电机驱动设备:config XXXX_MOTORbool ...
  • RT-Thread Kconfig文件理解

    千次阅读 2020-03-27 14:49:17
    BSP中的Kconfig文件的说明 写此博客用于记录自己学习RT-Thread的一些容易忘记的内容 打开了一个STM32F103x的Kconfig文件如下: mainmenu "RT-Thread Project Configuration" config BSP_DIR string option env...
  • 本文章介绍了makefile跟kconfig文件,包括编译过程与makefile编码规则。编译过程:我们在进行linux内核配置的时候经常会执行make menuconfig这个命令,然后屏幕上会出现以下界面:alt这个界面是怎么生成的呢?跟我们...
  • Kconfig文件说明

    2019-09-30 13:18:01
    下面截取/drivers/net下的Kconfig文件中的部分内容: # Network device configuration menuconfig NETDEVICES default y if UML depends on NET bool "Network device support" ...
  • (其中.config的内容是在make menuconfig的时候,通过Kconfig文件设置的结果。 举个例子:  假设想把自己写的一个flash的驱动程式加载到工程中,而且能够通过menuconfig设置内核时选择该驱动该怎么办呢?能分三...
  • Kconfig文件

    2017-08-22 17:12:20
    tristate "test counter1" 默认不编译 ... this is for pulse counter test. ...Kconfig 脚本完成之后运行make menuconfig 就会见到以下菜单: ...第一行跟Kconfig 中”...第三行跟Kconfig 中”default m ” 对应
  • Kconfig的格式 ...下面截取/drivers/net下的Kconfig文件中的部分内容: # Network device configuration menuconfig NETDEVICES default y if UML depends on NET bool "Network device support
  • kconfig文件分析

    2011-11-03 21:18:33
    linux内核的congfig文件分析,介绍了config文件的编写方法。
  • 包括:led驱动c源码文件led.c、应用层测试文件test.c、makefile和Kconfig,总共四个文件
  • Kconfig使用介绍

    2022-07-10 09:43:24
    Kconfig使用介绍
  • 内核源码树的目录下都有两个文件Kconfig和Makefile。分布到各目录的Kconfig构成了一个分布式的内核配置数据库, 每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)...
  • Kconfig配置文件

    2020-10-24 15:07:02
    分布到各目录的Kconfig文件构成了一个分布式的内核配置数据库,每个Kconfig文件分别描述了所属目录源文档相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出来菜单,用户选择后保存到....
  • Kconfig

    2022-02-17 14:22:07
    Kconfig的作用:Kconfig用来配置内核,它就是各种配置界面的源文件,内核的配置工具读取各个Kconfig文件,生成配置界面供开发人员配置内核,最后生成配置文件.config Kconfig文件的基本组成 1.config条目 config ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,142
精华内容 5,656
关键字:

kconfig文件