二、(正点原子)Linux LED驱动开发实验

一、Linux下LED灯驱动原理

        我们知道,在Linux下的任何外设驱动,最终由要配置相对应的硬件寄存器。所以这次的LED灯驱动最终也是对I.MX6ULL阿尔法开发板上的IO进行配置,于裸机不同的是,在Linux下编写驱动要符合Linux的驱动框架。所以我们需要编写一个LED灯的驱动,通过这个驱动连接到LED灯的硬件,也就是连接到LED寄存器,操作寄存器控制LED灯。

二、Linux下LED灯驱动程序编写

        创建vscode工程,将我们第一次实验的工程拷贝一份。第一次的字符设备驱动中,由我们写好的Makefile和.vscode目录(里面是对Linux源码路径的包含)。

       1、LED驱动的加载和卸载

         打开vscode工程,我们只需要一个Makefile,一个LED驱动的.c文件和一个应用程序测试LED驱动。将前面我们编写的字符设备驱动改成LED驱动:

         首先驱动文件我们先得注册驱动模块,和注销驱动模块(在Linux中,一般这种类似的创建函数都与销毁时成对存在的),添加上模块的作者和协议:

        实例化这个模块:

         注意:实例化模块的格式必须严格按照要求,并且我们加上了打印提示信息,当我们这个模块加载时,会调用一次Led_Init(),模块卸载时也会调用一次Led_Exit()。

         我们就可以在Linux中加载我们创建的Led驱动,检查驱动是否成功,编译驱动文件,我们还得将Makefile文件中的编译名称改一下:

        编译我们的led驱动模块,并将驱动模块拷贝到nfs的根文件系统下的驱动模块目录下:

        在serialCRT中,我们加载我们的LED驱动:

        可以看出我们的驱动没有问题,驱动模块创建好后,我们需要在驱动加载时,创建一个字符设备,可以LED属于字符设备,所以我们得注册LED的字符设备。

        2、LED字符设备注册和注销

        字符设备的注册使用函数,在第一篇文章中已经介绍过了所以不在介绍了:

static inline int register_chrdev(unsigned int major, const char *name,
				  const struct file_operations *fops)

         创建一个变量接收返回值,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tofu_Cabbage

你的打赏是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值