Armadilloフォーラム

起動時のLED制御

dev.sanko

2023年3月20日 21時47分

お世話になっております。

Armadillo 640において、電源投入後からOS立ち上げ完了までのLEDの制御について質問があります。
デフォルトでは緑LED(LED4)が電源投入後から点灯したままになりますが、滅灯の状態に変更することは可能でしょうか?
また、LED(LED3)を電源投入後から点灯状態にさせることは可能でしょうか?

コメント

溝渕です。

> デフォルトでは緑LED(LED4)が電源投入後から点灯したままになりますが、滅灯の状態に変更することは可能でしょうか?

可能です。点灯にしている箇所は次の通りです。

board/atmark-techno/armadillo-640/board.c:
 :snip
#define GREEN_LED IMX_GPIO_NR(1, 8)
 :snip
void coloured_LED_init(void)
{
	imx_iomux_v3_setup_multiple_pads(status_led_gpio_pads,
			       ARRAY_SIZE(status_led_gpio_pads));
	gpio_direction_output(GREEN_LED, 1);
}

gpio_direction_output(GREEN_LED, 1):
でoutput-highにしているので、これを
gpio_direction_output(GREEN_LED, 0);
のように、output-lowに変更することで滅灯になると思います。

> また、LED(LED3)を電源投入後から点灯状態にさせることは可能でしょうか?

可能です。上記同様に、LED3を点灯させる制御を追加してみてください。

溝渕様

ご回答ありがとうございます。
コメント通りにソースコードを書き換え、boot loaderを差し替えたところ電源投入時は想定通りの動作をするようになりました。
しかし、OS起動が始まったタイミングで従来の動作に戻ってしまうのですが、こちらは制御可能でしょうか?

溝渕です。

> しかし、OS起動が始まったタイミングで従来の動作に戻ってしまうのですが、こちらは制御可能でしょうか?

可能です。

boot loaderがOSを起動した後のLED制御は、Linuxカーネルとuserlandそれぞれで指定する必要があります。

Linuxカーネルでは、Device TreeでLEDの初期設定を指定しています。該当するnodeは次の通りです。

arch/arm/boot/dts/armadillo-640.dts
gpio-leds {

以下のドキュメントにある通り、次のように点灯/滅灯を指定できると思います。

Documentation/devicetree/bindings/leds/leds-gpio.txt:
default-state = "on";
default-state = "off";

上記指定をする際、元からある"linux,default-trigger"は削除してください。

userlandについては、以下のマニュアルのようにLEDを制御している所が無いか確認してみてください。

https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_ma…

溝渕様

Device Treeを上記の内容に変更して、userlandは'/etc/rc.local'を修正することで想定の動作になることを確認しました。
サポートいただきありがとうございました。