登录站点

用户名

密码

【TQIMX6Q教程】新版BSP之KEY、LED

已有 109 次阅读  2015-06-10 16:10   标签IMX6Q  天嵌  嵌入式  开发板 
本文由博主girlkoo编写,关于E9与TQIMX6Q开发平台新版BSP之KEY、LED的文章。
  经过前面的移植,内核已经可以在tqimx6q上正常挂载根文件系统了,接下来开始移植各类设备驱动,本文先来移植按键和LED。之所以从按键和LED开始是因为这两种设备的驱动是最简单的。
  按键驱动移植
  查看tqimx6q的原理图可知,这块开发板有5个按键,其中,除了reset键之外还有个电源键,这个电源键与其它键有些不同,因此,本文移植剩余的这三个键(电源键在移植电源管理模块时处理)。通过阅读原理图可知,K1、K2、K3分别连接到了GPIO1_28、GPIO4_5和GPIO1_30上,基于内核的gpio-keys驱动模块,可如下编写DTS:
  • gpio-keys {  
  •         compatible = "gpio-keys";  
  •   
  •         home {  
  •                 label = "HOME Button";  
  •                 gpios = <&gpio1 28 1>;  
  •                 linux,code = <102>;  
  •         };  
  •   
  •         enter {  
  •                 label = "Enter Button";  
  •                 gpios = <&gpio4 5 1>;  
  •                 linux,code = <28>;  
  •         };  
  •   
  •         esc {  
  •                 label = "ESC button";  
  •                 gpios = <&gpio1 30 1>;  
  •                 linux,code = <1>;  
  •         };  
  • };  
  LED驱动移植
  同样的,查看tqimx6q的原理图可知,tqimx6q的led4、led5、led6分别接到了GPIO3_21、GPIO3_22和GPIO3_23上,其它LED是电源相关的,无法通过GPIO控制。基于内核的gpio-leds驱动,可如下编写DTS:
  • gpio-leds {  
  •         compatible = "gpio-leds";  
  •   
  •         led4 {  
  •                 label = "led4";  
  •                 gpios = <&gpio3 21 0>;  
  •                 default-state = "off";  
  •         };  
  •   
  •         led5 {  
  •                 label = "led5";  
  •                 gpios = <&gpio3 22 0>;  
  •                 default-state = "off";  
  •         };  
  •   
  •         led6 {  
  •                 label = "led6";  
  •                 gpios = <&gpio3 23 0>;  
  •                 default-state = "off";  
  •         };  
  • };  
  测试方法
  将以上修改添加到DTS后重新编译DTS并使用新得到的DTB启动内核。按键可以通过hexdump指令测试:
  • hexdump /dev/input/event0  
  从内核启动的log可以看出,gpio-keys驱动创建的输入设备节点是event0,因此,使用hexdump该节点可以测试按键是否有效。执行以上指令后按tqimx6q上的K1、K2、K3,hexdump会打印出一排数字,就表示按键驱动已经移植成功了,效果如下:
  • @tqimx6q #hexdump /dev/input/event0   
  • 0000000 000c 0000 398c 0005 0001 0066 0001 0000  
  • 0000010 000c 0000 398c 0005 0000 0000 0000 0000  
  • 0000020 000c 0000 f56e 0007 0001 0066 0000 0000  
  • 0000030 000c 0000 f56e 0007 0000 0000 0000 0000  
  • 0000040 000d 0000 5dc5 0005 0001 001c 0001 0000  
  • 0000050 000d 0000 5dc5 0005 0000 0000 0000 0000  
  • 0000060 000d 0000 ba4d 0008 0001 001c 0000 0000  
  • 0000070 000d 0000 ba4d 0008 0000 0000 0000 0000  
  • 0000080 000e 0000 e45c 0006 0001 0001 0001 0000  
  • 0000090 000e 0000 e45c 0006 0000 0000 0000 0000  
  • 00000a0 000e 0000 c9fb 0009 0001 0001 0000 0000  
  • 00000b0 000e 0000 c9fb 0009 0000 0000 0000 0000  
  LED驱动移植完成之后会将led相关的控制节点创建到/sys/class/leds目录下,通过cd切换到该目录下之后会发现有对应的目录:led4、led5、led6,通过如下指令可以点亮相应的led灯:
  • echo 1 > /sys/class/leds/led4/brightness  
  通过如下指令可以关闭指定的led灯:
  • echo 0 > /sys/class/leds/led4/birghtness  
  其中,brightness是led4目录下一个文件节点,可以通过该节点控制led4的亮度,由于本文使用的led不是pwm控制亮度的,因此,只要不为0,led灯就点亮了。
  至此,按键和LED就移植好了。有误之处欢迎指出,有任何疑问可以留言讨论。
相关产品:

上一篇: 最新CORTEX-A8开发板——TQ210V6底板端口公布 下一篇: 天嵌科技参加飞思卡尔6月解决方案研讨会(广州站)

分享 举报