文章目录- 1 修改设备树文件
- 2 platform驱动程序
- 3 应用测试程序
1 修改设备树文件设备树文件可以直接使用第三十五章中添加的gpioled子节点即可,不用重复添加。
2 platform驱动程序本实验例程路径:i.MX6UL终结者光盘资料/06_Linux驱动例程/15_gpioled_dts
创建led_driver.c文件,具体内容如下:
- 1 #include
- 2 #include
- 3 #include
- 4 #include
- 5 #include
- 6 #include
- 7 #include
- 8 #include
- 9 #include
- 10 #include
- 11 #include
- 12 #include
- 13 #include
- 14 #include
- 15 #include
- 16 #include
- 17 #include
- 18 #include
- 19 #include
- 20 #include
- 21 #include
- 22 #include
- 23
- 24 #define LEDDEV_CNT 1 /* 设备号长度 */
- 25 #define LEDDEV_NAME "dtsplatled" /* 设备名字 */
- 26 #define LEDOFF 0
- 27 #define LEDON 1
- 28
- 29 /* leddev设备结构体 */
- 30 struct leddev_dev{
- 31 dev_t devid; /* 设备号 */
- 32 struct cdev cdev; /* cdev */
- 33 struct class *class; /* 类 */
- 34 struct device *device; /* 设备 */
- 35 int major; /* 主设备号 */
- 36 struct device_node *node; /* LED设备节点 */
- 37 int led0; /* LED灯GPIO标号 */
- 38 };
- 39
- 40 struct leddev_dev leddev; /* led设备 */
- 41
- 42 /*
- 43 * @description : LED打开/关闭
- 44 * @param - sta : LEDON(0) 打开LED,LEDOFF(1) 关闭LED
- 45 * @return : 无
- 46 */
- 47 void led0_switch(u8 sta)
- 48 {
- 49 if (sta == LEDON )
- 50 gpio_set_value(leddev.led0, 0);
- 51 else if (sta == LEDOFF)
- 52 gpio_set_value(leddev.led0, 1);
- 53 }
-