在引导过程中设置GPIO状态

时间:2017-09-25 10:37:59

标签: linux linux-kernel gpio intel-galileo

我有一块英特尔Galileo开发板,LED连接到GPIO引脚之一。当我将电源连接到Galileo时,LED亮起一秒然后再次关闭。

一旦我的应用程序启动,我就可以操作LED。但现在我希望我的LED在整个启动过程中打开,一旦我的应用程序启动它应该在那之后操纵LED。我想要实现这一点,我必须改变内核代码并完全重新构建它。

1 个答案:

答案 0 :(得分:1)

如果可能,您可以在引导加载程序中使GPIO的默认状态为高/低。或者,请参阅linux内核和设备树中的以下更改。

:拱/ XXX /引导/ DTS / xxxx.dts

led@4 {
label = "evmsk:green:heartbeat";
gpios = <&gpio1 7 0>;
linux,default-trigger = "heartbeat";
default-state = "off";
};

:驱动/发光二极管/ 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);