STM32MP157的LED驱动程序
1.硬件介绍
本节实验使用到 100ask_IMX6ULL-PRO 开发板上的 LED灯。
2.看原理图确定引脚
打开当前目录的100ASK_STM32MP157_PRO_V11_底板原理图.pdf
,`100ASK_STM32MP157_PRO使用的LED原理图如下,可知引脚有GPIOA_10和GPIOG_8,本实验采用GPIOA_10。
3.修改设备树
stm32mp157的设备树目录为:
100ask_stm32mp157_pro-sdk/Linux-5.4/arch/arm/boot/dts/stm32mp157c-100ask-512d-lcd-v1.dts
进入内核目录
修改设备树dts
增加如下内容,
myled {
compatible = "100ask,leddrv";
pinctrl-names = "default";
led-gpios = <&gpioa 10 GPIO_ACTIVE_LOW>;
};
将文件夹中的100ask_led.dts设备树文件内容放入stm32mp157c-100ask-512d-lcd-v1.dts文件中,如下图所示,将内容添加到红色框内。
s
注意配置交叉编译工具链:
export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_stm32mp157_pro-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
编译设备树
将生成的stm32mp157c-100ask-512d-lcd-v1.dtb拷贝到nfs_rootfs目录中
4.编译LED程序
修改Makefile文件,将下图中Makefile文件中的KERN_DIR修改为开发板内核目录,如使用的是百问网提供的Ubuntu镜像目录设置为:
输入make,编译程序。
将生成的驱动程序leddrv.ko和应用程序ledtest拷贝到网络文件系统中,输入
5.开发板上机实验
在保证开发板和Ubuntu可以ping通的情况下,将开发板挂载网络文件系统,输入:
注意上面的192.168.5.11需要修改为自己的Ubuntu的ip,具体操作可参考嵌入式Linux应用开发完全手册第2篇的第七章。
查询开发板上保存内核和设备树的分区
执行挂载命令,输入
拷贝mnt目录下的设备树到boot目录,输入
将mnt目录下的驱动程序和可执行程序拷贝出来
重启开发板
重启完成后,开始安装驱动,输入
测试驱动程序,输入
实验现象,可以看到绿色灯亮起: