LED灯驱动介绍

一:简单字符设备驱动开发一般分为下述几个步骤:

第一步:

  1. 先调用module_init注册加载与module_exit卸载驱动模块的函数。

  1. 编写出驱动模块入口(加载)函数与驱动模块出口(卸载)函数。

  1. 调用MODULE_LICENSE函数实现驱动许可证。

第二步:

  1. 实现register_chrdev_region|alloc_chrdev_region注册设备号。

  1. 实现unregister_chrdev_region注销设备号。

第三步:

  1. cdev_init&cdev_add注册字符设备。

  1. cdev_del注销字符设备。

第四步:

  1. 实现file_operations设备操作集合及open、release、write、read、ioctl等操作函数。

第五步:

  1. 使用ioremap将物理地址映射为虚拟地址。

  1. 使用iounmap将虚拟地址给卸载掉。

  1. 配置寄存器的虚拟地址(LED初始化)。

第六步:

  1. 在write函数编写控制寄存器(LED)程序。

  1. 编写LED判断状态点灯函数。

第七步:

  1. 使用class_create创建一个类。

  1. 使用class_destroy摧毁一个类。

第八步:

  1. 使用device_create创建设备。

  1. 使用device_destroy摧毁设备(先摧毁设备后再去摧毁其内部定义的类参数)。

二:LED子系统驱动控制

linux内核为各种硬件进行分类,然后针对各类硬件实现一套比较标准的驱动框架,其中每类硬件共有属性那一部分由内核开发者负责实现和维护,然后给驱动开发者留出接口用来完成具体硬件的特定操作部分。更加简化了驱动开发者的编码工作。

相关的源代码位于drivers/leds/目录内

启动内核后可以在/sys/class/目录下看到leds类,这也就是驱动框架中内核开发者完成的那一部分,之前是需要驱动开发者自己创建的,现在对于驱动开发者来说就只需要调用相关的接口创建设备即可。使用了驱动框架后可以不需要编写应用程序就可以测试led是否能正常被点亮与熄灭,这些都可以在sysfs文件系统中完成。在装载驱动后可以在/sys/class/leds/目录下看到对应的led设备目录。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值