【linux驱动开发学习】

本文介绍了如何在Linux内核中添加自定义代码,包括创建dummy.c文件,修改内核配置的Kconfig和Makefile文件,通过menuconfig启用新模块,然后重新编译和烧录内核,以实现开机自动运行的示例代码。
摘要由CSDN通过智能技术生成

简介

该节主要完成功能:在内核中添加一段自定义示例代码,并运行。

具体流程

1. 创建自定义文件

在linux源码目录下的dirvers/misc/下创建一个dummy.c文件,文件内容如下

/*
* Dummy code
*/

#include <linux/module.h>
static int __init dummy_code_init(void)
{
   printk(KERN_INFO "dummy-code loaded\n");
   return 0;
}
   
static void __exit dummy_code_exit(void)
{
   printk(KERN_INFO "dummy-code unloaded\n");
}
   
module_init(dummy_code_init)module_exit(dummy_code_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("TestLinux");
MODULE_DESCRIPTION("Dummy code");

文件内容说明:
module_initmodule_exit是linux内核定义的宏,调用这两个宏后,内核将在其启动过程中,自动运行dummy_code_init函数,在其关机时,自动运行dummy_code_exit函数。
dummy_code_initdummy_code_exit函数内部只实现了从debug串口打印信息的功能。

2. 修改内核配置

文件创建完成后,还需要将文件添加进内核的配置和编译系统中,否则,文件将毫无作用。需要做如下几步操作–

修改Kconfig文件

修改drivers/misc/Kconfig文件,在文件最后添加如下代码

+config DUMMY_CODE
+       tristate "Dummy code"
+       default n
+       ---help---
+       This module is just for demonstration purposes.
 Endmenu	
注意!每行前面的+号代表该行为新增代码,真实使用时无此+号,文章以后所有的+号均为此意。

修改Makefile文件

修改drivers/misc/Makefile文件,在文件中新增如下代码

+obj-$(CONFIG_DUMMY_CODE) += dummy-code.o
该行代码功能:当CONFIG_DUMMY_CODE被使能时,即CONFIG_DUMMY_CODE=y时,dummy-code.c会被编译并被链接进内核二进制镜像中。

运行menuconfig

打开ubuntu的terminal软件,使用cd指令进入到内核源码根目录,输入指令make menuconfig ,将弹出一个菜单选择界面,按照Device Drivers->Misc devices->的顺序,可找到Dummy code选项,如下图所示
make menuconfig 界面
Y键选中Dummy code,注意不要按M选中。
Y选中Dummy code,则CONFIG_DUMMY_CODE会被使能,即CONFIG_DUMMY_CODE=y。修改完成后,保存并退出。

3.重新编译内核并烧录

make menuconfig保存完成后,使用make Image 指令重新编译整个内核,并将生成的镜像烧入开发板。
重启开发板,会看到如下打印

...
loop: module loaded
dummy-code loaded
ahci-mvebu d00e0000.sata: AHCI 0001.0300 32 slots 1 ports 6 Gbps
...

由以上打印可看出,自定义代码已添加进内核,并在系统启动时自动运行。

具体内核配置和编译系统的工作机制,可参考内核文档,在内核源码根目录下的
Documentation\kbuild文件夹下的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值