Presentation is loading. Please wait.

Presentation is loading. Please wait.

按键驱动 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd.

Similar presentations


Presentation on theme: "按键驱动 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd."— Presentation transcript:

1 按键驱动 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd

2 01 编写基于设备树的按键驱动 02 使用内核源码中的驱动——中断方式 03 使用内核源码中的驱动——轮询方式

3 01 编写基于设备树的按键驱动 第 1 部分

4 编写基于设备树的按键驱动 GPIO相关函数: IRQ相关函数:
GPIO申请:: int gpio_request(unsigned gpio, const char *label) GPIO初始化: int gpio_direction_input(unsigned gpio) GPIO相应的IRQ值: int gpio_to_irq(unsigned gpio) GPIO释放: void gpio_free(unsigned gpio) IRQ相关函数: include/linux/gpio.h gpio_export(unsigned gpio, bool direction_may_change) IRQ申请: int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev) 中断子程序: static irqreturn_t gpio_irq_handler(int irq, void *dev_id) 头文件路径:include/linux/gpio.h include/linux/irq.h include/linux/interrupt.h 04 广州创龙电子科技有限公司

5 02 使用内核源码中的驱动——中断方式 第 2 部分

6 使用内核源码中的驱动——中断方式 驱动源码路径:drivers/input/keyboard/gpio_keys.c 06
广州创龙电子科技有限公司

7 使用内核源码中的驱动——中断方式 设备树配置:Documentation/devicetree/bindings/input/gpio-keys.txt gpio_keys: { compatible = "gpio-keys"; #address-cells = <1>; #size-cells = <0>; autorepeat; pinctrl-names = "default"; pinctrl-0 = <&user_keys_default>; { label = "user-key0"; linux,code = <KEY_PROG1>; gpios = <&gpio0 19 GPIO_ACTIVE_LOW>; gpio-key,wakeup; }; user_keys_default: user_keys_default { pinctrl-single,pins = < AM33XX_IOPAD(0x9b0, PIN_INPUT_PULLUP | MUX_MODE7) /* (U5) lcd_vsync.gpio0[19] */ >; 07 广州创龙电子科技有限公司

8 使用内核源码中的驱动——中断方式 按键测试: 1. 查看input设备: cat /proc/bus/input/devices
2. 测试按键: hexdump /dev/input/event0 按下 松开 08 广州创龙电子科技有限公司

9 03 使用内核源码中的驱动——轮询方式 第 3 部分

10 使用内核源码中的驱动——轮询方式 驱动源码路径:drivers/input/keyboard/gpio_keys_polled.c 10
广州创龙电子科技有限公司

11 使用内核源码中的驱动——轮询方式 设备树配置:Documentation/devicetree/bindings/input/gpio-keys-polled.txt gpio_keys: { compatible = "gpio-keys-polled"; #address-cells = <1>; #size-cells = <0>; autorepeat; poll-interval = <100>; pinctrl-names = "default"; pinctrl-0 = <&user_keys_default>; { label = "user-key0"; linux,code = <KEY_PROG1>; gpios = <&gpio0 19 GPIO_ACTIVE_LOW>; }; 11 广州创龙电子科技有限公司

12 广州创龙电子科技有限公司 谢谢 官网: 论坛: 微信公众号:广州创龙


Download ppt "按键驱动 广州创龙电子科技有限公司 Guangzhou Tronlong Electronic Technology Co., Ltd."

Similar presentations


Ads by Google