10. 命令行点亮LED灯¶
本章节的命令操作均在板卡的终端执行
前面讲了那么多的内容,终于迎来了重头戏——使用板卡的各种硬件外设, 如入门必备的点灯,按键,蜂鸣器,串口等等。本章先带领大家使用命令行来控制LED灯和检测按键。
10.1. 初探/sys目录¶
与/proc和/dev目录类似,/sys目录下的文件或文件夹也向用户提供了一些关于设备、内核模块、文件系统以及其他内核组件的信息, 如子目录block中存放了所有的块设备;子目录bus中存放了系统中所有的总线类型,有i2c、usb、sdio、pci等; 子目录class按类型归类设备,如leds、lcd、mtd、pwm等。
尝试在板卡的终端执行以下命令查看sys各层级的目录内容:
1 2 3 4 5 | #在板卡上的终端执行以下命令查看
ls /sys
ls /sys/class
ls /sys/class/leds
ls /sys/class/leds/sys_led
|
可以看到,本板卡的/sys/class/leds目录有sys_led,它对应LubanCat-Hi3403板卡绿色led,默认被配置为系统状态灯。
/sys/class/leds/sys_led目录下面又包含brightness、device、max_brightness、power、subsystem、trigger、uevent等文件。 其中brightness表示LED灯的亮度,trigger表示LED灯的触发方式,我们可以通过echo、cat等命令来修改或查看这些文件, 从而达到控制LED灯的目的。下面以实例进行讲解。
10.2. 控制心跳灯¶
控制心跳灯需要root权限进行操作,如果当前是普通用户,可以使用 sudo su 切换为root,如果已经是root则不需要切换。
在控制心跳灯前,我们可以先看下心跳灯的触发方式
1 | cat /sys/class/leds/sys_led/trigger
|
可以看到,等选中的是heartbeat的状态
LED灯设备下的brightness文件表示了它的亮度值。本板卡提供的内核驱动中, 心跳灯是直接IO控制的,它的亮度范围为1和0表示亮灭;
1 2 3 4 | # 熄灭心跳灯
echo 0 > /sys/class/leds/sys_led/brightness
# 点亮心跳灯
echo 1 > /sys/class/leds/sys_led/brightness
|
当我们完成这操作后,可以查看心跳灯现在的触发方式,现在处于无控制状态
如果想将灯切换为心跳模式,执行完后,心跳灯重新进入心跳状态
1 2 | #在root权限下进行下列操作
echo heartbeat > /sys/class/leds/sys_led/trigger
|
常用的led模式还有timer模式
当我们设置为timer模式后,就会出现delay_on和delay_off两个配置项,分别配置了led点亮和熄灭的时间,单位为ms
