Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何增加内核模块

如何增加内核模块

作者头像
233333
发布于 2018-03-07 07:35:54
发布于 2018-03-07 07:35:54
1.6K0
举报

Kconfig

1.先了解一下Kconfig的语法: 

一个典型的内核配置菜单如下: menu "Network device support"  config NETDEVICES          bool "Enable Net Devices"          depends on NET          default y         help                 This is help desciption。  ...  endmenu 

包含在menu/endmenu中的内容会成为Network device support的子菜单。每一个子菜单项都是由config来定义的。congfig下方的那些bool、depends on、default、help等为config的属性,用于定义该菜单项的类型、依赖项、默认值、帮助信息等。

 2. 补充说明一下类型定义部分:

 每个config菜单项都要有类型定义: bool布尔类型、 tristate三态(内建、模块、移除)、string字符串、 hex十六进制、 integer整型。 例如: config HELLO_MODULE  bool "hello test module"  bool 类型的只能选中或不选中,显示为[ ]; tristate类型的菜单项多了编译成内核模块的选项,显示为< > , 假如选择编译成内核模块,则会在.config中生成一个 CONFIG_HELLO_MODULE=m的配置,假如选择内建,就是直接编译成内核影响,就会在.config中生成一个 CONFIG_HELLO_MODULE=y的配置. hex十六进制类型显示为( )。

3. 目录层次迭代 

在Kconfig中有类似语句:source "drivers/usb/Kconfig"  用来包含(或嵌套)新的Kconfig文件,这样便可以使各个目录管理各自的配置内容,使不必把那些配置都写在同一个文件里,方便修改和管理。

下面我们以实例来说明这几个文件的作用

Step1:编辑配置文件Kconfig,加入驱动选项,使之在make menuconfig 的时候出现  打开 linux-2.6.32.2/drivers/char/Kconfig 文件,添加如图所示:

保存退出,这时在linux-2.6.32.2 目录位置运行一下make menuconfig 就可以在Device  Drivers Character devices 菜单中看到刚才所添加的选项了,按下空格键将会选择为<M>,  此意为要把该选项编译为模块方式;再按下空格会变为<*>,意为要把该选项编译到内核中,  在此我们选择<M>,如图:

Step2:通过上一步,我们虽然可以在配置内核的时候进行选择,但实际上此时执行编译内核还是不能把mini2440_hello_module.c 编译进去的,还需要在Makefile 中把内核配置选项和真正的源代码联系起来,打开linux-2.6.32.2/drivers/char/Makefile,如图添加并保存退出:

