Embedsky007的个人空间 https://www.eechina.com/space-uid-114045.html [收藏] [复制] [RSS]

博客

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

已有 1060 次阅读2015-6-10 15:49 |个人分类:技术文章| 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就移植好了。有误之处欢迎指出,有任何疑问可以留言讨论。
相关产品:

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
返回顶部