我有英特爾伽利略板,LED連接到GPIO引腳之一。當我將電源連接到伽利略時,LED亮起一秒鐘然後再次關閉。 一旦我的應用程序啓動,我可以操縱LED。但是現在我希望我的LED在整個引導過程中打開,一旦我的應用程序啓動,它應該在那之後操作LED。我想要實現這一點,我必須改變內核代碼,並完全重新構建它。設置引導過程中的GPIO狀態
如果有人曾經嘗試過,請讓我。 在此先感謝
我有英特爾伽利略板,LED連接到GPIO引腳之一。當我將電源連接到伽利略時,LED亮起一秒鐘然後再次關閉。 一旦我的應用程序啓動,我可以操縱LED。但是現在我希望我的LED在整個引導過程中打開,一旦我的應用程序啓動,它應該在那之後操作LED。我想要實現這一點,我必須改變內核代碼,並完全重新構建它。設置引導過程中的GPIO狀態
如果有人曾經嘗試過,請讓我。 在此先感謝
如果可能,可以在引導加載程序中使GPIO的默認狀態爲高/低。或者,請參閱以下Linux內核和設備樹中的更改。
:弓/ XXX的/ boot/DTS/xxxx.dts
[email protected] {
label = "evmsk:green:heartbeat";
gpios = <&gpio1 7 0>;
linux,default-trigger = "heartbeat";
default-state = "off";
};
:驅動器/ LED燈/指示燈,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);
感謝您的回覆。我猜intel galileo使用x86 arch。但是當我去到arch:arch/xxx/boot/dts/for x86 arch時,沒有擴展名爲.dts的文件。所以我只需要改變leds-gpio.c。 – cgoma
有一個項目*元ACPI * Github上您可以在這裏找到如何通過ACPI操作GPIO線路的示例。請注意,上述任何一種方式都不會完全解決您的問題,否則您基本上需要編寫並運行UEFI應用程序,或者破解引導加載程序(在UEFI中順便說一句,Linux也可以作爲UEFI應用程序加載) – 0andriy