Kconfig檔案詳解
注:本文是學習朱老師課程整理的筆記,基於linux2.6.35.7和九鼎X210BV3S開發板進行移植。
Kconfig的格式
下面擷取/drivers/net下的Kconfig檔案中的部分內容:
# Network device configuration
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
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"
source "drivers/net/phy/Kconfig"
Kconfig按照一定的格式來書寫,menuconfig程式可以識別這種格式,然後從中提取出有效資訊組成menuconfig中的選單項。將來在做驅動移植等工作時,有時需要自己新增Kconfig中的一個配置項來將某個裝置驅動新增到核心的配置專案中,這時候就需要對Kconfig的配置項格式有所瞭解,否則就不會新增。
menuconfig:表示選單(本身屬於一個選單中的專案,但是他又有子選單專案)、config表示選單中的一個配置項(本身並沒有子選單下的專案)。一個menuconfig後面跟著的所有config項就是這個menuconfig的子選單。這就是Kconfig中表示的目錄關係。
NETDEVICES:menuconfig或者config後面空格隔開的大寫字母表示的類似於 NETDEVICES 的就是這個配置項的配置項名字,這個字串前面新增CONFIG_後就構成了“.config”檔案中的配置項名字。
source:核心原始碼目錄樹中每一個Kconfig都會用source引入其所有子目錄下的Kconfig,從而保證了所有的Kconfig專案都被包含進menuconfig中。這個也說明了:如果你自己在linux核心中添加了一個資料夾,一定要在這個資料夾下建立一個Kconfig檔案,然後在這個資料夾的上一層目錄的Kconfig中source引入這個資料夾下的Kconfig檔案。
tristate:意思是三態(3種狀態,對應Y、N、M三種選擇方式),意思就是這個配置項可以被三種選擇。
bool:是要麼真要麼假(對應Y和N)。意思是這個配置項只能被2種選擇。
depends:意思是本配置項依賴於另一個配置項。如果那個依賴的配置項為Y或者M,則本配置項才有意義;如果依賴的哪個配置項本身被設定為N,則本配置項根本沒有意義。depends項會導致make menuconfig的時候找不到一些配置項。所以在menuconfig中如果找不到一個選項,但是這個選項在Kconfig中卻是有的,則可能的原因就是這個配置項依賴的一個配置項是不成立的。depends依賴的配置項可以是多個,還可以有邏輯運算。這種時候只要依賴專案運算式子的結果為真則依賴就成立。
select:表示depends on的值有效時,下面的select也會成立,將相應的內容選上。
default:表示depends on的值有效時,下面的default也會成立,將相應的選項選上,有三種選項,分別對應y,n,m。
help:幫助資訊,解釋這個配置項的含義,以及如何去配置他。
Kconfig和.config檔案和Makefile三者的關聯
配置項被配置成Y、N、M會影響“.config”檔案中的CONFIG_XXX變數的配置值。“.config”中的配置值(=y、=m、沒有)會影響最終的編譯連結過程。如果=y則會被編入(built-in),如果=m會被單獨連線成一個”.ko”模組,如果沒有則對應的程式碼不會被編譯。那麼這是怎麼實現的?都是通過makefile實現的。
如makefile中:obj-$(CONFIG_DM9000) += dm9000.o,
如果CONFIG_DM9000變數值為y,則obj += dm9000.o,因此dm9000.c會被編譯;如果CONFIG_DM9000變數未定義,則dm9000.c不會被編譯。如果CONFIG_DM9000變數的值為m則會被連線成“.ko”模組。
相關推薦
Linux Makefile與Kconfig檔案詳解
本文章介紹了makefile跟kconfig檔案,包括編譯過程與makefile編碼規則。 編譯過程: 我們在進行linux核心配置的時候經常會執行make menuconfig這個命令,然後螢幕上會出現以下介面: &n
Kconfig檔案詳解
注:本文是學習朱老師課程整理的筆記,基於linux2.6.35.7和九鼎X210BV3S開發板進行移植。 Kconfig的格式 下面擷取/drivers/net下的Kconfig檔案中的部分內容: # Network device configu
三大框架(ssh)學習——配置檔案詳解(一)
配置檔案詳解 指定web應用預設字符集 <constant name="struts.i18n.encoding" value="gbk" /> 此配置相當於: request.setCharacterEncoding(“gbk”); r
三大框架(ssh)學習——配置檔案詳解(二)
多配置檔案實現 專案經常需要多人協作開發,但是如果大家都是用同一個struts.xml檔案,會互相影響不利於開發的正常開展。這樣,我們可以通過<include>元素指定多個配置檔案。 可以在src下面建立多個struts配置檔案。然後再struts.xml中分別引入: str
xxx.launch檔案詳解(部落格學習筆記)
ROS筆記(一)xxx.launch檔案詳解 .launch檔案是ROS中用於同時啟動多個節點的重要檔案,在大型的ROS專案中使用頻繁,所以掌握其主要元素與屬性對ROS系統的應用至關重要: launch標籤(元素)說明 launch拓展說明 parameter說明
Nginx配置配置檔案詳解
文章目錄 配置檔案 nginx.conf配置檔案詳解 用於除錯、定位問題的配置引數 正常執行必備的配置引數 優化效能的配置引數 事件相關配置 Fastcgi相關配置引數 常需要調整的引數 nginx作為web伺服器時使
Django中static(靜態)檔案詳解以及{% static %}標籤的使用
想要深入學習Django的可以看一些這個視訊:超細講解Django打造大型企業官網 在一個網頁中,不僅僅只有一個html骨架,還需要css樣式檔案,js執行檔案以及一些圖片等。因此在DTL中載入靜態檔案是一個必須要解決的問題。在DTL中,使用static標籤來載入靜態檔案。要使用stat
Hibernate_day01---Hibernate環境搭建、配置檔案詳解、核心api介紹
JavaEE三層結構對應的框架 1) web層:struts2框架 2) service層:spring框架 3)dao層:hibernate框架 -- 對資料庫進行crud操作 什麼是框架: 可複用的設計構件 作用:可以少寫一部分程式碼。使用框架寫程式,會幫我們實現一部
Linux(CentOS)開機自動掛載與fstab檔案詳解
摘要: Linux中我們分完區,並做好檔案系統格式化,掛載(mount)之後才可以使用磁碟裝置。/etc/fstab是用來存放檔案系統的靜態資訊的檔案, 當系統啟動的時候,系統會自動地從這個檔案讀取資訊,並且會自動將此檔案中指定的檔案系統掛載到指定的目錄。 Linux中我們分完區,並做
build.gralde檔案詳解
AS中APP所有的配置盡在一個build.gradle檔案中,打包的時候也是解析build.gralde檔案來打包的,所以搞懂build.gradle檔案是至關重要的,結構如下所示 1、apply plugin用來指定用的是哪個外掛,
scrapy settings配置檔案詳解
# -*- coding: utf-8 -*- # Scrapy settings for step8_king project # # For simplicity, this file contains only settings considered important or # comm
nsswitch.conf檔案詳解
Linux系統下的/etc/nsswitch.conf檔案 轉載自:https://www.cnblogs.com/besharp/p/8351227.html 一、什麼是nsswithch.conf(服務搜尋順序)檔案呢? &n
keepalived介紹及配置檔案詳解
keepalived介紹 Keepalived軟體起初是專為LVS負載均衡軟體設計的,用來管理並監控LVS集群系統中各個服務節點的狀態,後來又加入了可以實現高可用的VRRP功能。因此,Keepalived除了能夠管理LVS軟體外,還可以作為其他服務(例如:Nginx、Hapr
爬蟲Scrapy框架的setting.py檔案詳解
# -*- coding: utf-8 -*- # Scrapy settings for demo1 project # # For simplicity, this file contains only setting
Maven的pom.xml配置檔案詳解
轉自: Maven的pom.xml配置檔案詳解 <!--父專案的座標。如果專案中沒有規定某個元素的值,那麼父專案中的對應值即為專案的預設值。 座標包括group ID,artifact ID和 version。--> &
Spring MVC 配置檔案dispatcher-servlet.xml 檔案詳解
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframew
Hibernate---實體配置(對映)檔案詳解 例如:User.hbm.xml檔案
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" &n
【MyBatis Generator】程式碼自動生成工具 generatorConfig.xml配置檔案詳解
MyBatis Generator官網地址:http://www.mybatis.org/generator/index.html MyBaris Generator中文地址:http://mbg.cndocs.ml/ 在MBG中,最主要也最重要的,就是generatorConfig.xml
轉:ssm spring+springmvc+mybatis中的xml配置檔案詳解
這幾天一直在整合SSM框架,雖然網上有很多已經整合好的,但是對於裡面的配置檔案並沒有進行過多的說明,很多人知其然不知其所以然,經過幾天的搜尋和整理,今天總算對其中的XML配置檔案有了一定的瞭解,所以拿出來一起分享一下,希望有不足的地方大家批評指正~~~ 首先 這篇文章暫時只對框架中所要用到的配
Spring Boot(二)配置檔案詳解
簡介 Spring Boot使用“習慣由於配置”(專案中存在大量預設的配置,而且內建tomcat)的理念,讓你的無需手動進行配置就可以將專案執行起來。使用Spring Boot很容易建立一個獨立執行的、準生產級別的Spring框架的專案。同時,Spring Boot還提供一個全域性配置檔案對一些