[Armadillo:02189] Re: Armadillo-9のPC/104アクセスに関して
nakai
email@hidden
2007年 10月 11日 (木) 12:50:47 JST
nakaiです。
ご指摘ありがとうございます。
> 将来的には、kernel、atmark-dist の更新を考えておりますが、
> 上記の開発環境下で、
> ・解像度 : XGA
> ・色深度 : 8bpp
> の適切な設定方法、及び、上記カーネルソースの適切な変更方法について、
> ご教授いただきたく、お願いいたします。
8bppですとパレットを使ってると思うので、指摘された修正でとりあえずは問題ないような気もします。
が、ソースコードを見てみますね。
> -----Original Message-----
> From: email@hidden
> [mailto:email@hidden] On Behalf
> Of 五十嵐@Freelines
> Sent: Thursday, October 11, 2007 10:59 AM
> To: email@hidden
> Subject: [Armadillo:02186] Armadillo-9のPC/104アクセスに関して
>
> お世話になります。五十嵐と申します。
>
> 先日、首記の件で、当方担当者から、アットマークテクノご担当の方に直接メールで
> 質問をさせていただきましたが、
> ご担当の方のご指摘により、本メーリングリストで、改めて質問をさせていただきます。
> 長くなってしまいますが、参考のため、これまでの経緯の抜粋を下記します。
>
> 【当方担当者より】
> >>> 御社から購入したArmadillo−9で、PC/104へアクセスを行った際に
> >>> 下記の現象が発生します。
> >>> 構成:Armadillo−9、USBマウス、LCDモニタ
> >>> LCDの解像度はXGA、電源は+5Vのみ供給
> >>> 現象:PC/104へ連続書込み動作を行うと画面が乱れる。
> >>> 連続読み出し動作では画面は正常である。
> >>> PC/104ボード(I/Oボード)を接続しても、Armadillo−9単体でも
> >>> 同様の現象が発生します。
> >>> 別のArmadillo−9に交換しても同様の現象が発生します。
>
> 【アットマークテクノご担当様より】
> >> お問合わせいただいた液晶モニターの画面の乱れについて、
> >> 原因を特定するために、液晶モニタへの出力解像度を下げた(SVGAやVGA)場合の
> >> 画面乱れの有無をご確認していただくことは可能でしょうか?
> >>
> >> VGAやSVGAに出力解像度を下げると画面乱れが発生しなくなる場合は、
> >> 画面出力に必要なCPUのバス帯域が不足している可能性がございます。
> >> PC/104ボードの書込み時のwait要求が長いものですとそれだけバス占有率が高くなりますので、
> >> 連続書込みの方法に変更を加えていただくか、
> >> 出力解像度を下げてご使用くださいますようお願いいたします。
>
> 【アットマークテクノご担当様より】
> > 画面が乱れる時のXGAの色深度は何ビットに設定されておりますでしょうか?
> >
> > XGA,16ビットカラーの場合、CPUへの負荷がかなり大きくなり、
> > 他のデバイスの動作時に画面が乱れることを確認しております。
> > Armadillo-9の製品仕様として、
> > XGAは8ビットカラーのみの対応とさせていただいておりますのでご確認をお願い
> > いたします。
> >
> > 色深度の変更は、Linuxのカーネルバージョンにより異なりますので、
> > 下記ページをご参照ください。
> > http://armadillo.atmark-techno.com/howto/set-video-resolution
>
>
> 上記、ご連絡いただいたように、液晶モニタへの出力解像度を SVGA (16ビット?)に
> 下げると、画面がちらつく現象は発生しなくなりました。
>
> そこで、色深度の変更方法が記載されている、上記ページを参照しながら
> ・解像度 : XGA
> ・色深度 : 8bit
> に変更しようとしたのですが、下記「開発環境」に示すように、
> カーネル 2.4 系を使用しているのため、Hermit ターミナルから setenv で
> 色深度設定値の確認、及び変更ができません。
>
> 「開発環境」
> ・kernel : linux-2.4.31-a9-2.tar.gz
> ・atmark-dist : atmark-dist-20051017.tar.gz
>
>
> 'atmark-dist : menuconfig' を使用して、下記設定値の通りに、色深度の変更を行い、
> 'make dep all' を実行すると、下記ログに示すように、コンパイルでエラーとなってしまいます。
>
> // [設定値] -----------------------------------------------------
> EP93xx Default Resolution : VGA_60Hz から XGA_60Hz に変更
> EP93xx Max Resolution : XGA (変更せず)
> EP93xx Color Depth : 16bpp_565 から 8bpp に変更
> // [設定値] -----------------------------------------------------
>
> // [LOG] -----------------------------------------------------
> ##
> ## 省略
> ##
> make
> CFLAGS="-D__KERNEL__
> -I/home/public/Armadillo-Kernel/linux-2.4.31-a9-2/include
> -Wall -Wstrict-prototypes -Wno-trigraphs
> -O -fno-strict-aliasing -fno-common -Uarm -fno-common -pipe
> -mapcs-32 -D__LINUX_ARM_ARCH__=4 -march=armv4 -mtune=arm9tdmi
> -malignment-traps -msoft-float -Uarm " -C arch/arm/common
> make[2]: Entering directory
> `/home/public/Armadillo-Kernel/linux-2.4.31-a9-2/arch/arm/common'
> make all_targets
> make[3]: Entering directory
> `/home/public/Armadillo-Kernel/linux-2.4.31-a9-2/arch/arm/common'
> make[3]: `all_targets' に対して行うべき事はありません。
> make[3]: Leaving directory
> `/home/public/Armadillo-Kernel/linux-2.4.31-a9-2/arch/arm/common'
> make[2]: Leaving directory
> `/home/public/Armadillo-Kernel/linux-2.4.31-a9-2/arch/arm/common'
> arm-linux-ld -p -X -T arch/arm/vmlinux.lds
> arch/arm/kernel/head-armv.o arch/arm/kernel/init_task.o init/main.o
> init/version.o init/do_mounts.o \
> --start-group \
> arch/arm/kernel/kernel.o arch/arm/mm/mm.o
> arch/arm/mach-ep93xx/ep93xx.o kernel/kernel.o mm/mm.o fs/fs.o
> ipc/ipc.o arch/arm/common/nopci.o \
> drivers/char/char.o drivers/serial/serial.o
> drivers/block/block.o drivers/misc/misc.o drivers/i2c/i2c.o
> drivers/net/net.o drivers/ide/idedriver.o
> drivers/scsi/scsidrv.o drivers/cdrom/driver.o
> drivers/sound/sounddrivers.o
> drivers/mtd/mtdlink.o drivers/net/wireless/wireless_net.o
> drivers/video/video.o drivers/usb/usbdrv.o
> drivers/media/media.o drivers/input/inputdrv.o \
> net/network.o \
> arch/arm/nwfpe/math-emu.o arch/arm/lib/lib.a
> /home/public/Armadillo-Kernel/linux-2.4.31-a9-2/lib/lib.a \
> --end-group \
> -o vmlinux
> drivers/video/video.o(.text+0x5c78): In function `$a':
> : undefined reference to `chan_to_field'
> drivers/video/video.o(.text+0x5c88): In function `$a':
> : undefined reference to `chan_to_field'
> drivers/video/video.o(.text+0x5c98): In function `$a':
> : undefined reference to `chan_to_field'
> make[1]: *** [vmlinux] エラー 1
> make[1]: Leaving directory
> `/home/public/Armadillo-Kernel/linux-2.4.31-a9-2'
> make: *** [linux] エラー 1
> [email@hidden atmark-dist-20051017]$
> // [LOG] -----------------------------------------------------
>
>
> Color Depth を 16bpp_565 に戻せば、'make dep all' は正常に終了します。
> 'make menuconfig' で、Color Depth を '8bpp' にすると、コンパイルでエラーになるようです。
>
> これに対して、drivers/video/ep93xxfb.c の以下の箇所に、仮の変更を加えた結果、
> コンパイルが正常終了し、出来上がったイメージを書き込んだら、画面のちらつき現象が無くなりました。
>
> // [CODE] -----------------------------------------------------
> #if defined(CONFIG_FB_EP93XX_16BPP_565) || \
> defined(CONFIG_FB_EP93XX_24BPP) || defined(CONFIG_FB_EP93XX_32BPP)
> static inline u_int
> chan_to_field(u_int chan, struct fb_bitfield *bf)
> {
> // 省略
> }
> #endif
>
> static int
> ep93xxfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
> u_int trans, struct fb_info *info)
> {
> // 省略
>
> switch (info->disp->visual) {
> case FB_VISUAL_TRUECOLOR:
> if (regno < MAX_PALETTE_NUM_ENTRIES) {
> #if defined(CONFIG_FB_EP93XX_16BPP_565)
> u16 *pal;
> #else
> u32 *pal;
> #endif
> pal = info->pseudo_palette;
>
> #if defined(CONFIG_FB_EP93XX_16BPP_565) || \
> <=====
> defined(CONFIG_FB_EP93XX_24BPP) ||
> defined(CONFIG_FB_EP93XX_32BPP) <=====
> val = chan_to_field(red, &info->var.red);
> val |= chan_to_field(green, &info->var.green);
> val |= chan_to_field(blue, &info->var.blue);
> #endif
> <=====
> pal[regno] = val;
> }
> break;
> case FB_VISUAL_PSEUDOCOLOR:
> ep93xxfb_palette_write(regno, red, green,
> blue, trans);
> break;
> }
>
> return 0;
> }
> // [CODE] -----------------------------------------------------
>
>
> 将来的には、kernel、atmark-dist の更新を考えておりますが、
> 上記の開発環境下で、
> ・解像度 : XGA
> ・色深度 : 8bpp
> の適切な設定方法、及び、上記カーネルソースの適切な変更方法について、
> ご教授いただきたく、お願いいたします。
>
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/mailman/listinfo/armadillo
armadillo メーリングリストの案内