[[labs.beatcraft.com]]~ [[bc10]]~ ~ #contents ~ * bc10/prebuilt-20110122 概要 [#t3cd6613] [[bc10/TI-Android-FroYo-Devkit-V2]]に追加、修正を加えた TI-Android-FroYo-Devkit-V2 prebuilt イメージ作成について記載します。~ 大きな項目としては以下のものがあります。~ - [[prebuilt イメージの作成手順>]]~ イメージの作成手順は prebuilt-20110122 作成のための開発環境作成、ビルド手順について記載しています。~ - [[prebuilt イメージの配置手順>]]~ イメージの配置手順は prebuilt-20110127 のイメージ[[bc10-boot-sd-image--release20110127.tar.gz>http://sourceforge.jp/projects/bc10-dev/releases/50734]]の~ ダウンロード、SDへの配置について記載しています。~ 主な項目として以下の項目があります。 ~ - USBカメラドライバー対応~ USB カメラの画面解像度は 640x480 の画像解像度のみの対応となっています。~ その他詳細については下記の[[制限事項について]]をご覧ください。~ - USB WiFi(RT3070USB) ドライバー対応~ USB WiFi (RT3070USB) のドライバーを含めています、動作確認デバイスは以下のとおりです。~ メーカー 型番 対応 Device ID Buffalo WLI-UC-GN 0411:015d ~ 以後、/home/beat をホームディレクトリとして記載します。~ COLOR(red){ 一部デバイスに対応中の箇所があります。予告無く更新することがありますのでご了承ください。}~ ** bc10/TI-Android-FroYo-Devkit-V2 [#pd6dc9a3] ~ 2010年10月27日にテキサスインスツルメンツ社より TI-Android-FroYo-Devkit-V2 がリリースされました。~ TI-Android-FroYo-Devkit-V2 は、主に TI 製品向けの froyo の安定版です。 ~ ~ TI-Android-FroYo-Devkit-V2 をbc10用へ変更方法やprebuilt イメージ作成について記載します。~ ~ (注):開発マシンのメモリが 1GB未満の場合 repo sync で prebuilt や sdk のfetch で~ エラーが起こります。以下の手順は 1GB 以上のメモリで動作確認をしています。~ ~ [[TI-Android-FroYo-DevKit-V2_ReleaseNotes>http://processors.wiki.ti.com/index.php/TI-Android-FroYo-DevKit-V2_ReleaseNotes]] ~ [[TI-Android-FroYo-DevKit-V2_UserGuide>http://processors.wiki.ti.com/index.php/TI-Android-FroYo-DevKit-V2_UserGuide]] ~ ** 主な特徴 [#g21c8b3e] TI-Android-FroYo-Devkit-V2 は、OMAP35x EVM, AM35x EVM, AM37x EVM, Beagleboard Rev Cx, Beagleboard XM~ 向けの SDK パッケージです。~ ~ xmlファイルには各プロダクトコンポーネントの Commit ID / Baseline が記載されています。~ 各プロダクトごとのリビジョンを含んだ TI-Android-Froyo-Devkit-V2.xml で管理されています。~ * prebuilt イメージの作成手順 [#kceb09db] * 開発環境 [#p209889b] 今回の開発環境の概略は以下のとおりです。~ -OS: Ubuntu 10.04(32bit版)~ -JAVA: java 1.5x ~ -Android Version: android-2.2_r1.1 ** パッケージインストール [#de53ff68] 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 [#ef8bd7c6] 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 ソースファイル取得 [#nea0dd19] ** repo 設定 [#o0b0c850] android のソースコードを取得するために repo の設定を行います。~ $ 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 ** ファイルの取得 [#ka26666a] TI-Android-Froyo-Devkit-V2 の取得方法を記載します。~ Android のソースファイルを取得するのためにTI-Android-FroYo-DevKit-V2.xml を使用します。~ [[TI_Android_DevKit 02_00_00 Product Download Page>http://software-dl.ti.com/dsps/dsps_public_sw/sdo_tii/TI_Android_DevKit/02_00_00/index_FDS.html]] から ~ [[TI-Android-FroYo-DevKit-V2.xml>http://software-dl.ti.com/dsps/dsps_public_sw/sdo_tii/TI_Android_DevKit/02_00_00/exports/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 [#n52377d4] bc10 用 DevKit V2 patch devkitv2-patches-for-bc10.tar.gzを取得しファイルを展開します。~ #ref(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 ** Android のビルド [#df16b7a8] bc10 用設定ファイルを読み込みビルドします。~ $ cd ~/TI-Android-FroYo-DevKit-V2 $ source build/envsetup.sh $ lunch bc10-eng $ make ** イメージの作成 [#lcb0a86c] ビルドが終了したらビルドされた 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 が配置されます。~ ** 環境変数の設定 [#qce4f67a] 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- ** kernel のビルド [#w755860b] $ 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 ** USB Wifi (RT3070USB) ドライバー ビルド [#qef844a3] ここでは、RT3070USBを使用している無線LAN USBデバイスここでは Baffalo WLI-UG-G301N について記載します。~ ~ ドライバーは[[RALINK Web>http://www.ralinktech.com/support.php?s=2]] にある 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 を使用します。~ #ref(2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO.tar.bz2);~ #ref(RT3370USB.diff);~ ~ bc10用に下記のように2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPOを修正するか、~ もしくは添付のRT3370USB.diffからの patch コマンドを実行してください。~ patch を当てることで bc10 向けにクロスコンパイルできるようになります。~ 変更内容は、~ - bc10 向けのコンパイル設定の追加(platform、toolchain の PATH、コンパイルフラグの設定) - ファームウェアのリージョン設定を日本にし、設定項目例をわかりやすいものに変更 - USB Wifi のベンダーID、製品IDの追加 です。 $ 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 */ ** USB Wifi (RT3070USB) ドライバー 配置について [#adbdb5c3] - rt3070sta.ko~ 上記で作成したドライバーファイル rt3070sta.ko を~ android userland のある bc10/out/target/product/bc10/bc10-image/以下のsystem/lib/ に~ modules/というディレクトリを作成し配置します。~ ~ - RT2870STA.dat~ Wifiの設定ファイル RT2870STA.dat はSSID、認証形式、パスフレーズなどの設定をしたものを~ 同じく bc10/out/target/product/bc10/bc10-image/ 以下の~ system/etc/ に Wireless/RT2870STA というディレクトリを作成し配置します。~ 設定方法の詳細については README_STA_usb をご覧ください。~ - rt2870.bin ~ ファームウェア rt2870.bin とLICENSE.ralink-firmware.txt を 同じく system/etc/ に ~ firmware/ というディレクトリを作成し配置します。~ ファイルのオーナーと権限は mkbc10-image.sh にあわせて root と 777 にします。~ $ 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 ** SGX SDK のビルド [#g555a2b6] [[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>http://code.google.com/p/rowboat/wiki/Source#To_download_TI%27s_Android_SGX_SDK]] ~ ~ *** Rules.make の変更 [#ke48d729] 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 ** u-boot [#w583bb25] 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 [#r82ab56e] 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カードイメージ作成]]~ をご覧ください。~ ** boot.scr [#g1d02e0d] このファイルはシリアルコンソールで 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 イメージになります。~ * prebuilt-image [#ab8cb783] COLOR(red){修正中 };~ 上記手順にて作成しましたイメージを sourceforge.jp からダウンロードできます。~ ダウンロードしてきたファイルは HOMEディレクトリの/home/beat/に置くものとして記載します。~ 以下のURLからダウンロードしてください。~ bc10-boot-sd-image--release20101013.tar.gz を展開すると ~ FAT.tar.gz EXT3.tar.gz 上記の二つのアーカイブが入っています。 ~ それぞれをSDカードのFAT32パーティションとEXT3パーティションに書き込んで下さい。~ 書き込みの手順は以下のようになります。~ * SD カードイメージ作成 [#o13ac30f] [[bc10/booting 起動用SDカード作成 >http://labs.beatcraft.com/ja/index.php?bc10%2Fbooting#q0449272]]の手順に従って作成していきます。~ なお、この作成手順は、SDカード用です。bc10は、設計上マイクロSDからのブートは出来ません。~ SDカードの概略は以下のようになります。~ - FAT32パーティション -- X- Loader -- U-Boot -- Linux kernel -- boot.scr - Linuxパーティション -- Linuxルートファイルシステム(TI-Android-FroYo-DevKit-V2 ユーザランド) 作業環境はLinuxを想定しています。~ 作業手順は以下のようになります。 + パーティションの初期化・設定 + ファイルシステムのフォーマット + ファイルの配置 以下の説明は主に[[LinuxBootDiskFormat(code.google.com):http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat]]から引用してアレンジしたものです。~ ** SDカードのアンマウント [#s015a679] このあとパーティション操作やフォーマット作業をおこなうために、SDカードがマウントされている場合には、~ まずアンマウントをおこないます。以下のようにSDカードがマウントされているとします。~ $ df -h Filesystem Size Used Avail Use% Mounted on ... /dev/sdc1 400M 94M 307M 24% /media/disk ... アンマウントをおこないます。 $ umount /media/disk ** パーティションの初期化・設定 [#y9078f7c] 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. ** ファイルシステムのフォーマット [#g51c7516] 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: * prebuilt-image のファイルの配置 [#a5b17eea] **FAT32パーティションの配置 [#g32d86a9] FAT32パーティションのファイルには配置方法に制限がありますので、作業環境でアーカイブを一旦展開します。~ $ [tar xvfz FAT.tar.gz] 展開すると以下のファイルが含まれています。~ $ ls FAT MLO boot.scr u-boot.bin uImage 1段目のブートローダであるX-Loader(MLO)は、SDカード上の配置方法に制限があります。必ず以下のように配置してください。~ - FAT32パーティションのフォーマット後、最初に配置するようにします。 - パーティション内のトップディレクトリに配置します。 $ [cp MLO /media/FAT32/] 他のファイルには配置方法に特に制限はありません。そのままSDカード上にコピーしてください。 $ [cp u-boot.bin boot.scr uImage /media/FAT32/] 配置する順序を間違えたり、手順に失敗したりした場合には、FAT32パーティションのフォーマットからやり直すのが確実です。~ ***EXT3パーティションの配置 [#g73e209f] ext3パーティションの配置には特に制限はありませんので、アーカイブを直接SDカード上に展開します。 $ [sudo tar xvfz ext3.tar.gz -C /media/EXT3] ~ 以上で prebuild イメージのSDカード上への配置は完了です。~ 念のため sync を行ってからアンマウントしてください。 $ [sudo sync] $ [umount /media/EXT3] $ [umount /media/FAT32] * SDカードからの起動 [#w6faa303] 用意できたSDカードをbc10のSDカードスロットに挿入して電源を投入します。~ Androidは初回起動時にSQLite3設定DBの作成やDalvik EXecutable(.dex)ファイルの生成を行い~ それらの起動ディスクへの書き込みを行いますので、初回起動には少し長めに時間がかかります。 * 補足 [#ceeee919] ** 制限事項について [#b46cce0b] *** USBデバイスの認識について [#xa427e90] USB カメラ接続時に USBデバイスが disconnect され USBデバイスが動作しないことがあります。~ その際は電源を切り再度電源を入れなおしてください。~ またAC 給電のUSB ハブ経由でも起こることがあります。~ 詳細は現在調査中です。~ ** CameraPreview Overlayについて [#hedf8add] - カメラのプレビュー表示時に、ハードウェアオーバレイを使用するように変更しました。 - 仕様・制限は以下のとおりです。 -- V4L2カメラで動作します。 -- カメラ解像度の設定は640*480固定です。 -- 表示領域に合わせて、画面の拡大・縮小が可能です。拡大・縮小はハードウェアでおこないます。 -- アプリケーション作成時は、Cameraに登録するSurfaceViewのサイズとPreviewのサイズを同じものにしてください。 -- ビルド済み Android に搭載されている Camera アプリケションではカメラモードの撮影のみで動作確認をしています。 カメラモードのオプションとビデオモードはそれぞれハードウェア、ソフトウェアの対応をしていません。~ -- この変更点の動作確認は Logicool Orbit AF で行っていますが、~ Linux UVC に対応した USBカメラであればどれでも動作可能です。 ** Android 起動時の build.prop [#oc206437] デフォルトの表示デバイス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 の導入について [#pa0d4ada] このPerformance_Apps の導入については必須ではありません。~ Performance_Apps は 2D、3Dの描画やCPUベンチマークソフト群です。~ ベンチマークを導入したい場合は以下の手順をご覧ください。~ デフォルト設定の状態でインストールすると、LuncherからLuncher2への入れ替えと~ Contacts、Mms、SpeechRecorder が削除されます。~ [[TI_Android_DevKit 02_00_00 Product Download Page>http://software-dl.ti.com/dsps/dsps_public_sw/sdo_tii/TI_Android_DevKit/02_00_00/index_FDS.html]] ~ 上記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 ** Android SGX について [#b80953e2] init.rc の最終行に記載のとおりSGX 機能が有効の設定になっています。~ 不要の場合はコメントアウトで無効にしてください。~ また、kernel 、userland 更新時は更新された kernel 、userlandを含む SGX のリビルド ~ が必要になります。~ $ vi /media/LABEL2/init.rc # Start PowerVR SGX DDK service pvr /system/bin/sgx/rc.pvr start ** bc10 Wifi 設定手順 [#a7be2574] Android GUI上からの Wifi ON/OFF機能を実装していないので、起動の際にシリアルで insmod 、~ netcfg コマンドで動作確認をしています。~ 対象となる USB-Wifi 機器はRT3070 搭載の以下の機器になります。~ メーカー 型番 対応 Device ID Buffalo WLI-UC-GN 0411:015d 上記の RT3070USB デバイスをbc10 に接続し起動、デバイスの認識を確認後~ netcfg ra0 up にてデバイスを起動、netcfg ra0 dhcp などのコマンドを実行し~ RT2870STA.dat で指定したSSID との接続、IP 取得を行います。~ prebuilt イメージのRT2870STA.dat は以下のように設定しています。~ お使いの環境に合わせて設定してください。~ 以下にXXX-BCという無線LAN(認証方式:AuthMode OPEN、暗号化方式:EncrypType WEP、~ 暗号キーの文字タイプ:Key1Type 1(acsii)、暗号キー:Key1Str xxx.testessid)~ の接続設定例を記載します。~ ~ 接続設定の詳細については 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/README_STA_usb ~ をご覧ください。~ SSID=XXX-BC (略) AuthMode=OPEN EncrypType=WEP WPAPSK= DefaultKeyID=1 Key1Type=1 Key1Str=xxx.testessid Key2Type=0 * 参照URL [#e90654f8] - rowboat ConfigureAndBuild ~ -- http://code.google.com/p/rowboat/wiki/ConfigureAndBuild#Install_the_drivers_in_Target_filesystem - [Armadillo:06309] Re: Armadillo-440 で使用可能な無線LAN アダプタについて ~ -- http://lists.atmark-techno.com/pipermail/armadillo/2010-December/006309.html