bc10/TI-Android-GingerBread-2.3-Devkit-1.0 †
主な特徴 †TI-Android-GingerBread-2.3-Devkit-1.0 は、beagleboard など 作業手順 †作業の流れは以下のとおりです。
調整のため予告無く更新することがあります。予めご了承ください。 ビルド環境作成 †今回の環境は以下のようになります。
Android 2.3(codename : Gingerbread)以降をビルドするには 64bit 環境が必要です。 環境の構築は、Android Open Source Project の "Getting the Source" のページ 、 java6 †以下のコマンドで ubuntu のリポジトリから sun java6 のパッケージを取得してインストールします。 $ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner" $ sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner" $ sudo apt-get update $ sudo apt-get install sun-java6-jdk $ sudo update-java-alternatives -s java-6-sun パッケージインストール †以下のコマンドで ubuntu のリポジトリから必要なパッケージを取得してインストールします。 $ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev \ gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs \ x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev 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 初期化 †まず以後の作業すべてをその中で行う作業用ディレクトリを作成します。 $ cd ~/ $ mkdir bc10 $ cd bc10 このディレクトリ内に TI-Android-GingerBread-2.3-DevKit-1.0 を取得するためのディレクトリを作成し、 $ mkdir TI-Android-GingerBread-2.3-DevKit-1.0 $ cd TI-Android-GingerBread-2.3-DevKit-1.0 $ repo init -u git://gitorious.org/rowboat/manifest.git -m TI-Android-GingerBread-2.3-DevKit-1.0.xml repo sync †repo init の実行後、 repo sync を実行し DevKit のソースコードを取得します。 $ repo sync 約6GB のファイルをダウンロードしますので回線速度に応じて時間がかかります。 kernel ビルド †android の UI からの Wifi on/off に対応するためには 環境変数設定 †boot に必要な x-loader、u-boot、kernel は全て android のソースコードと共に配布されている $ export PATH=/home/beat/bc10/TI-Android-GingerBread-2.3-DevKit-1.0/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:${PATH} $ export ARCH=arm $ export CROSS_COMPILE=arm-eabi- kernel †$ cd ~/bc10/ $ git clone git://gitorious.org/~bc-dev/rowboat/bc10-rowboat-kernel.git bc10-rowboat-kernel $ cd ~/bc10/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/bc10-rowboat-kernel/arch/arm/boot/ Image Makefile bootp compressed install.sh uImage zImage USB Wifi (RT3070USB) ドライバー ビルド †USB Wifi に対応するため RT3070USB のドライバーを追加します。
ここでは、RT3070USB を使用している上記 USB Wifi の使用を前提に記述します。 差分は修正後のソースを 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-bc10 とリネームした後オリジナルと比較し diff -urN 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/ 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-bc10/ で取得しました。 注:下記のLINUX_SRCとCROSS_COMPAILEのPATHはご使用の環境によって適宜設定を変更してください。 +LINUX_SRC = /home/beat/bc10/bc10-rowboat-kernel +CROSS_COMPILE = /home/beat/bc10/TI-Android-GingerBread-2.3-DevKit-1.0/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- ・bc10 用設定の追加 --- 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/Makefile 2011-01-07 11:18:32.000000000 +0900 +++ 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-bc10/Makefile 2011-01-30 15:09:46.023581979 +0900 @@ -23,7 +23,8 @@ RTMP_SRC_DIR = $(RT28xx_DIR)/RT$(CHIPSET) #PLATFORM: Target platform -PLATFORM = PC +PLATFORM = BC10 +#PLATFORM = PC #PLATFORM = 5VT #PLATFORM = IKANOS_V160 #PLATFORM = IKANOS_V180 @@ -176,6 +177,11 @@ CROSS_COMPILE = endif +ifeq ($(PLATFORM),BC10) +LINUX_SRC = /home/beat/bc10/bc10-rowboat-kernel +CROSS_COMPILE = /home/beat/bc10/TI-Android-GingerBread-2.3-DevKit-1.0/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- +endif + ifeq ($(PLATFORM),IXP) LINUX_SRC = /project/stable/Gmtek/snapgear-uclibc/linux-2.6.x CROSS_COMPILE = arm-linux- @@ -384,6 +390,9 @@ 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 @@ -392,6 +401,7 @@ endif endif endif +endif release: ・リージョンコードの変更、設定例の変更 --- 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/RT2870STA.dat 2011-01-07 11:18:32.000000000 +0900 +++ 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-bc10/RT2870STA.dat 2011-01-30 15:18:32.301699483 +0900 @@ -1,8 +1,8 @@ #The word of "Default" must not be removed Default CountryRegion=5 -CountryRegionABand=7 -CountryCode= +CountryRegionABand=1 +CountryCode=JP ChannelGeography=1 SSID=11n-AP NetworkType=Infra @@ -18,8 +18,8 @@ PktAggregate=0 WmmCapable=1 AckPolicy=0;0;0;0 -AuthMode=OPEN -EncrypType=NONE +AuthMode=authtype +EncrypType=encrtype WPAPSK= DefaultKeyID=1 Key1Type=0 ・Vendor_ID:Device_ID の追加 --- 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/common/rtusb_dev_id.c 2011-01-07 11:18:32.000000000 +0900 +++ 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-bc10/common/rtusb_dev_id.c 2011-01-30 15:28:20.393002119 +0900 @@ -104,6 +104,13 @@ {USB_DEVICE(0x13D3,0x3321)}, /* Azurewave */ {USB_DEVICE(0x07FA,0x7712)}, /* Edimax */ {USB_DEVICE(0x0789,0x0166)}, /* Edimax */ + {USB_DEVICE(0x2019,0xED14)}, /* PLANEX added by BC */ + {USB_DEVICE(0x2019,0xAB29)}, /* PLANEX added by BC */ + {USB_DEVICE(0x0789,0x0164)}, /* Logitec added by BC */ + {USB_DEVICE(0x0789,0x0168)}, /* Logitec added by BC */ + {USB_DEVICE(0x0411,0x01a2)}, /* Buffalo added by BC */ + {USB_DEVICE(0x0411,0x016f)}, /* Buffalo added by BC */ + {USB_DEVICE(0x0411,0x015d)}, /* Buffalo added by BC */ #endif /* RT3070 */ { }/* Terminating entry */ }; ・bc10用設定の追加 --- 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/os/linux/config.mk 2011-01-07 11:20:51.000000000 +0900 +++ 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-bc10/os/linux/config.mk 2011-01-30 15:36:50.191769728 +0900 @@ -11,7 +11,7 @@ HAS_XLINK=n # Support Wpa_Supplicant -HAS_WPA_SUPPLICANT=n +HAS_WPA_SUPPLICANT=y # Support Native WpaSupplicant for Network Maganger HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n @@ -415,6 +415,10 @@ 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) ・GPLフラグの追加(これがないと insmod できません。) --- 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/os/linux/usb_main_dev.c 2011-01-07 11:18:32.000000000 +0900 +++ 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-bc10/os/linux/usb_main_dev.c 2011-01-30 14:38:08.011046027 +0900 @@ -37,6 +37,7 @@ /* Otherwise post to forum in ralinktech's web site(www.ralinktech.com) and let all users help you. *** */ MODULE_AUTHOR("Paul Lin <paul_lin@ralinktech.com>"); MODULE_DESCRIPTION("RT2870 Wireless Lan Linux Driver"); +MODULE_LICENSE("GPL"); #ifdef CONFIG_STA_SUPPORT #ifdef MODULE_VERSION MODULE_VERSION(STA_DRIVER_VERSION); 配布されているソースアーカイブは拡張子が bz2 となっているのに実際は gzip 圧縮されていますので、 $ cd ~/ $ tar xvfz 2011_0107_RT3070__RT3370_Linux_STA_v2.5.0.1_DPO.tar.bz2 $ patch -p0 < RT3070-2.5.0.1.diff $ cd 2011_0107_RT3070__RT3370_Linux_STA_v2.5.0.1_DPO/ $ make $ ls -l os/linux/rt3070sta.ko -rw-r--r-- 1 beat beat 8809768 2011-01-30 21:58 rt3070sta.ko make 完了後 os/linux/ 以下に rt3070sta.ko が作成されています。 bc10 用追加ファイルの取得 †TI-Android-GingerBread-2.3-DevKit-1.0 を bc10 向けにビルドするための追加ファイルを bc10 device build files †以下のコマンドで TI-Android-GingerBread-2.3-DevKit-1.0 を bc10 向けにビルドするビルド設定ファイル類をソースコード中に追加します。 $ cd ~/bc10/TI-Android-GingerBread-2.3-DevKit-1.0/device $ git clone git://github.com/bc-dev/2.3-device-beatcraft.git beatcraft $ git clone git://github.com/bc-dev/2.3-device-common.git common patch の適用とファイルの配置 †ファイルの追加でなく、TI-Android-GingerBread-2.3-DevKit-1.0 のソースコードに直接 bc10 向けの修正を加える patch を適用します。 patch の取得 †まず以下のコマンドで patch ファイルを取得します。 $ cd ~/bc10/ $ git clone git://github.com/bc-dev/2.3-patches.git 2.3-patches の中には二つのファイルが入っていますが、TI-Android-GingerBread-2.3-DevKit-1.0 では hardware-ti-omap3.diff の方は使用しません。 wpa_supplicant_6 †USB wifi を接続し Android の UI から設定できるよう wpa_supplicant_6 に patch をあてます。 $ cd ~/bc10/TI-Android-GingerBread-2.3-Devkit-1.0/external/wpa_supplicant_6 $ cp ~/bc10/2.3-patches/external-wpa_supplicant_6.diff . $ patch -p1 < external-wpa_supplicant_6.diff USB Wifi ドライバーの配置 †前項でビルドした RT3070USB のドライバーと、patch 済みのファームウェアファイルを $ cd ~/bc10/2011_0107_RT3070__RT3370_Linux_STA_v2.5.0.1_DPO/ $ cp os/linux/rt3070sta.ko ~/bc10/TI-Android-GingerBread-2.3-DevKit-1.0/device/beatcraft/bc10/ $ cp RT2870STA.dat ~/bc10/TI-Android-GingerBread-2.3-DevKit-1.0/device/beatcraft/bc10/ このディレクトリに配置したファイルは android のビルド時に 以上でビルドの準備が整いました。 Android ビルド †android ビルドのため bc10用の環境変数を設定します。 $ cd ~/bc10/TI-Android-GingerBread-2.3-DevKit-1.0/ $ source build/envsetup.sh including device/beatcraft/bc10/vendorsetup.sh including device/htc/passion/vendorsetup.sh including device/samsung/crespo/vendorsetup.sh $ lunch You're building on Linux Lunch menu... pick a combo: 1. generic-eng 2. simulator 3. full_bc10-eng Which would you like? [generic-eng] [3] ← 3 を入力し enter ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=2.3 TARGET_PRODUCT=full_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=GRH55 ============================================ 上記の設定確認後 make を実行します。 $ make make を実行する際はビルドの環境(CPU のコア数)に応じて -j2 など並列実行を指定すると所要時間を減らすことができます。 $ time make showcommands -j8 2>&1 | tee make.log-20110420-01 注:bc10ではkernelビルドとAndroid ビルドは別手順として実行しています。 Target system fs image: out/target/product/bc10/obj/PACKAGING/systemimage_intermediates/system.img Install system fs image: out/target/product/bc10/system.img Installed file list: out/target/product/bc10/installed-files.txt DroidDoc took 132 sec. to write docs to out/target/common/docs/doc-comment-check in kernel rule make -C kernel ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- uImage ...<略>... *** You have not yet configured your kernel! *** (missing kernel config file ".config") *** *** Please run some configurator (e.g. "make oldconfig" or *** "make menuconfig" or "make xconfig"). *** make[3]: *** [silentoldconfig] エラー 1 make[2]: *** [silentoldconfig] エラー 2 CHK include/linux/version.h make[1]: *** `include/config/kernel.release' に必要なターゲット `include/config/auto.conf' を make するルールがありません. 中止. make[1]: *** 未完了のジョブを待っています.... UPD include/linux/version.h make[1]: ディレクトリ `/home/beat/bc10/TI-Android-GingerBread-2.3-DevKit-1.0/kernel' から出ます make: *** [build_kernel] エラー 2 追加ビルド †上記のビルド完了後、同じ環境変数が設定されたままの状態で以下のコマンドを実行し、 $ cd ~/bc10/TI-Android-GingerBread-2.3-DevKit-1.0/device/beatcraft/bc10/libgps $ mm $ cd ~/bc10/TI-Android-GingerBread-2.3-DevKit-1.0/device/beatcraft/bc10/libsensors $ mm イメージ作成 †ビルド完了後のビルド済みファイルは bc10/TI-Android-GingerBread-2.3-DevKit-1.0/out/target/product/bc10/ にあり、以下のような内容になっています。 $ cd ~/bc10/TI-Android-GingerBread-2.3-DevKit-1.0/out/target/product/bc10/ $ ls -al drwxr-xr-x 8 beat beat 4096 2011-04-22 12:39 . drwxr-xr-x 3 beat beat 4096 2011-04-21 22:22 .. -rw-r--r-- 1 beat beat 11 2011-04-21 22:23 android-info.txt -rw-r--r-- 1 beat beat 3298 2011-04-22 12:01 clean_steps.mk drwxr-xr-x 3 beat beat 4096 2011-04-21 22:28 data -rw-r--r-- 1 beat beat 22691 2011-04-21 22:38 installed-files.txt drwxr-xr-x 14 beat beat 4096 2011-04-21 22:38 obj -rw-r--r-- 1 beat beat 230 2011-04-22 12:01 previous_build_config.mk -rw-r--r-- 1 beat beat 142359 2011-04-21 22:32 ramdisk.img drwxr-xr-x 8 beat beat 4096 2011-04-21 22:32 root drwxr-xr-x 5 beat beat 4096 2011-04-21 22:32 symbols drwxr-xr-x 12 beat beat 4096 2011-04-21 22:33 system -rw------- 1 beat beat 105228288 2011-04-21 22:38 system.img -rw------- 1 beat beat 1482624 2011-04-21 22:28 userdata.img 以下のコマンドでビルドされた userland のバイナリを起動可能な配置に整えます。 $ mkdir bc10_image $ cp -afr root/* bc10_image/ $ cp -afr system/* bc10_image/system/ $ sudo chown -R root.root bc10_image/ $ sudo chmod -R 777 bc10_image/ 起動可能な配置の userland は以下のような内容になります。 $ cd bc10_image $ ls -al drwxrwxrwx 8 root root 4096 2011-04-22 12:39 . drwxr-xr-x 8 beat beat 4096 2011-04-22 12:39 .. drwxrwxrwx 2 root root 4096 2011-04-21 22:23 data -rwxrwxrwx 1 root root 145 2011-04-21 22:23 default.prop drwxrwxrwx 2 root root 4096 2011-04-21 22:23 dev -rwxrwxrwx 1 root root 904 2011-02-07 15:35 gps_init.sh -rwxrwxrwx 1 root root 90084 2011-04-21 22:32 init -rwxrwxrwx 1 root root 1677 2011-03-23 19:55 init.goldfish.rc -rwxrwxrwx 1 root root 917 2011-02-07 15:08 init.omap3.rc -rwxrwxrwx 1 root root 15018 2011-02-07 17:15 init.rc drwxrwxrwx 2 root root 4096 2011-04-21 22:23 proc drwxrwxrwx 2 root root 4096 2011-04-21 22:32 sbin drwxrwxrwx 2 root root 4096 2011-04-21 22:23 sys drwxrwxrwx 12 root root 4096 2011-04-22 12:40 system -rwxrwxrwx 1 root root 0 2011-03-23 19:55 ueventd.goldfish.rc -rwxrwxrwx 1 root root 231 2011-02-07 21:05 ueventd.omap3.rc -rwxrwxrwx 1 root root 3764 2011-03-23 19:55 ueventd.rc SGX SDK のインストール †OMAP3530 の video chip PowerVR 用のドライバー TI Android SGX SDK は Rules.make の変更 †Make を実行するために、Rules.make 内の HOME、GRAPHICS_INSTALL_DIR、ANDROID_ROOT、 $ cd ~/bc10/TI-Android-GingerBread-2.3-DevKit-1.0/hardware/ti/sgx/ 以下に diff の形で示してあります Rules.make の変更点は、
ここまでのビルド時の設定に従った内容になっています。 $ diff -u Rules.make.orig Rules.make --- Rules.make.orig 2011-03-25 20:16:38.000000000 +0900 +++ Rules.make 2011-04-21 19:21:46.416467759 +0900 @@ -4,21 +4,26 @@ ################# FIELDS MODIFIABLE BY THE USER ############################### #set home area HOME (relative location for all SDK operations) -HOME=$(ANDROID_ROOT_DIR)/hardware/ti/sgx +#HOME=$(ANDROID_ROOT_DIR)/hardware/ti/sgx +HOME=/home/beat/bc10/TI-Android-GingerBread-2.3-DevKit-1.0/hardware/ti/sgx #Current Directory where Graphics SDK is installed -GRAPHICS_INSTALL_DIR=$(ANDROID_ROOT_DIR)/hardware/ti/sgx +#GRAPHICS_INSTALL_DIR=$(ANDROID_ROOT_DIR)/hardware/ti/sgx +GRAPHICS_INSTALL_DIR=/home/beat/bc10/TI-Android-GingerBread-2.3-DevKit-1.0/hardware/ti/sgx #Android Specific #Path of Android Root FS -ANDROID_ROOT=$(ANDROID_ROOT_DIR)/out/target/product/$(TARGET_PRODUCT) +#ANDROID_ROOT=$(ANDROID_ROOT_DIR)/out/target/product/$(TARGET_PRODUCT) +ANDROID_ROOT=/home/beat/bc10/TI-Android-GingerBread-2.3-DevKit-1.0/out/target/product/bc10/bc10_image #set toolchain root path for arm-eabi -CSTOOL_DIR=$(ANDROID_ROOT_DIR)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0 +#CSTOOL_DIR=$(ANDROID_ROOT_DIR)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0 +CSTOOL_DIR=/home/beat/bc10/TI-Android-GingerBread-2.3-DevKit-1.0/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3 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=$(ANDROID_ROOT_DIR)/kernel +#KERNEL_INSTALL_DIR=$(ANDROID_ROOT_DIR)/kernel +KERNEL_INSTALL_DIR=/home/beat/bc10/bc10-rowboat-kernel TARGETFS_INSTALL_DIR=$(ANDROID_ROOT) GFX_TARGETFS_KERMOD_PATH=$(TARGETFS_INSTALL_DIR)/lib/modules/2.6.32 RULEs.make変更完了後make、make installを実行します。 $ make OMAPES=3.x $ make OMAPES=3.x install Kernel 以外の起動に必要なファイルのビルド †u-boot †u-boot-bc10 のアップデートにより、有機ELを表示デバイスの初期値とする boot.scr の設定を $ cd ~/bc10/ $ git clone git://gitorious.org/bc10/u-boot-bc10.git u-boot-bc10 $ cd u-boot-bc10/ $ make mrproper $ make omap3_bc10_config arm-eabi-4.4.3のtoolchainでmakeを実行すると以下のようなリンカのエラーが起こります。 arm-eabi-ld: error: u-boot.lds:34:24: OVERLAY section type is unsupported /bin/sh: line 1: 12830 Segmentation fault ...<略>... このエラーを回避するために、LDのオプションを追加してmakeを実行します。 $ make LD=arm-eabi-ld.bfd 有機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 ~/bc10/ $ 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 MLO は SDカードFATパーティションの先頭に書き込むためのファイルです。 起動用 SD カードの作成 †bc10/booting 起動用SDカード作成 の
作業環境は Linux を想定しています。
以下の手順は主にLinuxBootDiskFormat(code.google.com)から引用してアレンジしたものです。 SDカードのアンマウント †このあとパーティション操作やフォーマット作業をおこなうために、 $ df -h Filesystem Size Used Avail Use% Mounted on ... /dev/sdd1 400M 94M 307M 24% /media/disk ... アンマウントをおこないます。 $ umount /media/disk パーティションの初期化・設定 †fdiskコマンドを実行します。 $ sudo fdisk /dev/sdd Command (m for help): [p] Disk /dev/sdd: 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/sdd1 * 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/sdd: 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/sdd1 * 1 51 409626 c W95 FAT32 (LBA) /dev/sdd2 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/sdd1 -n FAT32] mkfs.msdos 2.11 (12 Mar 2005) $ [sudo mkfs.ext3 -L EXT3 /dev/sdd2] 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: SDカードへのファイルの書き込み †FAT32パーティションへのファイル配置 †1段目のブートローダであるX-Loader(MLO)は、SDカード上の配置方法に制約があります。
$ cd ~/bc10/x-load-bc10/ $ sudo cp MLO /media/FAT32/ 他のファイルには配置方法に特に規則はありません。そのままSDカード上にコピーしてください。 $ cd ~/bc10/u-boot-bc10/ $ sudo cp u-boot.bin /media/FAT32/ $ cd ~/bc10/bc10-rowboat-kernel/arch/arm/boot/ $ sudo cp uImage /media/FAT32/ 配置する順序を間違えたり手順に失敗したりした場合は、 EXT3パーティションへの配置 †EXT3パーティションへの配置には特に制限はありません。 $ cd ~/bc10/TI-Android-GingerBread-2.3-DevKit-1.0/out/target/product/bc10/bc10_image/ $ sudo cp -a * /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. 下 boot.scr について †u-boot-bc10 のアップデートにより、有機ELを表示デバイスの初期値とする設定は $ 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 またHDMI-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ソースファイル内 SDカードについて †bc10 で動作確認をとった SDカードは以下のものになります。
記載されている全てのSDカードの動作確認は取っておりませんが、
TI-Android-GingerBread-2.3-DevKit-1.0 UserGuide のページに推奨SDカードが記載されています。 参照URL †
更新記録 †2011/04/26 初稿公開 |