目录
步骤
- 在dts文件中的根目录下创建相应的设备节点
- 编译设备树,make dtbs,将设备树发送到板子上
- 检测板子上是否有alphaled节点
- 编写驱动,获取设备树中的相关属性
- 创建注册驱动和卸载驱动函数
- 创建gpioled设备结构体
- 创建文件操作集
- 获取设备节点
- 注册字符设备
- 注销字符设备
- 加载模块
- 测试模块,测试app请看前面文章
添加设备节点
alphaled {
#address-cells = <1>;
#size-cells = <1>;
compatible = "alientek,alphaled";
status = "okay";
reg = < 0X020C406C 0x04 /* CCM_CCGR1_BASE */
0X020E0068 0X04 /* SW_MUX_GPIO1_IO03_BASE */
0X020E02F4 0X04 /* SW_PAD_GPIO1_IO03_BASE */
0X0209C000 0X04 /* GPIO1_DR_BASE */
0X0209C004 0X04>; /* GPIO1_GDIR_BASE */
};
- address-cells和size-cells属性是表示reg的格式,一个为地址,一个为长度
- compatible属性为厂家描述
- status属性为可操作的
- reg属性为led的寄存器地址列表,一共有五个地址
驱动代码
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/delay.h>
#include <linux/ide.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/errno.h>
#include <linux/gpio.h>
#include <linux/cdev.h>
#include <linux/device.h>
#include <linux/of.h>
#include <linux/of_address.h&

最低0.47元/天 解锁文章
472

被折叠的 条评论
为什么被折叠?



