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);