Linux上实现led的控制有很多种方法,本篇学习一种最常规的led控制方法。
本次将使用Linux内核自带的led驱动来控制led。
使用Linux的好处就是很多的设备驱动已经集成在了Linux内核里面,不用重新自己实现驱动。
像Led这种最常见的外设Linux内核里面当然是有实现好的驱动了。
1、使能led驱动
查看内核的驱动配置,看看led驱动有没有使能,如果没有使能需要自己手动使能。
查看源码目录下drivers/leds/Makefile文件,可以看到led驱动默认已经编译到内核了。
再确认一下arch/arm/configs/stm32_defconfig文件里led驱动是否使能。
2、修改设备树
驱动使能后就需要修改设备树了,打开文件arch/arm/boot/dts/stm32mp135f-dk.dts
可以看到已经有了一个蓝色led的描述,是作为HEARTBEAT使用的。
我们可以修改设备树文件,增加一个led的描述。
首先查看开发板原理图,确定led引脚。
可以使用红色led,PA13,低电平点亮。
3、编译设备树文件
make ARCH=arm dtbs LOADADDR=0xC2000040
4、推送到开发板
scp arch/arm/boot/dts/stm32mp135*.dtb root@192.168.7.1:/boot
5、开发板同步并重启
root@stm32mp1:~# sync && reboot
重启完成后就可以在开发板的/sys/bus/platform/devices/leds/leds下看到刚才新增的red led的设备了
然后进入到red:activity后就可以通过command控制led的亮灭了。
亮灯:
灭灯:
|