概述
Linux驱动编译进内核
- Fang XS.
- 1452512966@qq.com
- 如果有错误,希望被指出
前言
- Linux驱动一般调试阶段编译成模块,使用
insmod
命令将模块加载进内核。 - Linux驱动编译模块和开机自动挂载模块
将驱动模块编译进内核
- 一般情况下,将驱动编译成模块进行测试,确认无误再将模块编译进内核。
- 确保模块是可编译通过且经过验证的。
1.将驱动源文件dev.c
复制到内核源码drivers/相应目录
- 注: 是复制到相应目录,本文以字符驱动为例。
3.修改当前目录下的Kconfig
文件
# my test
config DEV # config 关键字 表示后面是菜单项
# tristate参数代表3种状态(y:编译进内核,n:不编译进内核,m:编译成模块),后面字符串是描述信息
tristate "my dev for sunxi f1c200s"
default y # default y 表示默认编译进内核
help
this driver supports sunxi f1c200s.
3. 修改Makefile
# my test
obj-$(CONFIG_DEV) += dev.o # ()里的与Kconfig对应
- 回到源码顶级目录,运行
menuconfig
.
$ cd ../.. # 回到源码顶级目录
$ export ARCH=arm # 设置SoC架构,根据实际情况修改
$ export CROSS_COMPILE=arm-linux-gnueabi- # 设置交叉编译器,根据实际情况修改
$ make menuconfig
可以看到:
# Legend: [*] built-in [ ] excluded <M> module < > module capable
Device Drivers --->
Character devices --->
<*> my dev for sunxi f1c200s # * 即编译进内核
保存,退出:
5. 执行make
就可以编译内核了。
总结
- 将驱动模块编译进内核
- 将驱动源文件添加到内核驱动文件夹;
- 修改同级目录下的
Kconfig
和Makefile
; - 执行
make menuconfig
将新添加驱动模块选中,保存退出; - 执行
make
编译内核;
最后
以上就是平淡手机为你收集整理的Linux驱动编译进内核Linux驱动编译进内核的全部内容,希望文章能够帮你解决Linux驱动编译进内核Linux驱动编译进内核所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复