LED灯驱动模块加载与卸载代码框架
一.? 简介
本文来编写 LED灯驱动模块加载与卸载的代码。
二.?LED灯驱动模块加载与卸载代码框架
1.? 创建工程
我的驱动代码存放目录: ubuntu系统 /home/wangtian/zhengdian_Linux/Linux_Drivers 目录下。
进入 /home/wangtian/zhengdian_Linux/Linux_Drivers 目录,创建 2_led文件夹:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers$ mkdir 1_led
进入 2_led目录下,创建 led.c 文件,此文件就是 led 的驱动文件:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/2_led$ touch led.c
2.? 编写LED驱动框架代码
(1)拷贝 .vscode及其以下文件
注意:.vscode及其以下文件中设置了(NXP官方提供的) Linux内核源码路径。因为驱动可能会调用到 Linux内核中的函数!!!
将前面字符设备驱动实验 1_chrdevbase工程代码中? .vscode 及其以下文件,拷贝到该工程下:
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/2_led$ cp -rf ../1_chrdevbase/.vscode/ ./
拷贝完成后,可以在工程下看到如下文件:
(2)编写 LED驱动模块的加载 / 卸载框架
Led 驱动代码需要添加的头文件,可以参考 字符设备驱动实验 1_chrdevbase工程代码。
LED灯驱动模块加载/卸载代码如下(led.c文件中):
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <linux/uaccess.h>
//Led驱动模块入口函数
static int __init led_init(void)
{
printk("led_init!\r\n");
return 0;
}
//Led驱动模块出口函数
static void __exit led_exit(void)
{
printk("led_exit!\r\n");
}
module_init(led_init); //入口
module_exit(led_exit); //出口
MODULE_LICENSE("GPL"); //模块 licence
MODULE_AUTHOR("lingxuewu"); //模块作者
(3)如何确定 .vscode及其以下文件成功设置好了 指向 Linux内核源码(NXP官方提供的)?
vscode已经打开了 2_led工程,鼠标放在 某个函数名上,同时按下 "Ctrl" 键,确定是否可以跳转到? 函数的定义处,即 我指定的Linux内核源码处(NXP官方提供的)。
如果可以跳转到 我指定的 Linux内核源码处,则说明 .vscode 下所设置的 Linux内核源码路径是有效的,否则,就需要检查所设置的是否正确。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!