bc10/prebuilt-20110127は、rowboat コミュニティーのTI-Android-FroYo-Devkit-V2のfroyoがAndroidベースバージョンになります。
TI-Android-FroYo-Devkit-V2のfroyoはmaster branchにあったころの安定版に相当します。
そのためAOSP Android 2.2_r1.1とは複数箇所で差異があります。
bc10/prebuilt-20110107のAndroidベースバージョンは
AOSP Android 2.2_r1.1です。
このbc10/prebuilt-20110127の項目は
TI-Android-FroYo-Devkit-V2のfroyoという別バージョンとして記載しています。
bc10/TI-Android-FroYo-Devkit-V2に追加、修正を加えた
TI-Android-FroYo-Devkit-V2 prebuiltイメージ作成手順
について記載しています。
大きな項目としては以下のものがあります。
カメラのプレビュー表示時に、 ハードウェアオーバレイを使用するように変更しました。 仕様・制限は以下のとおりです。 - 動作・解像度 V4L2カメラで動作します。 カメラ解像度の設定は640*480固定です。 - 画面拡大・縮小 表示領域に合わせて、画面の拡大・縮小が可能です。 拡大・縮小はハードウェアでおこないます。 プリケーション作成時は、Cameraに登録する SurfaceViewのサイズとPreviewのサイズを同じものにしてください。 - 動作確認アプリケーション ビルド済みAndroidに搭載されている Cameraアプリケションではカメラモードの撮影のみで 動作確認をしています。 カメラモードのオプションとビデオモードは それぞれハードウェア、ソフトウェアの対応をしていません。 - 動作確認デバイス この変更点の動作確認はLogicool Orbit AFで行っていますが、 Linux UVCに対応したUSBカメラであればどれでも動作可能です。 本体内蔵カメラは現在調整中です。 - 未解決事項 USBカメラ接続時にUSBデバイスがdisconnectされ USBデバイスが動作しないことがあります。 その際は電源を切り再度電源を入れなおしてください。 この現象はAC給電のUSBハブ経由でも起こることがあります。 詳細は現在調査中です。
- 動作確認 動作確認はAndroid起動の際にシリアルで insmod、netcfgコマンドで動作確認をしています。 注:Android GUI上からのWifi ON/OFF機能は実装していません。 - 動作確認デバイス prebuilt-20110127にはUSB WiFi (RT3070USB)のドライバーを 含めています、動作確認デバイスは以下のとおりです。 メーカー 型番 対応 Device ID Buffalo WLI-UC-GN 0411:015d
一部デバイスに対応中の箇所があります。予告無く更新することがありますのでご了承ください。
2010年10月27日にテキサスインスツルメンツ社より
TI-Android-FroYo-Devkit-V2がリリースされました。
TI-Android-FroYo-Devkit-V2は主にTI製品向けのfroyoの安定版です。
前述のとおりTI-Android-FroYo-Devkit-V2 は、
主にTI製品向けのfroyoの安定版になります。
またlunchコマンド実行時に以下のような表示がされます。
BUILD_ID=MASTER
TI-Android-FroYo-Devkit-V2のfroyoはmaster branch
にあったころの安定版に相当します。
そのためAOSP Android 2.2_r1.1 とは複数箇所で差異があります。
PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=2.2 TARGET_PRODUCT=generic TARGET_BUILD_VARIANT=eng TARGET_SIMULATOR= TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm HOST_ARCH=x86 HOST_OS=linux HOST_BUILD_TYPE=release BUILD_ID=MASTER
TI-Android-FroYo-Devkit-V2は、OMAP35x EVM, AM35x EVM,
AM37x EVM, Beagleboard Rev CxやBeagleboard XM向けのSDKパッケージです。
また、TI-Android-Froyo-Devkit-V2.xmlは各プロダクトの
特定のバージョンを取得できるようにxml内に
各プロダクトごとのリビジョンを含んでいます。
以下、TI-Android-FroYo-Devkit-V2 の開発環境、bc10用へ変更方法や
prebuiltイメージ作成について記載します。
(注):開発マシンのメモリが 1GB未満の場合repo sync実行時にprebuiltやsdkのfetchで
エラーが起こります。以下の手順は1GB以上のメモリで動作確認をしています。
TI-Android-FroYo-DevKit-V2_ReleaseNotes
TI-Android-FroYo-DevKit-V2_UserGuide
今回の開発環境の概略は以下のとおりです。
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
TI-Android-FroYo-Devkit-V2 のビルドに必要なsun-java5-jdkは
Ubuntu 9.10 以降リポジトリから外されていますので/etc/apt/sources.listに、
一時的に古いリポジトリを追加します。
$ 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 の設定を行います。
ホームディレクトリにbin というディレクトリを作成しrepoを取得します。
注:以後、/home/beat をホームディレクトリとして記載します。
$ cd ~ $ mkdir bin $ curl http://android.git.kernel.org/repo >~/bin/repo $ chmod a+x ~/bin/repo
ubuntu を使っていれば、一度ログアウトしてログインし直すと ~/bin への PATH は通っています。
ログアウトせずそのまま作業したい場合は、以下のようにして ~/bin を環境変数の PATH に追加します。
$ export PATH=~/bin:$PATH
TI-Android-Froyo-Devkit-V2 の取得方法を記載します。
Android のソースファイルを取得するのためにTI-Android-FroYo-DevKit-V2.xmlを使用します。
TI_Android_DevKit 02_00_00 Product Download Page から
TI-Android-FroYo-DevKit-V2.xml をダウンロードします。
(注):ファイル取得完了までに時間がかかることがあります。
また、作業には1GB以上のメモリを必要とします。開発マシンのメモリが
1GB未満の場合repo syncでprebuiltやsdk のfetch の際にエラーが起こります。
$ cd ~ $ mkdir TI-Android-FroYo-DevKit-V2 $ cd TI-Android-FroYo-DevKit-V2 $ wget http://software-dl.ti.com/dsps/dsps_public_sw/sdo_tii/TI_Android_DevKit/02_00_00/exports/TI-Android-FroYo-DevKit-V2.xml $ repo init -u git://gitorious.org/rowboat/manifest.git -m TI-Android-FroYo-DevKit-V2.xml $ repo sync
bc10用DevKit V2 patchのdevkitv2-patches-for-bc10.tar.gzを取得しファイルを展開します。
$ cd ~ $ tar xvfz devkitv2-patches-for-bc10.tar.gz $ cd devkitv2-patches-for-bc10
bc10-devkitV2-patch.sh 内のANDROID_DIR、SETUP_DIR、PATCH_DIRは以下のようにそれぞれ設定しています。
bc10-devkitV2-patch.sh の中の以下の環境変数をファイルの PATH に合うよう修正してください。
### Settings #ANDROID_DIR=${HOME}/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android ANDROID_DIR=${HOME}/prebuilt-20110122-DevkitV2/TI-Android-FroYo-DevKit-V2 SETUP_DIR=${HOME}/prebuilt-20110122-DevkitV2/devkitv2-patches-for-bc10 PATCH_DIR=${SETUP_DIR}/patches ###
patch適用後、device/ti以下にbc10ディレクトリが作成されます。
$ cd ~ $ tar xvfz devkitv2-patches-for-bc10.tar.gz $ cd ~/devkitv2-patches-for-bc10 $ ./bc10-devkitV2-patch.sh $ ls TI-Android-FroYo-DevKit-V2/device/ti/ am3517evm bc10 beagleboard igepv2 omap3evm
bc10用設定ファイルを読み込みビルドします。
$ cd ~/TI-Android-FroYo-DevKit-V2 $ source build/envsetup.sh $ lunch bc10-eng $ make
ビルドが終了したらビルドされたuserlandのバイナリを起動可能な配置に整えます。
userland を整えるスクリプトmkbc10-image.shを使用します。
mkbc10-image.sh内の ANDROID_DIR は以下のように設定しています。
ファイルの PATH に合うよう修正してください。
### Settings #ANDROID_DIR=${HOME}/bc10 ANDROID_DIR=${HOME}/prebuilt-20110122-DevkitV2/TI-Android-FroYo-DevKit-V2 ###
$ cd ~/devkitv2-patches-for-bc10 $ ./mkbc10-image.sh
実行後、TI-Android-FroYo-DevKit-V2/out/target/product/bc10/に、
bc10-imageディレクトリが作成されこのディレクトリ内にandroid userlandが配置されます。
boot に必要なx-loader、u-boot、kernelはAndroidのソースコードと共に
配布されているtoolchainを使用してビルドを実行します。
ビルド時に以下のtoolchainで cross compileが実行されるように
環境変数の設定をします。PATHのディレクトリ位置は上記の設定に合わせています。
$ export PATH=/home/beat/TI-Android-FroYo-DevKit-V2/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:$PATH $ export ARCH=arm $ export CROSS_COMPILE=arm-eabi-
$ 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 arch/arm/boot/ Image Makefile bootp compressed install.sh uImage zImage
ここでは、RT3070USBを使用している無線LAN USBデバイス、
Baffalo WLI-UG-G301N について記載します。
ドライバーはRALINK Web
にある Linux ドライバー2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO.tar.bz2と
ファームウェアRT28XX/RT30XX USB series (RT2870/RT2770/RT3572/RT3070)を使用します。
ドライバー及びファームウェアの入手はメールアドレスと氏名の入力を必要とします、
またドライバーのバージョンアップが行われた際過去のドライバーの取得ができないため
下記にドライバーを添付します。
toolchainは上記kernelビルド時に設定したAndroidソースファイル内の
prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin を使用します。
bc10用に下記のように2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPOを修正するか、
もしくは添付のRT3370USB.diffからのpatchコマンドを実行してください。
patchを当てることで bc10 向けにクロスコンパイルできるようになります。
変更内容は、
+LINUX_SRC = /home/beat/prebuilt-20110122-DevkitV2/bc10-rowboat-kernel +CROSS_COMPILE = /home/beat/prebuilt-20110122-DevkitV2/TI-Android-FroYo-DevKit-V2/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
$ cd ~ $ tar xvfz 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO.tar.bz2 $ patch -p0 < RT3370USB.diff $ cd 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/
修正が完了したら、makeを実行します。make 完了後 os/linux 以下にrt3070sta.ko が作成されます。
$ make $ ls -l os/linux/rt3070sta.ko -rw-r--r-- 1 beat beat 10871281 2011-01-20 14:50 os/linux/rt3070sta.ko
diff -urpN 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-orig/Makefile 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/Makefile --- 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-orig/Makefile 2011-01-07 11:18:32.000000000 +0900 +++ 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/Makefile 2011-01-18 18:11:40.641082398 +0900 @@ -23,7 +23,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 @@ -176,6 +177,11 @@ LINUX_SRC_MODULE = /lib/modules/$(shell CROSS_COMPILE = endif +ifeq ($(PLATFORM),BC10) +LINUX_SRC = /home/beat/prebuilt-20110122-DevkitV2/bc10-rowboat-kernel +CROSS_COMPILE = /home/beat/prebuilt-20110122-DevkitV2/TI-Android-FroYo-DevKit-V2/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- @@ -384,6 +390,10 @@ 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 @@ -392,7 +402,7 @@ endif endif endif endif - +endif release: $(MAKE) -C $(RT28xx_DIR)/striptool -f Makefile.release clean @@ -423,6 +433,9 @@ ifeq ($(TARGET), LINUX) $(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 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-orig/RT2870STA.dat 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/RT2870STA.dat --- 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-orig/RT2870STA.dat 2011-01-07 11:18:32.000000000 +0900 +++ 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/RT2870STA.dat 2011-01-18 18:05:18.130569879 +0900 @@ -1,8 +1,10 @@ #The word of "Default" must not be removed Default CountryRegion=5 -CountryRegionABand=7 -CountryCode= +#CountryRegionABand=7 +CountryRegionABand=1 +#CountryCode= +CountryCode=JP ChannelGeography=1 SSID=11n-AP NetworkType=Infra diff -urpN 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-orig/common/rtusb_dev_id.c 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/common/rtusb_dev_id.c --- 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-orig/common/rtusb_dev_id.c 2011-01-07 11:18:32.000000000 +0900 +++ 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/common/rtusb_dev_id.c 2011-01-18 18:06:15.102333133 +0900 @@ -104,6 +104,13 @@ USB_DEVICE_ID rtusb_dev_id[] = { {USB_DEVICE(0x13D3,0x3321)}, /* Azurewave */ {USB_DEVICE(0x07FA,0x7712)}, /* Edimax */ {USB_DEVICE(0x0789,0x0166)}, /* Edimax */ + {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 */ { }/* Terminating entry */ }; diff -urpN 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-orig/include/firmware.h 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/include/firmware.h --- 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-orig/include/firmware.h 2011-01-07 11:18:32.000000000 +0900 +++ 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/include/firmware.h 2011-01-20 19:09:02.032635701 +0900 @@ -1,28 +1,5 @@ -/* - ************************************************************************* - * Ralink Tech Inc. - * 5F., No.36, Taiyuan St., Jhubei City, - * Hsinchu County 302, - * Taiwan, R.O.C. - * - * (c) Copyright 2002-2010, Ralink Technology, Inc. - * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will beuseful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * * - *************************************************************************/ +/* AUTO GEN PLEASE DO NOT MODIFY IT */ +/* AUTO GEN PLEASE DO NOT MODIFY IT */ UCHAR FirmwareImage [] = { diff -urpN 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-orig/os/linux/config.mk 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/os/linux/config.mk --- 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-orig/os/linux/config.mk 2011-01-07 11:20:51.000000000 +0900 +++ 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/os/linux/config.mk 2011-01-18 18:08:15.011707777 +0900 @@ -11,7 +11,8 @@ HAS_QA_SUPPORT=n HAS_XLINK=n # Support Wpa_Supplicant -HAS_WPA_SUPPLICANT=n +#HAS_WPA_SUPPLICANT=n +HAS_WPA_SUPPLICANT=y # Support Native WpaSupplicant for Network Maganger HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n @@ -415,6 +416,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-rame-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) diff -urpN 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-orig/os/linux/usb_main_dev.c 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/os/linux/usb_main_dev.c --- 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO-orig/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/os/linux/usb_main_dev.c 2011-01-20 14:49:31.713651825 +0900 @@ -40,6 +40,7 @@ MODULE_DESCRIPTION("RT2870 Wireless Lan #ifdef CONFIG_STA_SUPPORT #ifdef MODULE_VERSION MODULE_VERSION(STA_DRIVER_VERSION); +MODULE_LICENSE("GPL"); #endif #endif /* CONFIG_STA_SUPPORT */
$ sudo mkdir ~/TI-Android-FroYo-DevKit-V2/out/target/product/bc10/bc10-image/system/lib/modules $ sudo mkdir -p ~/TI-Android-FroYo-DevKit-V2/out/target/product/bc10/bc10-image/system/etc/Wireless/RT2870STA $ sudo cp -afr os/linux/rt3070sta.ko ~/TI-Android-FroYo-DevKit-V2/out/target/product/bc10/bc10-image/system/lib/modules/ $ sudo cp -afr RT2870STA.dat ~/TI-Android-FroYo-DevKit-V2/out/target/product/bc10/bc10-image/system/etc/Wireless/RT2870STA/ $ cd ~ $ unzip RT2870_Firmware_V22.zip $ cd RT2870_Firmware_V22/ $ sudo mkdir ~/TI-Android-FroYo-DevKit-V2/out/target/product/bc10/bc10-image/system/etc/firmware $ sudo cp -afr * ~/TI-Android-FroYo-DevKit-V2/out/target/product/bc10/bc10-image/system/etc/firmware/ $ sudo chown -R root.root ~/TI-Android-FroYo-DevKit-V2/out/target/product/bc10/bc10-image/system $ sudo chmod -R 777 ~/TI-Android-FroYo-DevKit-V2/out/target/product/bc10/bc10-image/system
bc10/froyo と同じ手順で TI Android SGX SDK を取得します。
(注):取得完了までに時間がかかることがあります。
bc10/froyoにてOMAP35x_Android_Graphics_SDK_3_01_00_03をインストール済みの場合は
同じファイルなので転用しても問題ありません、Rules.makeのディレクトリ位置の変更には
注意してください。再度ダウンロードの際は任意にバックアップもしくは削除などをしてください。
$ 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
インストールディレクトリ位置を聞かれるので今回はデフォルトインストールディレクトリ
の${HOME}/OMAP35x_Android_Graphics_SDK_3_01_00_03を指定します。
To download TI's Android SGX SDK
Rules.make のHOME、GRAPHICS_INSTALL_DIR、ANDROID_ROOT、CSTOOL_DIR、
KERNEL_INSTALL_DIRをそれぞれのファイルPATHに合うよう修正してください。
以下の Rules.make は上記設定にあわせています。
$ cd ~/OMAP35x_Android_Graphics_SDK_3_01_00_03 $ vi Rules.make
Rules.make PLATFORM=LinuxOMAP3 ################# FIELDS MODIFIABLE BY THE USER ############ ################### #set home area HOME (relative location for all SDK operations) #HOME=INVALIDVAL HOME=/home/beat #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)/TI-Android-FroYo-DevKit-V2/out/target/product/bc10/bc10-image #set toolchain root path for arm-eabi #CSTOOL_DIR=INVALIDVAL CSTOOL_DIR=$(HOME)/TI-Android-FroYo-DevKit-V2/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0 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 TARGETFS_INSTALL_DIR=$(ANDROID_ROOT) GFX_TARGETFS_KERMOD_PATH=$(TARGETFS_INSTALL_DIR)/lib/modules/2.6.32 #Android ANDROID_DISCIMAGE=$(TARGETFS_INSTALL_DIR)/
RULE.make 変更完了後 make、make install を実行します。
$ make $ make OMAPES=3.x install
bc10(omap3530)でLinuxを動作させる場合、電源の投入後、一般に以下のような順番で実行されます。
1. BootROM code 2. X-Loader 3. U-Boot 4. Linux kernel(uImage)
u-bootはbc10起動時に実行される2段目のブートローダです。
bc10のブートプロセスやu-bootの配置方法についての情報はbc10/bootingを参照してください。
$ 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
ビルド後出来た u-boot.bin は SDカードFATパーティションにMLO ファイルコピー後コピーします。
SDカードイメージ作成についてはページ下部にありますSDカードイメージ作成をご覧ください。
x-loaderはbc10起動時に実行される第一段ブートローダです。
bc10のブートプロセスやu-bootの配置方法についての情報はbc10/bootingを参照してください。
$ 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や
SDカードに書きこんでもブートローダとして動作させることができません。
この問題を解決するため、signGP というツールで x-load.bin を加工する必要があります。
signGP の実行ファイルは以下の場所からダウンロードすることができます。
http://beagleboard.googlecode.com/files/signGP
ダウンロードした signGP を以下のように実行します。
$ signGP x-load.bin
ビルド後出来た x-load.bin.ift は MLO という名前で SDカードFATパーティションの先頭に書き込む
ためのファイルです。SDカードイメージ作成についてはページ下部にありますSDカードイメージ作成
をご覧ください。
このファイルはシリアルコンソールで u-boot のコマンドプロンプトから setenv で設定するのと同じ内容を作成し、
起動時に毎回手動で設定する手間を省略するためのものです。また、メモリマッピングを変えないよう設定します。
boot.scr を配置することで bc10 起動時に u-boot.bin 内に設定している bc10の起動内容(setenvの内容)を boot.scr に
記載した起動内容(setenvの内容)で起動します。
boot.scr 作成のために boot.script というファイルを作成し以下の内容を記載します。
(setenv から cli6010.enable=0'までは1行で記載してください )
mkimage で boot.script を boot.scr に変換し完了です。
$ 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 omapfb.mode=dvi:1024x768MR-24@60 omapdss.def_disp=lcd cli6010.enable=0' bootm 84000000
$ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n ./boot.script -d ./boot.script ./boot.scr &> /dev/null
以上の作成ファイルを圧縮したものが prebuilt イメージになります。
上記手順にて作成しましたイメージを sourceforge.jp からダウンロードできます。
ダウンロードしてきたファイルは HOMEディレクトリの/home/beat/に置くものとして記載します。
以下のURLからダウンロードしてください。
bc10-boot-sd-image--release20110127.tar.gz を展開すると
http://sourceforge.jp/projects/bc10-dev/releases/50734
FAT.tar.gz EXT3.tar.gz
上記の二つのアーカイブが入っています。
それぞれをSDカードのFAT32パーティションとEXT3パーティションに書き込んで下さい。
書き込みの手順は以下のようになります。
bc10/booting 起動用SDカード作成 の手順に従って作成していきます。
なお、この作成手順は、SDカード用です。bc10は、設計上マイクロSDからのブートは出来ません。
SDカードの概略は以下のようになります。
作業環境はLinuxを想定しています。
作業手順は以下のようになります。
以下の説明は主にLinuxBootDiskFormat(code.google.com)から引用してアレンジしたものです。
このあとパーティション操作やフォーマット作業をおこなうために、SDカードがマウントされている場合には、
まずアンマウントをおこないます。以下のようにSDカードがマウントされているとします。
$ df -h
Filesystem Size Used Avail Use% Mounted on ... /dev/sdc1 400M 94M 307M 24% /media/disk ...
アンマウントをおこないます。
$ umount /media/disk
fdiskコマンドを実行します。
引数にはSDカードのデバイスファイルを指定します。この位置は作業環境によって変わりますので、
事前に確認しておいてください。以下は実行例です。
$ 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パーティションをそれぞれフォーマットします。
FAT32とEXT3の文字列の部分はパーティションのラベルになりますので、お好きな名前で設定してください。
$ [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:
FAT32パーティションのファイルには配置方法に制限がありますので、作業環境でアーカイブを一旦展開します。
$ [tar xvfz FAT.tar.gz]
展開すると以下のファイルが含まれています。
$ ls FAT MLO boot.scr u-boot.bin uImage
1段目のブートローダであるX-Loader(MLO)は、SDカード上の配置方法に制限があります。必ず以下のように配置してください。
$ [cp MLO /media/FAT32/]
他のファイルには配置方法に特に制限はありません。そのままSDカード上にコピーしてください。
$ [cp u-boot.bin boot.scr uImage /media/FAT32/]
配置する順序を間違えたり、手順に失敗したりした場合には、FAT32パーティションのフォーマットからやり直すのが確実です。
ext3パーティションのファイルの配置には特に制限はありませんので、アーカイブを直接SDカード上に展開します。
$ [sudo tar xvfz ext3.tar.gz -C /media/EXT3]
以上で prebuild イメージのSDカード上への配置は完了です。
念のため sync を行ってからアンマウントしてください。
$ [sudo sync] $ [umount /media/EXT3] $ [umount /media/FAT32]
用意できたSDカードをbc10のSDカードスロットに挿入して電源を投入します。
Androidは初回起動時にSQLite3設定DBの作成やDalvik EXecutable(.dex)ファイルの生成を行い
それらの起動ディスクへの書き込みを行いますので、初回起動には少し長めに時間がかかります。
USB カメラ接続時に USBデバイスが disconnect され USBデバイスが動作しないことがあります。
その際は電源を切り再度電源を入れなおしてください。
またAC 給電のUSB ハブ経由でも起こることがあります。
詳細は現在調査中です。
デフォルトの表示デバイスro.sf.lcd_density は 120 に設定しています。
DVI に出力の際はアイコン表示など画面に比べて小さく表示されている場合は任意で
ro.sf.lcd_densityを160に変更して再起動してください。
$ cd ~/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android/out/target/product/bc10/bc10-image/system $ vi build.prop (略) ro.sf.lcd_density=120
このPerformance_Apps の導入については必須ではありません。
Performance_Apps は 2D、3Dの描画やCPUベンチマークソフト群です。
ベンチマークを導入したい場合は以下の手順をご覧ください。
デフォルト設定の状態でインストールすると、LuncherからLuncher2への入れ替えと
Contacts、Mms、SpeechRecorder が削除されます。
TI_Android_DevKit 02_00_00 Product Download Page
上記WebページにあるPerformance_Apps.tar.gz をダウンロードします。
Performance_Apps は apk で提供されています。また標準で Luncher2 もコピーされ
Contactsが削除されるためHOME画面上のボタン表示が変化します。
(電話アイコンの位置にPerformance_Apps アイコンが表示されます。)
$ wget http://software-dl.ti.com/dsps/dsps_public_sw/sdo_tii/TI_Android_DevKit/02_00_00/exports/Performance_Apps.tar.gz $ tar xvfz Performance_Apps.tar.gz $ cd Performance_Apps
install_rowboperf.sh を実行時にエラーが発生します、以下のように修正をします。
$ vi install_rowboperf.sh
*** 13,18 **** --- 13,19 ---- echo "Error: Rootfs location `basename $1` does not exist" exit $E_BADARGS fi + cd - echo "Rootfs location is $1"
完了後Androidのユーザランドを指定してスクリプトを実行します。
$ ./install_rowboperf.sh ~/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android/out/target/product/bc10/bc10-image
install_rowboperf.sh で追加されるapk と削除される apk は以下のとおりです。
cp -r ./0xbench/Benchmark-release.apk $1/system/app/ cp -r ./0xbench/armeabi/* $1/system/bin/ cp ./3D/OGLES* $1/system/app/ cp ./3D/lib* $1/system/lib/ cp ./StorageIO/StorageIO.apk $1/system/app/ cp ./rowboatBench/rowboat.benchmark.runner-debug.apk $1/system/app/ cp -r ./RowboPERF/bin/armeabi-v7a/* $1/system/bin/ cp ./RowboPERF/RowboPERF.apk $1/system/app/ cp ./StorageIO/StorageIO.apk $1/system/app/ cp ./Launcher2/Launcher2.apk $1/system/app/ rm $1/system/app/Contacts.apk rm $1/system/app/Mms.apk rm $1/system/app/SpeechRecorder.apk
init.rc の最終行に記載のとおりSGX 機能が有効の設定になっています。
不要の場合はコメントアウトで無効にしてください。
注:無効にした際にGUIの再描画が行われているため画面に若干のチラツキが発生します。
また、kernel 、userland 更新時は更新された kernel 、userlandを含む SGX のリビルド
が必要になります。
$ vi /media/LABEL2/init.rc
# Start PowerVR SGX DDK service pvr /system/bin/sgx/rc.pvr start
Android GUI上からの Wifi ON/OFF機能を実装していないので、起動の際にシリアルで insmod 、
netcfg コマンドで動作確認をしています。
対象となる USB-Wifi 機器はRT3070 搭載の以下の機器になります。
メーカー 型番 対応 Device ID Buffalo WLI-UC-GN 0411:015d
上記の RT3070USB デバイスをbc10 に接続し起動します。
シリアルコンソールで以下のようなデバイス認識を確認します。
以下の例はWLI-UC-GNでの接続例です。
... 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を行います。
RT2870STA.datはファイル内で指定したSSID への接続に使用します。
以下にシリアルコンソールからのnetcfg dhcp 接続までの例を記載します。
(出力されるログは省略しています)
# cd /system/lib/modules # ls rt3070sta.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 #
SSID=XXX-BC (略) AuthMode=OPEN EncrypType=WEP WPAPSK= DefaultKeyID=1 Key1Type=1 Key1Str=xxx.testessid Key2Type=0
2011/01/27 初稿記載、文言修正
2011/02/01 文言追加および修正