Howto

Armadillo-800 EVAのAndroidのデスクトップ画面をデジタルHD出力に接続したディスプレイに表示する

Armadillo-800 EVAで、Androidのデスクトップ画面をデジタルHD出力(CON3)に接続したディスプレイに表示する方法を説明します。

Androidのデスクトップ画面は、プライマリーフレームバッファ(/dev/fb0)に描画されます。デフォルトのLinuxカーネルイメージでは、プライマリーフレームバッファにLCDC0を割り当てます。Androidのデスクトップ画面をデジタルHD出力(CON3)に接続したディスプレイに表示させるためには、プライマリーフレームバッファをLCDC1に変更する必要があります。

液晶コントローラ 画面出力先
LCDC0 CON17 に接続された液晶パネル
LCDC1 CON3 または CON4 に接続されたディスプレイ

本Howtoで使用するソフトウェアは次のとおりです。

Linux カーネルのソースアーカイブlinux-2.6.35-a800eva-at2.tar.gz
Androidルートファイルシステムアーカイブandroid-2.3.7_a800eva_20120222.tar.gz

本Howtoで作成するLinuxカーネルイメージは以下よりダウンロードすることが出来ます。

Linux カーネルイメージlinux-a800eva-fb1.bin

1. Linuxカーネルイメージの作成

プライマリーフレームバッファにLCDC1を割り当てるLinuxカーネルイメージを作成します。プライマリーフレームバッファはカーネルコンフィギュレーションで変更することができます。

はじめに、Linux カーネルのソースアーカイブ1を展開し、 Armadillo-800 EVAのデフォルトコンフィギュレーション(armadillo800eva_android_defconfig)を適用します。

atde:~$ tar zxvf linux-2.6.35-a800eva-at2.tar.gz
atde:~$ cd linux-2.6.35-a800eva-at2
atde:~/linux-2.6.35-a800eva-at2$ make ARCH=arm armadillo800eva_android_defconfig

カーネルコンフィギュレーションを行い、プライマリーフレームバッファをLCDC1に変更します。

atde:~/linux-2.6.35-a800eva-at2$ make ARCH=arm menuconfig
System Type  --->
  *** Armadillo-800EVA Configuration ***
  Primary framebuffer (LCDC1)  --->
    ( ) LCDC0
    (X) LCDC1

ビルドを実行し、Linuxカーネルイメージを作成します。ここで作成されるImageファイルは、linux-a800eva-fb1.binと同じものとなります。

atde:~/linux-2.6.35-a800eva-at2$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
    :(ビルドには数分かかります)
atde:~/linux-2.6.35-a800eva-at2$ ls arch/arm/boot/Image
Image

2. Androidの更新

Androidルートファイルシステムアーカイブと「1. Linuxカーネルイメージの作成」で作成したLinuxカーネルイメージで、eMMCのパーティション4をリカバリします。

リカバリするには、Debian GNU/Linuxで起動する必要があります。 ブートローダーの保守モードで、以下のように設定し起動してください。

hermit> setbootdevice mmcblk0p2
hermit> setenv console=ttySC1,115200 noinitrd rootwait root=/dev/mmcblk0p2
hermit> boot

ログイン後、リカバリしてください。

[armadillo ~]# ls
android-2.3.7_a800eva_20120222.tar.gz  linux-a800eva-fb1.bin
[armadillo ~]# mkfs.ext3 /dev/mmcblk0p4
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
61056 inodes, 244152 blocks
12207 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=251658240
8 block groups
32768 blocks per group, 32768 fragments per group
7632 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376
 
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
 
This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[armadillo ~]# mount -t ext3 /dev/mmcblk0p4 /mnt
[armadillo ~]# tar zxf ~/android-2.3.7_a800eva_20120222.tar.gz -C /mnt
[armadillo ~]# mkdir /mnt/boot
[armadillo ~]# cp ~/linux-a800eva-fb1.bin /mnt/boot/Image.bin
[armadillo ~]# umount /mnt
[armadillo ~]# 

リカバリ完了後は、ブートローダーの保守モードで再起動してください。

3. 動作確認

ブートローダーを保守モードで起動し、Androidを起動するための設定を行います2。以下のコマンド例では、デフォルトビデオモード"1080i"インターレース出力時の"ちらつき"をなくすために、プログレッシブ出力の"720p"に変更しています。

hermit> setbootdevice mmcblk0p4
hermit> setenv console=ttySC1,115200 noinitrd rootwait root=/dev/mmcblk0p4 init=/init
 video=rmobile_lcdcfb.1:1280x720@60,XRGB8888

以上で設定は完了です。bootコマンドでAndroidを起動させると、デジタルHD出力に接続されたディスプレイにデスクトップ画面が表示されます。

hermit> boot

入力デバイスとしてタッチパネルが使用できます。ただし液晶パネルには画面が表示されないため、USBマウスの使用をおすすめします。


  1. linux-2.6.35-a800eva-at2以降を利用してください。 ↩︎

  2. 書面の都合上折り返して表記しています。実際にはコマンドは1 行で入力します。 ↩︎