Step3:这时回到linux-2.6.32.2 源代码根目录位置,执行make modules,就可以生成我们所需要的内核模块文件 mini2440_hello_module.ko 了,如图:至此,我们已经完成了模块驱动的编译。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-09-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
arm-linux 开发步骤
拿到一块YC2440(s3c2440)的开发板,经过几天的学习,我对arm-linux系统开发步骤有了一些认识。就以开发这个开发板为例,arm-linux开发工作大概分4个部分
全栈程序员站长
2022/06/26
4K0
浅谈内核的Makefile、Kconfig和.config文件
Linux内核源码文件繁多,搞不清Makefile、Kconfig、.config间的关系,不了解内核编译体系,编译修改内核有问题无从下手,自己写的驱动不知道怎么编进内核,不知道怎么配置内核,这些问题都和Makefile、Kconfig、.config有关,下面简单谈谈Makefile、Kconfig和.config。希望对你有启发。
韦东山
2020/09/30
3.8K0
浅谈内核的Makefile、Kconfig和.config文件
嵌入式Linux–menuconfig详解
menuconfig是一套图像化配置工具,由ncurses库提供软件支持。ncurses库提供了一系列的函数以便使用者调用它们去生成基于文本的用户界面。 menuconfig本身的软件只负责提供menuconfig工作的这一套逻辑,比如说通过上下左右调整光标,Enter选中等,并不负责提供内容。menuconfig运行之后会读取Kconfig、读取/写入.config文件,Kconfig提供菜单项的内容,.config用来记录菜单项的选择值。
全栈程序员站长
2022/06/30
6.6K0
嵌入式Linux–menuconfig详解
Linux设备驱动开发3-Kconfig构建系统
大多数内核配置选项都对应Kconfig中的一个配置选项(config),比如说下面的代码:
Tupelo
2022/08/10
1K0
linux menuconfig搜索,linux–menuconfig
简单来说就是去饭店点菜:Kconfig是菜单,Makefile是做法,.config就是你点的菜
全栈程序员站长
2022/09/05
20.8K0
鸿蒙系统开发教程_韦东山 3-1Kconfig介绍
对于各类内核,只要支持menuconfig配置界面,都是使用Kconfig。 在配置界面中,可以选择、设置选项,这些设置会保存在.config文件里。 Makefile会包含.config,根据里面的值决定编译哪些文件、怎么编译文件。
韦东山
2022/05/05
8240
鸿蒙系统开发教程_韦东山 3-1Kconfig介绍
【北京迅为】i.mx8mm嵌入式linux开发指南第四篇 嵌入式Linux系统移植篇第六十八章u-boot图形化配置
性能强:i.MX8MM处理器采用了先进的14LPC FinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。
用户10555372
2024/09/11
1060
【北京迅为】i.mx8mm嵌入式linux开发指南第四篇 嵌入式Linux系统移植篇第六十八章u-boot图形化配置
make menuconfig makefile kconfig详解
前面有一片文章分析make menuconfig执行过程:http://blog.csdn.net/xinyuan510214/article/details/50964808
全栈程序员站长
2022/09/01
1.9K0
将hello程序作为驱动程序编译进系统内核
恩,可能是我比较愚钝,一个内核编译搞了一天,各种问题,各种bug,几度无奈,也是因为我突发奇想,并没有按照原来的那种操作,我直接把helloworld程序放到内核模块中编译成了一个驱动程序,虽然其中遇到了不知道多少的问题,不过最终是个完美的结局,给自己点个赞! 好了,废话不多说,直接开始还原我的helloworld驱动内核程序编译流程。
roobtyan
2019/02/21
1.6K0
将hello程序作为驱动程序编译进系统内核
详解Linux内核编译配置(menuconfig)、文件系统制作
分别是: 1、Makefile:分布在 Linux 内核源代码根目录及各层目录中,定义 Linux 内核的编译规则; 2、配置文件(config.in):给用户提供配置选择的功能; 3、配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界面(提供基于字符界面、基于 Ncurses 图形界面以及基于 Xwindows 图形界面的用户配置界面,各自对应于 Make config、Make menuconfig 和 make xconfig)。
全栈程序员站长
2022/08/10
7.4K0
详解Linux内核编译配置(menuconfig)、文件系统制作
linux内核编程_linux内核是什么
进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)和进程间通信(IPC)
全栈程序员站长
2022/11/08
18.9K0
linux内核编译AX99100驱动
linux内核版本:4.14 pcie转四路串口芯片:亚信的AX99100 linux内核里是没有这块芯片的驱动的,这里自己添加驱动进去进行编译。 1.从亚信官网下载该芯片的linux驱动https:
咖啡走糖
2022/11/05
8.8K2
linux内核编译AX99100驱动
Linux驱动实践:带你一步一步编译内核驱动程序
大家好,我是道哥。今天给大家分享一些笔记本里的一些存货: Linux 系统中的驱动和中断相关。
IOT物联网小镇
2021/11/15
3.3K0
Linux驱动实践:带你一步一步编译内核驱动程序
Linux 内核裁剪框架初探
大约是在2000年的时候,老码农还很年轻,当时希望将Linux 作为手机的操作系统, 于是才有了进行内核裁剪的想法并辅助实践,效果尚好,已经能在PDA上执行手机的功能了。一晃20多年过去了,Linux 已经有了太大的变化,内核裁剪的技术和方式也有了较大的不同。
半吊子全栈工匠
2022/12/03
2.3K0
Linux 内核裁剪框架初探
menuconfig 语法
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133202.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/27
5110
menuconfig 语法
第3阶段——内核启动分析之make menuconfig内核配置(2)
本文介绍了Linux内核编译原理和过程,包括如何通过make menuconfig配置内核选项,以及通过make s3c2410_deconfig自动配置内核选项。此外,还介绍了如何通过查看.config文件来了解内核配置选项。最后,还探讨了如何通过修改.config文件来定制内核编译过程,并使用make uImage编译内核。
诺谦
2018/01/03
1.5K0
第3阶段——内核启动分析之make menuconfig内核配置(2)
第3阶段——内核启动分析之内核编译试验(1)
该文章介绍了如何通过U-Boot在ARM平台上进行Linux内核的编译、烧写和启动。首先介绍了U-Boot的编译过程,然后说明了如何将编译好的U-Boot刷入NAND Flash并启动内核。文章还介绍了如何使用U-Boot的串口终端进行命令行交互,并总结了如何在U-Boot中编译Linux内核的步骤和注意事项。
诺谦
2018/01/03
1.2K0
第3阶段——内核启动分析之内核编译试验(1)
DshanMCU-R128s2 RTOS 软件包配置
有过 linux 内核开发经验的人,对 menuconfig 不会陌生。对于各类内核,只要是支持 menuconfig 配置界面,都是使用 Kconfig。
韦东山
2023/12/23
1860
DshanMCU-R128s2 RTOS 软件包配置
Rust for Linux | 用 Rust 写 Linux 内核模块
Linux 内核模块在概念和原理层面与动态链接模块(DLL或so)类似。但对于 Linux 来说,内核模块可以在系统运行期间动态扩展系统功能,而无须重新启动系统,更无须重新编译新的系统内核镜像。所以,内核模块这个特性为内核开发者提供了极大的便利,因为对于号称世界上最大软件项目的Linux来说,重启或重新编译的时间耗费肯定是巨大的。
张汉东
2022/12/08
15.2K0
Rust for Linux | 用 Rust 写 Linux 内核模块
Linux-Kconfig总结与分析
示例1-创建复选框(多选多)-探索宏变量参数 接下来我们来试试如何给不同宏设置不同参数,以MY_SYMBOL1~ MY_SYMBOL5为例 设置MY_SYMBOL3~ MY_SYMBOL5依赖于MY_SYMBOL2 修改内核顶层Kconfig文件,添加内容:
诺谦
2019/05/24
3K0
相关推荐
arm-linux 开发步骤
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文