[STM32MP1] 【STM32MP135F-DK测评】控制板载LED

[复制链接]
1528|9
 楼主| xinmeng_wit 发表于 2024-1-21 16:11 | 显示全部楼层 |阅读模式
Linux上实现led的控制有很多种方法,本篇学习一种最常规的led控制方法。
本次将使用Linux内核自带的led驱动来控制led。
使用Linux的好处就是很多的设备驱动已经集成在了Linux内核里面,不用重新自己实现驱动。
像Led这种最常见的外设Linux内核里面当然是有实现好的驱动了。

1、使能led驱动
查看内核的驱动配置,看看led驱动有没有使能,如果没有使能需要自己手动使能。
查看源码目录下drivers/leds/Makefile文件,可以看到led驱动默认已经编译到内核了。
再确认一下arch/arm/configs/stm32_defconfig文件里led驱动是否使能。
032d0055d1fa8a167cce5e8c58622405

2、修改设备树
驱动使能后就需要修改设备树了,打开文件arch/arm/boot/dts/stm32mp135f-dk.dts
可以看到已经有了一个蓝色led的描述,是作为HEARTBEAT使用的。
a16110e13e2f0906928905fa7fde602a
我们可以修改设备树文件,增加一个led的描述。
首先查看开发板原理图,确定led引脚。
可以使用红色led,PA13,低电平点亮。
b1ebb12409afc4dde36d1e4cc12aaf69


6b188509857be982f4f47f22cf06497e

3、编译设备树文件
  1. make ARCH=arm dtbs LOADADDR=0xC2000040


0bb912f5ee6ea7369e4fb558a6eb161d

4、推送到开发板
  1. scp arch/arm/boot/dts/stm32mp135*.dtb root@192.168.7.1:/boot


61ddc82b943876b0cefd7e01ef17b807

5、开发板同步并重启
  1. root@stm32mp1:~# sync && reboot


重启完成后就可以在开发板的/sys/bus/platform/devices/leds/leds下看到刚才新增的red led的设备了
aeb448ba580f765ee70a98c1107d3335
然后进入到red:activity后就可以通过command控制led的亮灭了。
亮灯:

  1. echo 1 > brightness

灭灯:

  1. echo 0 > brightness

688bdc54b300a888b1f8514c5f581571

cr315 发表于 2024-1-22 16:51 | 显示全部楼层
支持一下,过程描述很详细
中国龙芯CDX 发表于 2024-1-28 12:13 | 显示全部楼层
讲解的很详细,适合新手!
zhgongzuoshi 发表于 2024-6-19 15:56 | 显示全部楼层
小小蚂蚁举千斤 发表于 2024-6-23 16:54 | 显示全部楼层
设备树就是描述文件
AdaMaYun 发表于 2024-6-24 23:12 | 显示全部楼层
像Led这种最常见的外设Linux内核里面当然是有实现好的驱动了
LOVEEVER 发表于 2024-6-25 19:36 | 显示全部楼层
使用Linux的好处就是很多的设备驱动已经集成在了Linux内核里面,不用重新自己实现驱动。
suncat0504 发表于 2024-6-30 09:24 | 显示全部楼层
这是要学习linux下硬件的开发了?是不是很难学啊?
突然下起雨 发表于 2024-6-30 14:38 | 显示全部楼层
在开发板上执行同步操作并重启,确保新的设备树文件生效:sync && reboot。
突然下起雨 发表于 2024-6-30 14:38 | 显示全部楼层
重启完成后,在开发板上的 /sys/bus/platform/devices/leds/leds 目录下应该能看到新添加的LED设备。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

279

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部