[Armadillo:07963] Re: SC1602BSキャラクタディスプレードライバーを組込とgpioctrlが使用できない。
Takenoshita Koyo
email@hidden
2012年 3月 29日 (木) 14:56:48 JST
竹之下です。
> SC1602BSキャラクタディスプレードライバーが有効であるためGPIOドライバが無
> 効です。
> SC1602BSキャラクタディスプレーを使いながら、GPIO8〜15使用したということ
> です。
> GOIO_8、GPIO_9にトランジスタを接続、LCDのバックライト、リレーをON、OFF制御を
> するようにしたいと考えています。
> GPIOドライバ、もしくは、SC1602BSキャラクタディスプレードライバーの改造が
> 必要でしょうか?
そうですね。
両方のドライバを同時に有効にする必要があります。make menuconfigで、
CONFIG_LCD_SC1602BSとCONFIG_ARMADILLO2X0_GPIOを有効にしてください。
(Armadillo-220用のGPIOドライバは、CONFIG_ARMADILLO210_GPIOではなく、
CONFIG_ARMADILLO2X0_GPIOです。)
もし、linux-2.6.12.3-a9/drivers/char/Kconfig を下記のように修正している場合、
Kconfigの、"&& !ARMADILLO2X0_GPIO"の部分を削除すれば、GPIOドライバと
SC1602BSキャラクタディスプレードライバーを両方同時に使えるようになります。
--- linux-2.6.12.3-a9-3/drivers/char/Kconfig.orig
+++ linux-2.6.12.3-a9-3/drivers/char/Kconfig
@@ -4,6 +4,10 @@
menu "Character devices"
+config LCD_SC1602BS
+ tristate "SC1602BS LCD Character Display driver"
+ depends on ARCH_ARMADILLO210 && !ARMADILLO2X0_GPIO
+
config ARMADILLO210_GPIO
tristate "Armadillo-210 GPIO driver"
depends on ARCH_ARMADILLO210
しかし、ただ単に両方のドライバを有効にしただけだと、LCDに接続しているGPIOを
GPIOドライバから操作できるようになってしまいます。gpioctrlでLCDに接続している
GPIOを触らないようにするか、linux-2.6.12.3-a9/drivers/char/armadillo2x0_gpio.c
の
static struct gpio_info gpio[]
から、変更したくないGPIOを削除してください。
(2012年03月28日 23:24), h wrote:
> 泉です。
> 竹之下さん返信ありがとうございます。
> >竹之下です。
>
> >(2012年03月17日 13:12), h wrote:
> >> 泉と申します。
> >> Armadillo-210のHowToのSC1602BS LCDモジュールをつけようを参考に
> >こちらですね。
> >http://armadillo.atmark-techno.com/howto/add-lcd-char-display
>
> >> Armadillo- 220に
> >> SC1602BSキャラクタディスプレードライバーを組込みc言語にてメニュープログ
> >> ラム、
> >> ipアドレス表示プログラム、時間表示プログラムを作成してバックグラウン
> ドで
> >> 動かしています。
> >> 問題はSC1602BSキャラクタディスプレー、タクトスイッチで使用していないGPI
> >>8〜 をgpioctrlコマンドで使用したいのですが使用することができません。
> >>解る方お願 いいたします。
> >使用できないとは、どういう状況でしょうか?
> >もう少し、詳しく教えていただけますか?
> >Howtoの記事を参考に、LCDモジュール用のドライバを作成されたのであれば、
> >GPIOドライバが無効になっているのではないかと思います。
> SC1602BSキャラクタディスプレードライバーが有効であるためGPIOドライバが無
> 効です。
> SC1602BSキャラクタディスプレーを使いながら、GPIO8〜15使用したということ
> です。
> GOIO_8、GPIO_9にトランジスタを接続、LCDのバックライト、リレーをON、OFF制御を
> するようにしたいと考えています。
> GPIOドライバ、もしくは、SC1602BSキャラクタディスプレードライバーの改造が
> 必要でしょうか?
> さっそく下記のブートローダー、GPIOの設定を試してみたいと思います。
>
> >> またGPIO 8〜を電源立ち上げと同時に出力LOWレベル設定としたいです。
> >> 過去のログを見るとGPIOの初期値を電源投入直後に設定したい場合
> >> bootloader(hermit-at)とkernelの修正が必要とのコメントがありましたが具体
> >> 的に教えていただきたいです。
> >Armadillo-220では、GPIOとEP9307のポートとの対応は下記のように
> >なっています。
>
> >|ピン名 | GPIO番号|EP9307ポート|
> >|CON12 1ピン | GPIO_8 | Port D:0 |
> >|CON12 2ピン | GPIO_9 | Port D:1 |
> >|CON12 3ピン | GPIO_10 | Port D:2 |
> >|CON12 4ピン | GPIO_11 | Port D:3 |
> >|CON12 5ピン | GPIO_12 | Port C:0 |
> >|CON12 6ピン | GPIO_13 | Port C:1 |
> >|CON12 7ピン | GPIO_14 | Port C:2 |
> >|CON12 8ピン | GPIO_15 | Port C:3 |
>
> >EP9307のGPIOモジュールでは、ポートごとにDDR(Data Direction Register)と
> >DR(Data Register)を持っています。出力Lowとするには、DDRの対応するビットを
> >1(出力)にし、DRの対応するビットを0(Low)にする必要があります。
>
> >Armadillo-220用のブートローダーでは、GPIOの設定は
> >hermit-at/src/target/armadillo2x0/boot.S ファイルで行っています。
> >下記のように変更すると、起動直後にGPIO_8から15が出力Lowになると思います。
>
> >--- a/src/target/armadillo2x0/boot.S
> >+++ b/src/target/armadillo2x0/boot.S
> >@@ -60,11 +60,12 @@ _start_flash:
> > cmp r4, #0x00
> > moveq r1, #0x00 /* a210(Rev.A or B) */
> > movne r1, #0x80 /* a2[2|3|4]0,a210(Rev.C or later) */
> >- str r1, [r0, #0x18]
> > str r1, [r0, #0x08]
> >+ orr r1, r1, #0x0f
> >+ str r1, [r0, #0x18]
> >
> >- /*PDDDR=0x00*/
> >- mov r1, #0x00
> >+ /*PDDDR=0x0f*/
> >+ mov r1, #0x0f
> > str r1, [r0, #0x1c]
> >
> > /*PFDDR=0x00*/
> >
> >カーネルでは、GPIO_8から15はGPIOドライバ以外誰も触らないので、修正の
> >必要はないと思います。
>
> >--
> >Koyo Takenoshita
>
>
>
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
--
Koyo Takenoshita
armadillo メーリングリストの案内