Download presentation
Presentation is loading. Please wait.
Published byLadislava Kadlecová Modified 5年之前
1
LED驱动 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd
2
01 编写最简单的LED驱动 02 编写基于设备树的LED驱动 03 使用内核源码的LED驱动
3
01 自己编写LED驱动 第 1 部分
4
自己编写LED驱动 GPIO相关函数: GPIO申请:: int gpio_request(unsigned gpio, const char *label) GPIO初始化: int gpio_direction_output(unsigned gpio, int value) GPIO输出电平: void gpio_set_value(unsigned gpio, int value) GPIO释放: void gpio_free(unsigned gpio) include/linux/gpio.h gpio_export(unsigned gpio, bool direction_may_change) 头文件路径:include/linux/gpio.h 04 广州创龙电子科技有限公司
5
02 编写基于设备树的LED驱动 第 2 部分
6
编写基于设备树的LED驱动 platform_driver: struct platform_driver {
int (*probe)(struct platform_device *); //检测platform设备 int (*remove)(struct platform_device *); //删除该设备 void (*shutdown)(struct platform_device *); //关闭该设备 int (*suspend)(struct platform_device *, pm_message_t state); //电源管理挂起 int (*resume)(struct platform_device *); //电源管理唤醒 struct device_driver driver; //一个具体的device结构体 const struct platform_device_id *id_table; //设备ID号 }; #include <linux/platform_device.h> #include <linux/of_gpio.h> gpio_led_pin = of_get_named_gpio(pdev->dev.of_node, "tl,gpio_led_pin", 0); tl_gpio_led { compatible = "tl,gpio_led"; tl,gpio_led_pin = <&gpio2 22 1>; }; static struct platform_driver gpio_led_driver; module_platform_driver(gpio_led_driver); 06 广州创龙电子科技有限公司
7
03 使用内核源码的LED驱动 第 3 部分
8
使用内核源码的LED驱动 platform_device: 旧版内核板级文件board-xxx.c: 新版内核设备树文件xxx.dts:
drivers/leds/leds-gpio.c Documentation/devicetree/bindings/eds/leds-gpio.txt Documentation/devicetree/bindings/leds/common.txt 08 广州创龙电子科技有限公司
9
使用内核源码的LED驱动 设备树中添加LED节点: 添加各个LED所使用的GPIO的pinmux配置节点;
drivers/leds/leds-gpio.c LED设备树相关使用说明: Documentation/devicetree/bindings/eds/leds-gpio.txt Documentation/devicetree/bindings/leds/common.txt user_leds: user_leds { pinctrl-single,pins = < AM33XX_IOPAD(0x8e0, PIN_OUTPUT | MUX_MODE7) /* (U5) lcd_vsync.gpio2[22] */ AM33XX_IOPAD(0x8e4, PIN_OUTPUT | MUX_MODE7) /* (R5) lcd_hsync.gpio2[23] */ AM33XX_IOPAD(0x8e8, PIN_OUTPUT | MUX_MODE7) /* (V5) lcd_pclk.gpio2[24] */ AM33XX_IOPAD(0x9e4, PIN_OUTPUT | MUX_MODE7) /* (C14) emu0.gpio3[7] */ AM33XX_IOPAD(0x9e8, PIN_OUTPUT | MUX_MODE7) /* (B14) emu1.gpio3[8] */ >; }; { label = "usr-led1"; gpios = <&gpio2 24 GPIO_ACTIVE_HIGH>; default-state = "on"; { label = "usr-led2"; gpios = <&gpio2 23 GPIO_ACTIVE_HIGH>; { label = "usr-led3"; gpios = <&gpio2 22 GPIO_ACTIVE_HIGH>; 09 广州创龙电子科技有限公司
10
广州创龙电子科技有限公司 谢谢 官网: 论坛: 微信公众号:广州创龙
Similar presentations