key按键实验说明
1. 硬件介绍
本节实验使用到 100ask_STM32MP157-PRO 开发板上的 KEY1、KEY2。
2.看原理图确定引脚
打开100ASK_STM32MP157_PRO_V11_底板原理图.pdf
,100ASK_STM32MP157_PRO使用的kEY1、KEY2原理图如下,可知引脚是GPIOG_3
与GPIOG_2
:
3.修改设备树
100ASK_STM32MP157_PRO的设备树目录为:
100ask_stm32mp157_pro-sdk/Linux-5.4/arch/arm/boot/dts/stm32mp157c-100ask-512d-lcd-v1.dts
进入内核目录
修改设备树dts
增加如下内容,
gpio_keys_100ask {
compatible = "100ask,gpio_key";
gpios = <&gpiog 3 GPIO_ACTIVE_LOW
&gpiog 2 GPIO_ACTIVE_LOW>;
};
将文件夹中的100ask_led.dts设备树文件内容放入stm32mp157c-100ask-512d-lcd-v1.dts文件中,如下图所示,将内容添加到红色框内。
把原来的GPIO按键节点禁止掉 : 修 改 arch/arm/boot/dts/stm32mp15xx-100ask.dtsi。输入
进入如下图目录:
输入/joystick,再按回车。即可到如下界面。
输入i进行编辑,如下图红框所示,增加如下内容
编译设备树
将生成的stm32mp157c-100ask-512d-lcd-v1.dtb拷贝到nfs_rootfs目录中
4.编译程序
修改Makefile文件,将下图中Makefile文件中的KERN_DIR修改为开发板内核目录,如使用的是百问网提供的Ubuntu镜像目录设置为:
输入make,编译程序。
将生成的驱动程序leddrv.ko和应用程序ledtest拷贝到网络文件系统中,输入
5.开发板上机实验
在保证开发板和Ubuntu可以ping通的情况下,将开发板挂载网络文件系统,输入:
注意上面的192.168.5.11需要修改为自己的Ubuntu的ip,具体操作可参考嵌入式Linux应用开发完全手册第2篇的第七章。
拷贝mnt目录下的设备树到boot目录,输入
将mnt目录下的驱动程序和可执行程序拷贝出来
重启开发板
重启完成后,开始安装驱动,输入
测试驱动程序,输入
实验现象,按下按键输入结果如下: