[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 メーリングリストの案内