在内核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

相关文章

Nginx 重写与重定向配置方法

《Nginx重写与重定向配置方法》Nginx重写与重定向区别:重写修改路径(客户端无感知),重定向跳转新URL(客户端感知),try_files检查文件/目录存在性,return301直接返回永久重... 目录一.try_files指令二.return指令三.rewrite指令区分重写与重定向重写: 请求

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

maven私服配置全过程

《maven私服配置全过程》:本文主要介绍maven私服配置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录使用Nexus作为 公司maven私服maven 私服setttings配置maven项目 pom配置测试效果总结使用Nexus作为 公司maven私

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos