在内核kbuild中加入arch平台配置项

2023-10-07 08:18

本文主要是介绍在内核kbuild中加入arch平台配置项,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Kbuild编译内核,需要两中类型文件的支持Makefile和Kconfig。Makefile只是在编译的时候使用,但是内核还需要支持配置功能,所以还需要一个Kconfig用来在make menuconfig的时候进行显示。
不管是新写的驱动代码,还是新添加的平台代码,都需要编写相应的Kconfig和Makefile文件来加入的kbuild中进行编译。

要想知道怎么为新的版型添加Kconfig和Makefile,我们首先需要知道kbuild的编译流程是怎样的。从命令行说起,我们编译一个针对某个版型的内核,会使用如下的命令来进行:
1.配置内核
比如编译arm平台上的内核
make ARCH=arm menuconfig
这一步只是为了编译内核,设置内核特性和驱动模块。它会首先进入到arch/arm/目录中,然后读取该目录下的Kconfig。这个就是内核配置文件的主入口,可以看到它是根据不同的ARCH来区分的。我们打开相应的文件,可以看到其中调用了很到其他目录下的Kconfig文件,由此我们才可以在界面上看到配置选项。
新增一个版型我们需要在System Type特性下面来进行配置,如下所示:


menu "System Type"config MMUbool "MMU-based Paged Memory Management Support"default yhelpSelect if you want MMU-based virtualised addressing spacesupport by paged memory management. If unsure, say 'Y'.#
# The "ARM system type" choice list is ordered alphabetically by option
# text.  Please add new entries in the option alphabetic order.
#
choiceprompt "ARM system type"default ARCH_VERSATILE if !MMUdefault ARCH_MULTIPLATFORM if MMU#新添加平台
config ARCH_XXXbool "NEW Platform"select CPU_V8select GENERIC_CLOCKEVENTSselect ARCH_REQUIRE_GPIOLIBselect COMMON_CLKselect CLKDEV_LOOKUPselect ARM_GICselect HAVE_SMPselect ARM_HAS_SG_CHAINselect ARCH_HAS_OPPselect ARCH_HAS_CPUFREQselect MIGHT_HAVE_CACHE_L2X0select USB_GADGET_DUALSPEEDselect PM_OPP if PM helpSupport for Actions OWL Platformendchoice
source "arch/arm/mach-xxx/Kconfig"

我们需要在ARM system type 的choice中加入新的选项,比如上面的ARCH_XXX平台,以便我们能把自己的版型配置上。然后调用mach-XXX下面的Kconfig,我们把跟平台相关的配置型放置在mach-XXX目录下的Kconfig里面去。这样经过层层调用,这些平台相关的内核配置项就会在menuconfig的时候显示出来了,并且我们可以针对需要的特性进行配置了。

2.编译内核
经过上面的menuconfig,会在内核目录下生成.config文件,里面包括了我们配置的项目,然后在这一步我们会进行编译。
make uImage
这一步在编译的时候会首先读取.config里面的配置内容,更具相应的内容来编译不同的模块,Makefile中的CONFIG_XXX总是对应于Kconfig里面的XXX,比如CONFIG_ SMP就对应于Kconfig里面的config SMP选项。举个例子
smp-$(CONFIG_SMP) += omap-smp.o omap-headsmp.o
这个编译项目就是对应于我们配置的config SMP选项,在menuconfig配置的时候可以配置为*/M/空。所以CONFIG_SMP也对应三种结果,一个是y,一个是m,要么就为空。因此这条语句就可以变为:

(a)smp-y += omap-smp.o omap-headsmp.o
它的含义就是把后面的objs编译到内核中,也就是vmlinux中。
(b)smp-m += omap-smp.o omap-headsmp.o
它的含义是把后面的objs编译成一个module,命名为smp.ko,注意要想生成module,还需要执行一个make modules来进行编译才行。
(c)如果不配置,那么后面的objs就不会进行编译了。

这篇关于在内核kbuild中加入arch平台配置项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/157157

相关文章

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据