LED使用
Firefly-RK3399开发板上有2个LED灯,如下表所示
![1.jpg](//file.elecfans.com/web2/M00/66/75/poYBAGMQdhmAC8AcAAA2rmznBv8064.jpg)
以设备(LED子系统)的方式控制LED
![1.jpg](//file.elecfans.com/web2/M00/67/10/pYYBAGMQdiyALRzvAAA37V8GHAE983.jpg)
使用trigger方式控制LED(参考leds-class.txt)
首先在DT里将两个LED描述如下
![1.jpg](//file.elecfans.com/web2/M00/67/10/pYYBAGMQdkmAT6nbAADXZuWL0e0274.jpg)
Simple trigger LED
-
定义LED触发器
DEFINE_LED_TRIGGER(ledtrig_default_control);
-
注册该触发器
led_trigger_register_simple("ir-user-click", &ledtrig_default_control);
-
控制LED的亮
led_trigger_event(ledtrig_default_control, LED_FULL);
Complex trigger LED
查看都支持那些trigger
cat /sys/class/leds/firefly:blue:power/trigger
使用某个trigger触发
echo "timer" > /sys/class/leds/firefly:blue:power/trigger
GPIO使用(以GPIO0_B4为例)
DT里描述GPIO0_B4如下
配置管脚MUX为GPIO模式(默认是GPIO模式,这里是为了读者更明白原理)
![1.jpg](//file.elecfans.com/web2/M00/66/76/poYBAGMQdl-AUH92AAAxCe2EzK0823.jpg)
以GPIO的模式使用该PIN脚
![1.jpg](//file.elecfans.com/web2/M00/66/76/poYBAGMQdnKAb2I2AABgtPRnHSc577.jpg)
IO-Domain
在复杂的片上系统(SOC)中,设计者一般会将系统的供电分为多个独立的block,这称作电源域(Power Domain),这样做有很多好处,例如:
- 在IO-Domain的DTS节点统一配置电压域,不需要每个驱动都去配置一次,便于管理
- 依照的是Upstream的做法,以后如果需要Upstream比较方便
- IO-Domain的驱动支持运行过程中动态调整电压域,例如PMIC的某个Regulator可以1.8v和3.3v的动态切换,一旦Regulator电压发生改变,会通知IO-Domain驱动去重新设置电压域
使用工具IO来调试
查看GPIO1_B3引脚的复用情况
-
从主控的datasheet查到GPIO1对应寄存器基地址为:0xff320000
-
从主控的datasheet查到GPIO1B_IOMUX的偏移量为:0x00014
-
GPIO1_B3的iomux寄存器地址为:基址(Operational Base) + 偏移量(offset)=0xff320000+0x00014=0xff320014
-
用以下指令查看GPIO1_B3的复用情况:
io -4 -r 0xff320014 ff320014: 0000816a
-
如果想复用为GPIO,可以使用以下指令设置
io -4 -w 0xff320014 0x0000812a
原作者:54shady
|