历史上的今天
今天是:2024年12月30日(星期一)
2020年12月30日 | I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之KEY、LED
2020-12-30 来源:eefocus
经过前面的移植,内核已经可以在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就移植好了。
史海拾趣
|
大概功能: S1:校正。 拨至“校正”位置,开始自校,等屏上显示频率稳定后拨至“测量”位置 ,显示标准电容和电感值。同时按B1和B2退出校正模式。 S2: 1-2接通。脉冲测量频率最大6MHz,不能调触发电平;2 ...… 查看全部问答> |
|
最近用SBS的CK5 PowerPC开发板,遇到一件怪事,网络刚开始还可以连上,但我改了几个参数后,就再也连不上了,把参数恢复了也不行,在提示通过ftp下载镜像时,老是提示这个信息,“Received packet spread on multiple descriptors”,不知这是什么 ...… 查看全部问答> |
|
各位DSP的高手: 节日快乐! 本人最近在学习 TI 的 f2812,主要用于AD采样,其中中断控制用EVA进行处理。但是,在配置的时候发现问题: 目前,我的周期中断配置按如下函数去写。 void eva_config() { ...… 查看全部问答> |
|
【连载】【ALIENTEK MiniSTM32 开发板】STM32不完全手册-ADC实验(实验十三) 开发板购买地址:http://shop62103354.taobao.com/ … 查看全部问答> |
|
编译已经通过,但是到下载程序的时候报错:Thu Dec 03 15:35:36 2009: User error: Base address of vector table has incorrect alignment. Vector base addr = 0x0800AD3C 这是什么错误啊?急死人了!… 查看全部问答> |
|
我让soso帮我问问TI的人,有没有那个视频教程里面的例程了,都过去好几天了,一点信息都没有,不知道哪位高人有里面的例程?边看视频边下载程序才会相得益彰吧,TI的那个例程不知道在哪里有啊?anyone know?… 查看全部问答> |
|
系统提示出现这种警告是什么意思···怎么改呢“integer conversion resulted in a change of sign\" 这个是警告的位置“ ADC10CTL0 &=~ENC + ~ADC10SC; ”… 查看全部问答> |
|
为了配合手机日益简约的造型设计趋势,这款手机喇叭扩音器采用了再简单不过的喇叭型外观设计,设计师绝对实用简约主义,仅需把手机放入其中即可获得理想的扩音音量与接听范围,无需任何插头或接口。这个极其简约的设计令人拍案叫绝啊,想DIY也绝对 ...… 查看全部问答> |
|
《TMS320F2833x DSP应用开发与实践》一书已上市,欢迎大家捧场 《TMS320F2833x DSP应用开发与实践》一书已上市,欢迎大家捧场,谢谢! 亚马逊:http://www.amazon.cn/dp/B00DVGQ2 ... i_jdp_16f9rb0SXK0AP 当当网:http://product.dangdang.com/product.aspx?product_id=23291898 京东:http://item.jd.com/1 ...… 查看全部问答> |




