bc10/prebuilt-20110107 概要 †bc10/prebuilt-20110107は、AOSP android-2.2_r1.1がAndroidベースバージョンになります。 bc10/froyoに追加修正を加えたandroid-2.2_r1.1 prebuiltイメージの作成方法・配置手順について説明します。
prebuilt イメージの作成手順 †開発環境 †開発環境構築において重要な物は以下の3つです。
パッケージインストール †Ubuntuのリポジトリから必要なパッケージを取得してインストールします。 $ sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev \ libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev uboot-mkimage java5 †android-2.2_r1.1のビルドに必要なsun-java5-jdkはUbuntu 9.10 以降リポジトリから外されていますので、 $ sudo vi /etc/apt/sources.list ## respective vendors as a service to Ubuntu users. deb http://archive.canonical.com/ubuntu lucid partner deb-src http://archive.canonical.com/ubuntu lucid partner deb http://archive.ubuntu.com/ubuntu lucid-security main restricted deb-src http://archive.ubuntu.com/ubuntu lucid-security restricted main multiverse universe #Added by software-properties deb http://archive.ubuntu.com/ubuntu lucid-security universe deb http://archive.ubuntu.com/ubuntu lucid-security multiverse + deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse + deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse 追加完了後、apt-get updateコマンドでリポジトリ情報の取得をしsun-java5-jdkをインストールします。 $ sudo apt-get update $ sudo apt-get install sun-java5-jdk インストール完了後、誤って他の古いパッケージをインストールしないよう上記で追加したリポジトリを削除しておきます。 $ sudo vi /etc/apt/sources.list ## respective vendors as a service to Ubuntu users. deb http://archive.canonical.com/ubuntu lucid partner deb-src http://archive.canonical.com/ubuntu lucid partner deb http://archive.ubuntu.com/ubuntu lucid-security main restricted deb-src http://archive.ubuntu.com/ubuntu lucid-security restricted main multiverse universe #Added by software-properties deb http://archive.ubuntu.com/ubuntu lucid-security universe deb http://archive.ubuntu.com/ubuntu lucid-security multiverse - deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse - deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse もう一度apt-get updateで現状のリポジトリ情報の取得をして元の状態に戻します。 $ sudo apt-get update Android ソースファイル取得 †repo 設定 †Androidのソースコードを取得するためにrepoの設定を行います。 $ cd ~ $ mkdir bin $ curl http://android.git.kernel.org/repo >~/bin/repo $ chmod a+x ~/bin/repo Ubuntuでは一度ログアウトしてログインし直すと~/binへのPATHは通っています。 $ export PATH=~/bin:$PATH repo 初期化 †bc10というandroidソースファイル用ディレクトリを作成し、android-2.2_r1.1 branch $ cd ~ $ mkdir bc10 $ cd bc10 $ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.2_r1.1 local_manifest.xml の追加 †android-2.2_r1.1 tagで取得できるソースコード内にはALSAが含まれていません。 $ vi .repo/local_manifest.xml <?xml version="1.0" encoding="UTF-8"?> <manifest> <project path="external/alsa-lib" name="platform/external/alsa-lib" revision="froyo"/> <project path="external/alsa-utils" name="platform/external/alsa-utils" revision="froyo"/> <project path="hardware/alsa_sound" name="platform/hardware/alsa_sound" revision="froyo"/> </manifest> repo sync †local_manifest.xmlの追加後repo syncを実行し、androidのソースコードを取得します。 $ repo sync 2〜4GBのファイルをダウンロードしますので回線速度に応じて時間がかかります。 bc10 用ビルド設定ファイルの適用 †android-2.2_r1.1をbc10向けに最適化してビルドするためのpatchおよび設定ファイルを $ cd ~ $ git clone git://github.com/bc-dev/patch_to_android-2.2_r1.1_for_b10.git $ cd patch_to_android-2.2_r1.1_for_b10 git cloneで取得する場所はどこでも構いませんが、bc10-patch.shを実行する前に $ vi bc10-patch.sh ### Settings ANDROID_DIR=${HOME}/bc10 SETUP_DIR=${HOME}/patch_to_android-2.2_r1.1_for_b10 PATCH_DIR=${SETUP_DIR}/patches-for-bc10 ファイルのPATH指定を確認後bc10-patch.shを実行します。 $ ./bc10-patch.sh Android ビルド †bc10用の環境設定をします。 $ cd ~/bc10 $ source build/envsetup.sh $ lunch bc10-eng ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=2.2 TARGET_PRODUCT=bc10 TARGET_BUILD_VARIANT=eng TARGET_SIMULATOR=false TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm HOST_ARCH=x86 HOST_OS=linux HOST_BUILD_TYPE=release BUILD_ID=FRF91 ============================================ 上記のように設定確認後makeを実行します。 $ make イメージ作成 †ビルドが終了したらビルドされたuserlandのバイナリを起動可能な配置に変更します。 $ cd ~/patch_to_android-2.2_r1.1_for_b10 $ ./mkbc10-image.sh 実行すると以下のようにbc/out/target/product/bc10/にbc10-image/という /home/beat/bc10/out/target/product/bc10 mkdir android for android-rfs /home/beat/bc10/out/target/product/bc10 copy android-root copy android-system change permission and owner [sudo] password for beat: $ cd ~/bc10/out/target/product/bc10 $ ls -l -rw-r--r-- 1 beat beat 7 2010-08-27 23:37 android-info.txt drwxrwxrwx 8 root root 4096 2010-08-30 11:34 bc10-image -rw-r--r-- 1 beat beat 8866 2010-08-27 21:16 clean_steps.mk drwxr-xr-x 3 beat beat 4096 2010-08-27 21:54 data -rw-r--r-- 1 beat beat 22869 2010-08-27 23:37 installed-files.txt drwxr-xr-x 13 beat beat 4096 2010-08-27 23:28 obj -rw-r--r-- 1 beat beat 189 2010-08-27 21:16 previous_build_config.mk -rw-r--r-- 1 beat beat 163811 2010-08-27 23:37 ramdisk.img drwxr-xr-x 8 beat beat 4096 2010-08-27 21:54 root drwxr-xr-x 4 beat beat 4096 2010-08-27 21:54 symbols drwxr-xr-x 11 beat beat 4096 2010-08-27 23:17 system -rw------- 1 beat beat 78486144 2010-08-27 23:37 system.img -rw------- 1 beat beat 1522752 2010-08-27 23:37 userdata.img $ cd bc10-image $ ls -l drwxrwxrwx 2 root root 4096 2010-08-27 21:26 data -rwxrwxrwx 1 root root 118 2010-08-27 21:54 default.prop drwxrwxrwx 2 root root 4096 2010-08-27 21:26 dev -rwxrwxrwx 1 root root 107440 2010-08-27 21:54 init -rwxrwxrwx 1 root root 1677 2010-08-27 20:53 init.goldfish.rc -rwxrwxrwx 1 root root 197 2010-08-24 20:58 init.omap3.rc -rwxrwxrwx 1 root root 13605 2010-08-24 20:58 init.rc drwxrwxrwx 2 root root 4096 2010-08-27 21:26 proc drwxrwxrwx 2 root root 4096 2010-08-27 21:54 sbin drwxrwxrwx 2 root root 4096 2010-08-27 21:26 sys drwxrwxrwx 11 root root 4096 2010-08-30 11:34 system kernel ビルド †環境変数設定 †bootに必要なx-loader、u-boot、kernelは全てandroidのソースコードと $ export PATH=/home/beat/bc10/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:${PATH} $ export ARCH=arm $ export CROSS_COMPILE=arm-eabi- kernel †$ cd ~ $ git clone git://gitorious.org/~bc-dev/rowboat/bc10-rowboat-kernel.git bc10-rowboat-kernel $ cd bc10-rowboat-kernel/ bc10向けリリースブランチに切り替えます。 $ git checkout -t -b bc10-2.6.32 origin/bc10-2.6.32 $ make omap3_bc10_defconfig $ make uImage $ make modules ビルド完了後以下のディレクトリにuImageが作成されます。 $ ls ~/bc10-rowboat-kernel/arch/arm/boot/ Image Makefile bootp compressed install.sh uImage zImage USB Wifi (RT3070USB) ドライバー ビルド †USB Wifiに対応する為にRT3070USBのドライバーを追加します。 メーカー 型番 対応 Device ID 備考 PLANEX GW-USMicroN-G 2019:ED14 Logitec LAN-W150N/U2IPH 0789:0164 Logitec LAN-W150N/U2BK 0789:0168 Buffalo WLI-UC-GNM 0411:01a2 Buffalo WLI-UC-G301N 0411:016f Baffalo WLI-UG-G301N は USB ACパワードハブ経由に接続した場合の動作を確認しています Buffalo WLI-UC-GN 0411:015d ここでは、RT3070USBを使用している上記のBaffalo社製の無線LANとLogitec社の無線LANを前提に説明します。 diff -urpN 2010_0831_RT3070_Linux_STA_v2.4.0.1_DPO-orig/Makefile 2010_0831_RT3070_Linux_STA_v2.4.0.1_DPO/Makefile --- 2010_0831_RT3070_Linux_STA_v2.4.0.1_DPO-orig/Makefile 2010-08-31 18:12:20.000000000 +0900 +++ 2010_0831_RT3070_Linux_STA_v2.4.0.1_DPO/Makefile 2011-01-12 16:46:57.732360338 +0900 @@ -15,7 +15,8 @@ endif RTMP_SRC_DIR = $(RT28xx_DIR)/RT$(CHIPSET) #PLATFORM: Target platform -PLATFORM = PC +#PLATFORM = PC +PLATFORM = BC10 #PLATFORM = 5VT #PLATFORM = IKANOS_V160 #PLATFORM = IKANOS_V180 @@ -147,6 +148,11 @@ LINUX_SRC_MODULE = /lib/modules/$(shell CROSS_COMPILE = endif +ifeq ($(PLATFORM),BC10) +LINUX_SRC = /home/beat/prebuilt-20101227/bc10-rowboat-kernel +CROSS_COMPILE = /home/beat/prebuilt-20101227/bc10/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- +endif + ifeq ($(PLATFORM),IXP) LINUX_SRC = /project/stable/Gmtek/snapgear-uclibc/linux-2.6.x CROSS_COMPILE = arm-linux- @@ -347,6 +353,9 @@ ifeq ($(OSABL),YES) cp -f $(RT28xx_DIR)/os/linux/rtnet$(CHIPSET)apsta.ko /tftpboot endif else +ifeq ($(PLATFORM),BC10) + $(MAKE) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) -C $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules +else cp -f $(RT28xx_DIR)/os/linux/rt$(CHIPSET)sta.ko /tftpboot ifeq ($(OSABL),YES) cp -f $(RT28xx_DIR)/os/linux/rtutil$(CHIPSET)sta.ko /tftpboot @@ -355,7 +364,7 @@ endif endif endif endif - +endif release: ifeq ($(TARGET), LINUX) @@ -388,6 +397,9 @@ endif $(MAKE) -C os/linux clean rm -rf os/linux/Makefile endif +ifneq ($(TARGET),THREADX) + $(MAKE) -C tools clean +endif ifeq ($(TARGET), UCOS) $(MAKE) -C os/ucos clean MODE=$(RT28xx_MODE) endif diff -urpN 2010_0831_RT3070_Linux_STA_v2.4.0.1_DPO-orig/RT2870STA.dat 2010_0831_RT3070_Lin ux_STA_v2.4.0.1_DPO/RT2870STA.dat --- 2010_0831_RT3070_Linux_STA_v2.4.0.1_DPO-orig/RT2870STA.dat 2010-08-31 18:12:20.000000000 +0900 +++ 2010_0831_RT3070_Linux_STA_v2.4.0.1_DPO/RT2870STA.dat 2011-01-12 16:46:57.732360338 +0900 @@ -1,10 +1,12 @@ #The word of "Default" must not be removed Default CountryRegion=5 -CountryRegionABand=7 -CountryCode= +#CountryRegionABand=7 +#CountryCode= +CountryRegionABand=1 +CountryCode=JP ChannelGeography=1 -SSID=11n-AP +SSID=ssidname NetworkType=Infra WirelessMode=5 Channel=0 @@ -18,9 +20,9 @@ TxBurst=1 PktAggregate=0 WmmCapable=1 AckPolicy=0;0;0;0 -AuthMode=OPEN -EncrypType=NONE -WPAPSK= +AuthMode=authtype +EncrypType=encrptype +WPAPSK=passname DefaultKeyID=1 Key1Type=0 Key1Str= diff -urpN 2010_0831_RT3070_Linux_STA_v2.4.0.1_DPO-orig/common/rtusb_dev_id.c 2010_0831_RT3070_Linux_STA_v2.4.0.1_DPO/common/rtusb_dev_id.c --- 2010_0831_RT3070_Linux_STA_v2.4.0.1_DPO-orig/common/rtusb_dev_id.c 2010-09-01 10:47:30.000000000 +0900 +++ 2010_0831_RT3070_Linux_STA_v2.4.0.1_DPO/common/rtusb_dev_id.c 2011-01-12 16:46:57.755056649 +0900 @@ -107,8 +107,14 @@ USB_DEVICE_ID rtusb_dev_id[] = { {USB_DEVICE(0x13D3,0x3321)}, /* Azurewave */ {USB_DEVICE(0x07FA,0x7712)}, /* Edimax */ {USB_DEVICE(0x0789,0x0166)}, /* Edimax */ - {USB_DEVICE(0x0DB0,0x822B)}, /* MSI 3070*/^M - {USB_DEVICE(0x0DB0,0x871B)}, /* MSI 3070*/ + {USB_DEVICE(0x0DB0,0x822B)}, /* MSI 3070*/ + {USB_DEVICE(0x2019,0xED14)}, /* PLANEX*/ + {USB_DEVICE(0x2019,0xAB29)}, /* PLANEX*/ + {USB_DEVICE(0x0789,0x0164)}, /* Logitec*/ + {USB_DEVICE(0x0789,0x0168)}, /* Logitec*/ + {USB_DEVICE(0x0411,0x01a2)}, /* Buffalo*/ + {USB_DEVICE(0x0411,0x016f)}, /* Buffalo*/ + {USB_DEVICE(0x0411,0x015d)}, /* Buffalo*/ #endif // RT3070 // #ifdef RT3370 {USB_DEVICE(0x148F,0x3370)}, /* Ralink 3370 */ diff -urpN 2010_0831_RT3070_Linux_STA_v2.4.0.1_DPO-orig/os/linux/config.mk 2010_0831_RT3070_Linux_STA_v2.4.0.1_DPO/os/linux/config.mk --- 2010_0831_RT3070_Linux_STA_v2.4.0.1_DPO-orig/os/linux/config.mk 2010-08-31 18:12:20.000000000 +0900 +++ 2010_0831_RT3070_Linux_STA_v2.4.0.1_DPO/os/linux/config.mk 2011-01-12 16:46:57.765058823 +0900 @@ -26,7 +26,7 @@ HAS_WDS=n HAS_APCLI=n # Support Wpa_Supplicant -HAS_WPA_SUPPLICANT=n +HAS_WPA_SUPPLICANT=y # Support Native WpaSupplicant for Network Maganger HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n @@ -149,6 +149,7 @@ endif ifeq ($(RT28xx_MODE),STA) -WFLAGS += -DCONFIG_STA_SUPPORT -DDBG +#WFLAGS += -DCONFIG_STA_SUPPORT -DDBG +WFLAGS += -DCONFIG_STA_SUPPORT ifeq ($(HAS_XLINK),y) WFLAGS += -DXLINK_SUPPORT @@ -545,6 +546,10 @@ ifeq ($(PLATFORM),PC) endif endif +ifeq ($(PLATFORM),BC10) +EXTRA_CFLAGS := $(WFLAGS) -I$(RT28xx_DIR)/include -DMODILE +endif + #If the kernel version of RMI is newer than 2.6.27, please change "CFLAGS" to "EXTRA_FLAGS" ifeq ($(PLATFORM),RMI) EXTRA_CFLAGS := -D__KERNEL__ -DMODULE=1 -I$(LINUX_SRC)/include -I$(LINUX_SRC)/include/asm-mips/mach-generic -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -DCONFIG_IFX_ALG_QOS -DCONFIG_WAN_VLAN_SUPPORT -fomit-frame-pointer -DIFX_PPPOE_FRAME -G 0 -fno-pic -mno-abicalls -mlong-calls -pipe -finline-limit=100000 -mabi=32 -G 0 -mno-abicalls -fno-pic -pipe -msoft-float -march=xlr -ffreestanding-march=xlr -Wa,--trap, -nostdinc -iwithprefix include $(WFLAGS) (上記の EXTRA_CFLAGS := -D__KERNEL__ -DMODULE=1 から $(WFLAGS) 迄は1行です。) 以下のようにアーカイブの展開、patch 後 makeを実行します。make 完了後 os/linux 以下に rt3370sta.ko が作成されています。 $ cd ~ $ tar xvfj 2010_0831_RT3070_Linux_STA_v2.4.0.1_DPO.bz2 $ patch -p0 < RT3070USB.diff $ cd 2010_0831_RT3070_Linux_STA_v2.4.0.1_DPO/ $ make $ ls -l os/linux/rt3370sta.ko -rw-r--r-- 1 beat beat 10746686 2011-01-05 12:42 os/linux/rt3370sta.ko USB Wifi (RT3070USB) ドライバー 配置について †
ファイルのオーナーと権限はmkbc10-image.shにあわせてrootと777にします。 $ sudo mkdir ~/bc10/out/target/product/bc10/bc10-image/system/lib/modules $ sudo mkdir -p ~/bc10/out/target/product/bc10/bc10-image/system/etc/Wireless/RT2870STA $ sudo cp -afr os/linux/rt3370sta.ko ~/bc10/out/target/product/bc10/bc10-image/system/lib/modules/ $ sudo cp -afr RT2870STA.dat ~/bc10/out/target/product/bc10/bc10-image/system/etc/Wireless/RT2870STA/ $ cd ~ $ unzip RT2870_Firmware_V22.zip $ cd RT2870_Firmware_V22/ $ sudo mkdir ~/bc10/out/target/product/bc10/bc10-image/system/etc/firmware $ sudo cp -afr * ~/bc10/out/target/product/bc10/bc10-image/system/etc/firmware/ $ sudo chown -R root.root ~/bc10/out/target/product/bc10/bc10-image/system $ sudo chmod -R 777 ~/bc10/out/target/product/bc10/bc10-image/system SGX SDK のビルド †bc10/froyoと同じ手順でTI Android SGX SDKを取得します。
$ cd ~ $ git clone git://gitorious.org/rowboat/ti_android_sgx_sdk.git $ cd ti_android_sgx_sdk/ $ ./OMAP35x_Android_Graphics_SDK_setuplinux_3_01_00_03.bin インストールディレクトリ位置を聞かれるので今回はデフォルトインストールディレクトリ Rules.make の変更 †Rules.make のHOME、GRAPHICS_INSTALL_DIR、ANDROID_ROOT、CSTOOL_DIR、 $ cd ~/OMAP35x_Android_Graphics_SDK_3_01_00_03 --- Rules.make 2011-01-05 14:20:43.863788943 +0900 +++ Rules.make-orig 2011-01-05 14:17:04.661291128 +0900 @@ -4,24 +4,20 @@ PLATFORM=LinuxOMAP3 ################# FIELDS MODIFIABLE BY THE USER ############################### #set home area HOME (relative location for all SDK operations) -#HOME=INVALIDVAL -HOME=/home/beat/prebuilt-20101227 +HOME=INVALIDVAL #Current Directory where Graphics SDK is installed GRAPHICS_INSTALL_DIR=$(HOME)/OMAP35x_Android_Graphics_SDK_3_01_00_03 #Android Specific #Path of Android Root FS -#ANDROID_ROOT=$(HOME)/INVALIDVAL -ANDROID_ROOT=$(HOME)/bc10/out/target/product/bc10/bc10-image +ANDROID_ROOT=$(HOME)/INVALIDVAL #set toolchain root path for arm-eabi -#CSTOOL_DIR=INVALIDVAL -CSTOOL_DIR=$(HOME)/bc10/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0 +CSTOOL_DIR=INVALIDVAL CSTOOL_PREFIX=arm-eabi- CSTOOL_PATH=$(CSTOOL_DIR)/bin CSTOOL_LIBSTDC++_PATH=$(CSTOOL_DIR)/arm-none-linux-gnueabi/libc/usr/lib #set the kernel installation path -#KERNEL_INSTALL_DIR=$(HOME)/INVALIDVAL -KERNEL_INSTALL_DIR=$(HOME)/bc10-rowboat-kernel +KERNEL_INSTALL_DIR=$(HOME)/INVALIDVAL TARGETFS_INSTALL_DIR=$(ANDROID_ROOT) GFX_TARGETFS_KERMOD_PATH=$(TARGETFS_INSTALL_DIR)/lib/modules/2.6.32 RULEs.make変更完了後make、make installを実行します。 $ make $ make OMAPES=3.x install u-boot †u-boot-bc10のアップデートにより、有機ELを表示デバイスの初期値とするboot.scrの設定を $ cd ~ $ git clone git://gitorious.org/bc10/u-boot-bc10.git u-boot-bc10 $ cd u-boot-bc10 $ make mrproper $ make omap3_bc10_config $ make 有機ELを表示デバイスの初期値とする設定はu-boot-bc10内の u-boot-bc10/include/configs$ vi omap3_bc10.h #define CONFIG_EXTRA_ENV_SETTINGS \ "loadaddr=0x82000000\0" \ "usbtty=cdc_acm\0" \ "console=ttyS2,115200n8\0" \ "androidconsole=ttyS2\0" \ "mem=256M\0" \ "vram=12M\0" \ "dvimode=1024x768MR-24@60\0" \ "defaultdisplay=lcd\0" \ "mmcroot=/dev/mmcblk0p2 rw\0" \ "mmcrootfstype=ext3 rootwait\0" \ "nandroot=/dev/mtdblock4 rw\0" \ これは、以下のboot.scr と同じ内容になります。 if fatload mmc 0 84000000 uImage then echo ***** Kernel: /dev/mmcblk0p1/uImage.bin ***** fi echo ***** RootFS: /dev/mmcblk0p2 ***** setenv bootargs 'mem=256M androidboot.console=ttyS2 console=tty0 console=ttyS2,115200n8 root=/dev/mmcblk0p2 init=/init rootwait omapdss.def_disp=lcd' bootm 84000000 (注)setenv bootargs〜 disp=lcd' は改行していますが、使用される際は1行で記述してください。 ビルド後u-boot.binはSDカードFATパーティションにMLOファイルコピー後にコピーします。 x-loader †$ cd ~ $ git clone git://gitorious.org/~bc-dev/x-load-omap3/x-load-bc10.git x-load-bc10 $ cd x-load-bc10 $ git checkout -t -b bc10 origin/bc10 $ make omap3530bc10_config $ make x-load.binはOMAP BootROMの仕様とフォーマットが合っていないため、このままNAND Flashや $ signGP x-load.bin ビルド後作成されたx-load.bin.iftはMLOという名前に変更します。 $ mv x-load.bin.ift MLO 以上の作成ファイルを圧縮したものが prebuilt イメージになります。 prebuilt イメージの配置手順 †prebuilt-image †上記手順にて作成したイメージを sourceforge.jp からダウンロードできます。(URLは以下の通りです。) ダウンロードしてきたファイルはホームディレクトリに置くものとします。 FAT.tar.gz EXT3.tar.gz 上記の二つのアーカイブが入っています。 SD カードイメージ作成 †bc10/booting 起動用SDカード作成 の
作業環境はLinuxを想定しています。
以下の説明は主にLinuxBootDiskFormat(code.google.com)から引用してアレンジしたものです。 SDカードのアンマウント †このあとパーティション操作やフォーマット作業をおこなうために、 $ df -h Filesystem Size Used Avail Use% Mounted on ... /dev/sdc1 400M 94M 307M 24% /media/disk ... アンマウントをおこないます。 $ umount /media/disk パーティションの初期化・設定 †fdiskコマンドを実行します。 $ sudo fdisk /dev/sdc Command (m for help): [p] Disk /dev/sdc: 2021 MB, 2021654528 bytes 255 heads, 63 sectors/track, 245 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdc1 * 1 246 1974240+ c W95 FAT32 (LBA) Partition 1 has different physical/logical endings: phys=(244, 254, 63) logical=(245, 200, 19) パーティションを全て削除します。 Command (m for help): [d] Selected partition 1 エキスパートモードにモード変更します。 Command (m for help): [x] ヘッダ数を255に設定します。 Expert Command (m for help): [h] Number of heads (1-256, default xxx): [255] セクタ数を63に設定します。 Expert Command (m for help): [s] Number of sectors (1-63, default xxx): [63] シリンダ数の設定は使用するSDカードごとに異なります。 #シリンダ数 = 小数点以下切り捨て (SDカードのバイト数 / 255 / 63 / 512 ) 今回の例で使用しているSDカードでは以下のようになります。 2021654528 / 255 / 63 / 512 = 245.79 -> 245 シリンダ数を設定します。今回の例では245になります。 Expert Command (m for help): [c] Number of cylinders (1-256, default xxx): [上式で求めた値] ノーマルモードにモード変更します。 Expert Command (m for help): [r] FAT32パーティションを作成します。 Command (m for help): [n] Command action e extended p primary partition (1-4) [p] Partition number (1-4): [1] First cylinder (1-245, default 1): [(press Enter)] Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-245, default 245): [+50] Command (m for help): [t] Selected partition 1 Hex code (type L to list codes): [c] Changed system type of partition 1 to c (W95 FAT32 (LBA)) ブートフラグを設定します。 Command (m for help): [a] Partition number (1-4): [1] Linuxのファイルシステム用パーティションを作成します。 Command (m for help): [n] Command action e extended p primary partition (1-4) [p] Partition number (1-4): [2] First cylinder (52-245, default 52): [(press Enter)] Using default value 52 Last cylinder or +size or +sizeM or +sizeK (52-245, default 245): [(press Enter)] Using default value 245 パーティション設定を確認します。 Command (m for help): [p] Disk /dev/sdc: 2021 MB, 2021654528 bytes 255 heads, 63 sectors/track, 245 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdc1 * 1 51 409626 c W95 FAT32 (LBA) /dev/sdc2 52 245 1558305 83 Linux パーティションテーブルの変更を保存します。 Command (m for help): [w] The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot. WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. Syncing disks. ファイルシステムのフォーマット †FAT32パーティションとLinuxパーティションをそれぞれフォーマットします。 $ [sudo mkfs.msdos -F 32 /dev/sdc1 -n FAT32] mkfs.msdos 2.11 (12 Mar 2005) $ [sudo mkfs.ext3 -L EXT3 /dev/sdc2] mke2fs 1.40-WIP (14-Nov-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 195072 inodes, 389576 blocks 19478 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=402653184 12 block groups 32768 blocks per group, 32768 fragments per group 16256 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: prebuilt-image のファイルの配置 †FAT32パーティションへのファイルの配置 †FAT32パーティションのファイルには配置方法に制約がありますので、 $ mkdir FAT $ [tar xvfz FAT.tar.gz -C FAT] 展開すると以下のファイルが含まれています。 $ ls FAT.tar.gz
MLO u-boot.bin uImage 1段目のブートローダであるX-Loader(MLO)は、SDカード上の配置方法に制約があります。
$ [cp MLO /media/FAT32/] 他のファイルには配置方法に特に規則はありません。そのままSDカード上にコピーしてください。 $ [cp u-boot.bin boot.scr uImage /media/FAT32/] 配置する順序を間違えたり、手順に失敗したりした場合には、 EXT3パーティションへの配置 †EXT3パーティションへの配置には特に制限はありませんので、アーカイブを直接SDカード上に展開します。 $ [sudo tar xvfz EXT3.tar.gz -C /media/EXT3]
$ [sudo sync] $ [umount /media/EXT3] $ [umount /media/FAT32] SDカードからの起動 †用意できたSDカードをbc10のSDカードスロットに挿入して電源を投入します。 補足 †ボタン配置について †bc10の本体正面右側に7つのボタンがあります。 1. Menu 2. Back 3. Home 4. 上 5. 左 6. 右 7. 下 Android SGX について †init.rcの最終行に記載のとおりSGX機能が有効の設定になっています。 $ vi init.rc # Start PowerVR SGX DDK service pvr /system/bin/sgx/rc.pvr start bc10 Wifi 設定手順 †Android GUI上からのWifi ON/OFF機能を実装していません。 メーカー 型番 対応 Device ID PLANEX GW-USMicroN-G 2019:ED14 Logitec LAN-W150N/U2IPH 0789:0164 Logitec LAN-W150N/U2BK 0789:0168 Buffalo WLI-UC-GNM 0411:01a2 Buffalo WLI-UC-GN 0411:015d Buffalo WLI-UC-G301N 0411:016f Baffalo WLI-UG-G301N は USB ACパワードハブ経由に接続した場合の動作を確認しています 上記のRT3070USBデバイスをbc10に接続し起動します。 ... usb 1-2.4: new high speed USB device using ehci-omap and address 3 usb 1-2.4: New USB device found, idVendor=0411, idProduct=015d usb 1-2.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 1-2.4: Product: 802.11 n WLAN usb 1-2.4: Manufacturer: Ralink usb 1-2.4: SerialNumber: 1.0 ... rt3070sta.koファイルをinsmodし、netcfgコマンドでデバイスのup dhcpを行います。 # cd /system/lib/modules # ls RT2870STA.dat rt3370sta.ko # netcfg lo UP 127.0.0.1 255.0.0.0 0x00000049 # insmod rt3070sta.ko ... # netcfg lo UP 127.0.0.1 255.0.0.0 0x00000049 ra0 DOWN 0.0.0.0 0.0.0.0 0x00001002 # netcfg ra0 up ... # netcfg lo UP 127.0.0.1 255.0.0.0 0x00000049 ra0 UP 0.0.0.0 0.0.0.0 0x00001043 # netcfg ra0 dhcp # netcfg lo UP 127.0.0.1 255.0.0.0 0x00000049 ra0 UP 192.168.13.4 255.255.255.0 0x00001043 # prebuiltイメージのRT2870STA.datは以下のように設定しています。
USB Wifi (RT3070USB) ドライバーについて †prebuiltイメージでは' WFLAGS += -DCONFIG_STA_SUPPORT 'としてビルドしています。 $ vi os/linux/config.mk # config for STA mode ifeq ($(RT28xx_MODE),STA) WFLAGS += -DCONFIG_STA_SUPPORT -DDBG また以下のURLにrt3370sta.koのdebugプリント版rt3370sta.ko.tar.gzがあります。
# insmod rt3370sta.ko rtusb init ---> ===>rt2870_probe()! --> RTMPAllocAdapterBlock === pAd = d284d000, size = 503240 === <-- RTMPAllocAdapterBlock, Status=0 NumEndpoints=7 BULK IN MaxPacketSize = 512 EP address = 0x81 BULK OUT MaxPacketSize = 512 EP address = 0x 1 BULK OUT MaxPacketSize = 512 EP address = 0x 2 BULK OUT MaxPacketSize = 512 EP address = 0x 3 BULK OUT MaxPacketSize = 512 EP address = 0x 4 BULK OUT MaxPacketSize = 512 EP address = 0x 5 BULK OUT MaxPacketSize = 512 EP address = 0x 6 STA Driver version-2.4.0.1 NVM is EEPROM Allocate a net device with private data size=0! Allocate net device ops success! The name of the new ra interface is ra0... RtmpOSNetDevAttach()---> <---RtmpOSNetDevAttach(), ret=0 <===rt2870_probe()! usbcore: registered new interface driver rt2870 # netcfg lo UP 127.0.0.1 255.0.0.0 0x00000049 ra0 DOWN 0.0.0.0 0.0.0.0 0x00001002
# insmod rt3370sta.ko rtusb init ---> usbcore: registered new interface driver rt2870 # netcfg lo UP 127.0.0.1 255.0.0.0 0x00000049 ra0 DOWN 0.0.0.0 0.0.0.0 0x00001002 boot.scr について †u-boot-bc10のアップデートにより、有機ELを表示デバイスの初期値とする設定は また同じ内容の設定をboot.scrに記載し起動することも可能です。 $ cd ~ $ vi boot.script if fatload mmc 0 84000000 uImage then echo ***** Kernel: /dev/mmcblk0p1/uImage.bin ***** fi echo ***** RootFS: /dev/mmcblk0p2 ***** setenv bootargs 'mem=256M androidboot.console=ttyS2 console=tty0 console=ttyS2,115200n8 root=/dev/mmcblk0p2 init=/init rootwait omapdss.def_disp=lcd' bootm 84000000 (注)setenv bootargs〜 disp=lcd' は改行していますが、使用される際は1行で記述してください。 $ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n ./boot.script -d ./boot.script ./boot.scr &> /dev/null またdvi接続での起動の際は上記boot.scrのomapdss.def_disp=lcdをomapdss.def_disp=dviに変更し、 if fatload mmc 0 84000000 uImage then echo ***** Kernel: /dev/mmcblk0p1/uImage.bin ***** fi setenv bootargs 'mem=256M androidboot.console=ttyS2 console=tty0 console=ttyS2,115200n8 root=/dev/mmcblk0p2 init=/init rootwait omapfb.mode=dvi:1024x768MR-24@60 omapdss.def_disp=dvi' bootm 84000000 (注)setenv bootargs〜 disp=lcd' は改行していますが、使用される際は1行で記述してください。 omapfb.modeやomapdssの詳細については、kernelソースファイル内 参照URL †
更新記録 †2011/01/07 初稿記載、文言修正 |