我有一个Intel Galileo板,该板连接到GPIO PIN之一。当我将电源连接到伽利略时,LED点亮了一秒钟,然后再次关闭。
我的应用程序开始后,我就可以操纵LED。但是现在,我希望我的LED在整个启动过程中打开,一旦我的应用程序启动,它就会在此之后操纵LED。我想要实现这一目标,我必须更改内核代码并再次构建它。
如果可能的话,您可以在引导加载器中制作GPIO高/低的默认状态。或者,请参阅Linux内核和设备树中的以下更改。
:Arch/xxx/boot/dts/xxxx.dts
led@4 {
label = "evmsk:green:heartbeat";
gpios = <&gpio1 7 0>;
linux,default-trigger = "heartbeat";
default-state = "off";
};
:驱动程序/led/leds-gpio.c
state = of_get_property(child, "default-state", NULL);
if (state) {
if (!strcmp(state, "keep"))
led.default_state = LEDS_GPIO_DEFSTATE_KEEP;
else if (!strcmp(state, "on"))
led.default_state = LEDS_GPIO_DEFSTATE_ON;
else
led.default_state = LEDS_GPIO_DEFSTATE_OFF;
}
ret = gpio_direction_output(led_dat->gpio, led_dat->active_low ^ state);