ブログ

Armadillo-840拡張ボードのLEDを常時点灯させる

at_takuya.sasaki
2014年6月21日 14時44分

Armadillo-840液晶モデル開発セットの拡張ボードに実装されている LED1(EXT1)を、Armadillo-840に電源が投入されてから常時点灯させる方法について。

1. カーネルコンフィギュレーションを実行

Device Drivers  --->
[*] LED Support  --->     
<*>   LED Default ON Trigger   ←チェックをつける

2. カーネルソースのArmadillo-840固有部分を修正して、イメージを作成

atmark@atde5:~/linux-3.4-at7/arch/arm/mach-shmobile$ vi board-armadillo840.c 

static struct gpio_led gpio_leds_pins[]内の以下の部分の [none] を [default-on] に変更

GPIO_LED("EXT1", "none", GPIO_PORT102, 0),
      ↓
GPIO_LED("EXT1", "default-on", GPIO_PORT102, 0)

*あくまで手順1で[LED Default ON Trigger]を有効にしている前提ですが、汎用性を考慮するならば [CONFIG_LEDS_TRIGGER_DEFAULT_ON]が有効化どうかをチェックして、指定するパラメータを変更した方がよいでしょう。

3. ブートローダ(hermit)を修正して、イメージを作成

3.1 ヘッダファイルにEXT1の定義を追加します。
atmark@atde5:~/hermit-at-3.2.4/src/target/armadillo8x0$ vi pinmux-armadillo840.h 

以下の行を追加

#define PIN_FN_GPIO_PORT102     _PIN_FN(PIN_FRB,        MUX(0, 1, 0, PULL_OFF))
#define xEXT1                   PIN_FN_GPIO_PORT102
3.2 初期化処理内でEXT1の点灯を実装します
atmark@atde5:~/hermit-at-3.2.4/src/target/armadillo8x0$ vi board-armadillo840.c

static void armadillo840_init(void)に以下の行を追加

    pinmux(xEXT1);
    gpio_direction_output(xEXT1, 1);
    gpio_set_value(xEXT1, 1);
3.3 ブートローダのビルド方法は以下の通りです

https://manual.atmark-techno.com/armadillo-840/armadillo-840_product_manual_ja-1.2.0/ch11.html#sct.build-hermit