2017-09-25 8 views
0

GPIOピンの1つにLEDが接続されたインテルGalileoボードがあります。ガリレオに電源を接続すると、LEDが1秒間点灯してから再び消灯します。 アプリケーションが起動したら、LEDを操作できます。しかし、今ではブートプロセス全体でLEDをオンにしたいので、アプリケーションが起動するとLEDを操作する必要があります。私はこれを達成するために、カーネルコードを変更して、それを完全に再構築する必要があると思います。ブートプロセス中にGPIOステータスを設定する

誰でもこれを試してみてください。 事前に感謝します

+0

プロジェクト*メタACPI *はGitHubの上でありここでは、ACPI経由でGPIO回線を操作する方法の例を見つけることができます。 UEFIアプリケーションでは、UEFIアプリケーションを作成して実行するか、ブートローダをハックする必要があります(LinuxはUEFIアプリケーションとしても読み込まれる可能性があります)。 – 0andriy

答えて

1

可能であれば、ブートローダでGPIOのデフォルト状態をハイ/ローにすることができます。または、以下のLinuxカーネルとデバイスツリーの変更を参照してください。

:アーチ/ XXX /ブーツ/ DTS/xxxx.dts

[email protected] { 
label = "evmsk:green:heartbeat"; 
gpios = <&gpio1 7 0>; 
linux,default-trigger = "heartbeat"; 
default-state = "off"; 
}; 

:ドライバー/ LEDは/ 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); 
+0

ご返信ありがとうございます。私はIntel galileoがx86 archを使っていると思います。しかし、私がpath:arch/xxx/boot/dts /にx86アーチのために行ったとき、拡張子.dtsを持つファイルはありません。だから私はleds-gpio.cだけを変更する必要があります。 – cgoma

関連する問題