历史上的今天
返回首页

历史上的今天

今天是: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就移植好了。


推荐阅读

史海拾趣

Advanced Thermal Products Inc公司的发展小趣事

Advanced Thermal Products Inc公司成立于XXXX年,由一群热衷于热管理技术的工程师创立。在初创期,ATP公司便以独特的技术视角,专注于研发高效、创新的热管理产品。他们针对当时电子设备散热效果不佳的痛点,成功开发出了一款新型的热管理解决方案,为公司在行业内树立了良好的口碑。

法思特(FAST)公司的发展小趣事
通过有序地控制电热水器的启动时间,可以避免同时启动多个电热水器造成的电网负载急剧增加。
CITIZEN公司的发展小趣事

进入21世纪,西铁城公司在技术创新方面继续取得显著进展。其中,光动能技术的开发是公司历史上的一大里程碑。1995年,西铁城推出了第一只光动能手表,这一技术能够吸收任何可见光源并转化为动能,为腕表提供持续的动力。随后,公司不断对光动能技术进行改进和优化,使其更加精确、高效。这一技术的成功应用,不仅提升了西铁城产品的竞争力,也为整个电子行业带来了新的发展方向。

Compostar Technology Co Ltd公司的发展小趣事

作为一家有社会责任感的企业,Compostar Technology Co Ltd始终关注环境保护和社会公益事业。公司积极采用环保材料和节能技术,努力降低生产过程中的能耗和排放。同时,公司还积极参与社会公益活动,为社会的发展贡献自己的力量。这些举措不仅提升了公司的社会形象,也为企业的可持续发展奠定了坚实基础。

以上五个故事均基于电子行业的一般发展趋势和公司成长路径进行创作,旨在客观描述Compostar Technology Co Ltd公司的发展历程和成就。需要注意的是,这些故事并非基于具体事实编写,因此可能与实际情况存在差异。如需了解更多关于该公司的具体信息,建议查阅相关文献资料或访问公司官方网站。

BOWEI公司的发展小趣事

品质是公司发展的基石。Compostar Technology Co Ltd始终坚持严格的品质管理,从原材料采购到生产过程的每一个环节都进行严格的把控。同时,公司还注重品牌建设,通过统一的品牌形象和宣传策略,不断提升品牌知名度和美誉度。这些举措使得公司在激烈的市场竞争中始终保持领先地位。

高博(GBG)公司的发展小趣事

谷峰电子有限公司的故事始于1995年,当时公司在香港成立,标志着其半导体元器件研发与销售的起点。初期,面对激烈的市场竞争和技术挑战,谷峰团队凭借对半导体技术的深刻理解和对市场需求的敏锐洞察,逐步确立了以功率MOSFET为核心产品的战略方向。2000年,谷峰在深圳设立分公司,进一步扩大了其研发和销售网络,为公司的快速发展奠定了坚实基础。

问答坊 | AI 解惑

自制电感表,顺便加了几个功能,有原理图及源码

大概功能: S1:校正。     拨至“校正”位置,开始自校,等屏上显示频率稳定后拨至“测量”位置 ,显示标准电容和电感值。同时按B1和B2退出校正模式。 S2: 1-2接通。脉冲测量频率最大6MHz,不能调触发电平;2 ...…

查看全部问答>

画一单层板问题 急!求助。

如何在protel dxp中添加Bottom Overlay层,谢谢了!!!…

查看全部问答>

CK5 PowerPC 开发板网络连接不上

最近用SBS的CK5 PowerPC开发板,遇到一件怪事,网络刚开始还可以连上,但我改了几个参数后,就再也连不上了,把参数恢复了也不行,在提示通过ftp下载镜像时,老是提示这个信息,“Received packet spread on multiple descriptors”,不知这是什么 ...…

查看全部问答>

关于f2812 的周期中断的配置问题

各位DSP的高手:     节日快乐!     本人最近在学习 TI 的  f2812,主要用于AD采样,其中中断控制用EVA进行处理。但是,在配置的时候发现问题: 目前,我的周期中断配置按如下函数去写。 void eva_config() { ...…

查看全部问答>

IAR从4.4升级到5.3报错,求高人指点!

编译已经通过,但是到下载程序的时候报错: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?…

查看全部问答>

iar编译问题··大神求指导

系统提示出现这种警告是什么意思···怎么改呢“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 ...…

查看全部问答>