bc10/prebuilt-20110107 is based upon AOSP android-2.2_r1.1
This article provides the detail explanations of the bootable prebuilt image, android-2.2_r1.1 prebuilt image. This
prebuilt image is basically a modified and extended version of the bootable image for bc10/froyo. The first half
of this section shows how to build the bootable image, and the second half explains how to create a bootable SD
card, placing the prebuilt image on a the SD card.
- The instructions of how to create the prebuilt image
This section provides the instructions of how to create an development environment for prebuilt-20110107, the
building method of prebuilt-20110107, and the addition of Wifi driver for prebuilt-20110107. This explains
how to create the prebuilt image.- The instructions of how to place the prebuilt image
This section shows that how to download the image of prebuilt-20110107, bc10-boot-sd-image-release20110107.tar.gz
and how to place the images into a SD card. This section shows how to make a SD card bootable.
To create the development environment, these three items are really critical.
- OS: Ubuntu 10.04 (32bit version)
- JAVA: java 1.5x
- Android Version: android-2.2_r1.1
Obtain the required packages from the repository of ubuntu and instal the packages.
$ 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
Since Ubuntu 9.10 sun-java5-jdk, which is critical to build Android, has been removed from the repository of ubuntu.
An old repository is temporarily added to /etc/apt/source.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 multiverseAfter adding the old repository, acquire the information of repository by applying apt-get update. Then, install
sun-java5-jdk.$ sudo apt-get update $ sudo apt-get install sun-java5-jdkAfter completing the installation, the added repository is removed. This prevents accidentally installing old packages.
$ 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 multiverseOnce again, applying apt-get update, obtain the present information of the current repository and restore the
original present depository.$ sudo apt-get update
Configure repo for obtaining the source code of android.
$ cd ~ $ mkdir bin $ curl http://android.git.kernel.org/repo >~/bin/repo $ chmod a + x ~/bin/repo
As using Ubuntu, once log-out and then log-in, PATH is going through ~/bin automatically. Prefer to stay
log-in, set the PATH to ~/bin flowing directions shown below.$ export PATH=~/bin:$PATH
Create a directory called bc10 for the source file, and execute repo init to download android-2.2_r1.1 branch
to the bc10 directory.$ cd~ $ mkdir bc10 $ cd bc10 $ repo init -u git*//android.git.kernel.org/platform/manifest.git -b android-2.2_r1.1
The source code that can be downloaded with the android-2.2_r1.1 tag does not include ALSA. To use ALSA as audio
library, modify the local_manifest.xml for adding ALSA and its related files, and make the source code of the ALSA
file obtainable. To obtain the files, create a local_manifest.xml under the directory of bc10/.repo/ and modify
it as shown below.
The android-2.2_r1.1 specific ALSA related files have not been tagged out yet. This time, the ALSA of Froy branch is used
for android-2.2_r1.1.$ 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>
After adding local_manifest.xml, execute repo sync''', and obtain the source code of android.
$ repo syncThe total size of the files is from 2 to 4GB. Download time highly depends on the speed of network.
The patches and configuration files, which Optimize and build android-2.2_r1.1 for bc10, are downloaded from the
repository of github by the command of git clone. Then apply the patches and configuration files by the command of
patch_to_android-2.2_r1.1_for bc10/bc10-patch.sh.$ cd ~ $ git clone git://github.com/bc-dev/path_to_android-2.2_r1.1_for _bc10.git $ cd patch_to_amndroid-2.2_r1.1_for _bc10There are no specific directory for the downloaded patches and configuration files, which are obtained by git clone,
but before applying these patches and files, make sure that the environment variables in bc10-patch.sh are matched with
the PATHs of these files.$ 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-bc10After checking the PATHs of the files are equal to the the environment variables in bc10-patch.sh, execute bc10-patch.sh.
$ ./bc10-patch.sh
Set up the environment for 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 ============================================Check the configuration of environment. Then, execute make.
$ make
After build is completed, relocate the binary of userland to a bootable place. mkbc10-image.sh is used for setting up
userland.$ cd ~/patch_to_android-2.2_r1.1_for_b10 $ ./mkbc10-image.shExecute commands above, bc10-image is created under the directory of bc/out/target/product/bc10/. Under the directory of
this bc10-image android userland will be placed./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
x-loader, u-boot, and kernel are required for booting bc10. These are built with toolchain, which is distributed with the
source code of android. toolchain used here is located at the directory, prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin.
The environment variable is needs to set for the cross compile as this toolchain build these files.$ export PATH=/home/beat/bc10/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/Shift to the release branch for bc10.
$ git checkout -t -b bc10-2.6.32 origin/bc10-2.6.32 $ make omap3_bc10_defconfig $ make uImage $ make modulesAfter build is completed, uImage is created at the directory shown below.
$ ls ~/bc10-rowboat-kernel/arch/arm/boot/ Image Makefile bootp compressed install.sh uImage zImage
To work with USB Wifi devices, a Wifi driver, RT3070USB is added. The devices listed below have been tested and confirmed that
the devices are working appropriately.
Some devices are still underdevelopment, please do understand that the contents may change without advanced notice.Maker Serial Number Device ID Memo 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  The performance of Baffalo WLI-UG-G301N is only confirmed as it is connected to AC powered hub. Buffalo WLI-UC-GN 0411:015dIn this section, the explanation is specifically targeted at Baffalo's and Logitec's Wifi devices.
The driver, 2010_0831_RT3070_Linix_STA_v2.4.01_DPO.bz2, is downloaded from PALINK Web. The driver used here is
a Linux driver. Also, a firmware, RT28xx/RT30xx USB series (RT2870/RT2770/RT3572/RT3070) are required. To download
the source code and/or firmware, input user name and email address for downloading the files. Assume that the downloaded
files are placed at the directory of /home/beat/. toolchain used here is the same toolchain which is used for building kernel
and located at the directory of prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin. The firmware is modified for bc10. prebuilt image
does not produce any debug logs since a part of config.mk, which is located at the directory of os/linux/config.mk, is set as
WLAGS += -DCONFIG_STA_SUPPORT. As debug logs are not displayed, critical logs may be missed. Please be careful.
To produce debug logs, set up the part of config.mk as -WFLAGS += -DCONFIG_STA_SUPPORT -DDBG, then, rebuild
the source file and place the file again. During the redoing process, debug logs are output. There may be too many logs,
and these logs make to harder to work on this process.
To apply the patch, RT3070USB.diff, this becomes capable of cross-compile for bc10.
The contents of the patch are:
- Add the compile configuration for bc10 (platform, PATH of toolchain, and the configuration of compile frags.
- Set up the region of firmware to Japan, and change the examples of each section.
- Add USB Wifi vender ID and product ID.
#ref(2010_08131_RT3070_Linux_STA_v2.4.0.1_DPO.bz2);
#ref(RT3070USB.diff);
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) (From "EXTRA_CFLAGS := -D__KERNEL__ -DMODULE=1" to "$(WFLAGS)", this is supposed to be one line.)
As it is shown below, the archive is extracted, apply the patch, and executes make. After make is completed, rt3370sta.kois
created under the directory of OS/linux.$ 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/rt337sta.ko
- rt3370sta.ko
Create the directory modules/ under the directoy of bc10/out/target/product/bc10/bc10-image/system/lib/, which is
located at android userland. rt3370sta.ko a driver file, which is crated at the process described above, is shifted to the
directory of modules/.
- RT2870STA.dat
The wifi configuration RT2870STA.dat contains SSID, authentication types, passphrase, and other information. This
configuration file is put down the directory of bc10/out/target/product/bc10/bc10-image/system/etc/.
- rt2870.bin
Creating a directory firmware/ under the directory of bc10/out/target/product/bc10/bc10-image/system/etc/, rt2870.bin
a firmware and LICENSE.ralink-firmware.txt are placed inside newly created firmware/ directory.
To comply with mkbc10-image.sh, hereafter file's owner and authority are named as root and 777, respectively.
$ 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
Obtain TI Android SGX SDK as employing the same method as the process described at bc10/froyo.
(Caution):
- It may take long time to download the SDK.
- If you have already installed '''OMAP35x_Android_Graphics_SDK_3_01_00_03 for bc10/froyo, you can use the same SDK.
Make sure that the SDK is moved to the directory of Rules.make. If you download the file, please backup or remove the
original SDK as you wish.- As whole kernel and/or Android userland are replaced, the whole rebuild of kernel and Android is required.
$ 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.binAs working with the command line above, the location of install directory is asked. Please select the default directory of
${HOME}/OMAP35x_Android_Graphics_SDK_3_01_00_03. ${HOME} indicates the home directory, /home/beat.
Adjust HOME, GRAPHICS_INSTALL_DIR, ANDROID_ROOT, CSTOOL_DIR, and KERNEL_INSTALL_DIR on Rules.make to each
file PATH.
(Caution):
The Rules.make shown below is created according to the setting of the directory described at the end of the previous section.
ANDROID_ROOT should be matched to the location of directory, which has been created at the process of mkbc10-image.sh.
$ CD ~/OMAP35X_ABDROID_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
After the modifications of RULE.make is completed, make Install is executed.
$ make $ make OMAP-3.x install
As u-boot-bc10 is updated, boot.scr , which makes AMOLED as the default value of display device is adjusted. After
the update is completed, the duration of waiting period at bc10's boot process is changed from 10 seconds to 2 seconds.$ cd ~ $ git clone git://gitorious.org/bc10/u-boot-bc10.git u-boot-bc10 $ cd u-boot-bc10 $ make mrproper $ make omap3_bc10_config $ makeThe display configuration, which treats AMOLED as its default value, is written in the directory of include/configs/omap3_bc10.h.
This directory is located inside u-boot-bc10. Its details are shown below.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" \Shown below, the contents are the same as ones of 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 (Caustion)From "setenv bootargs2 to "disp=lcd", this is originally written in one line. As you apply this script, please write in one line.
After the build process is completed, u-boot.bin is copied into the FAT partition. This is copied right after MOL file is copied.
To create SD card image, please look at the section of creating SD card image, shown below.
$ 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 $ makeThe specifications and format of x-load.bin do not match with OMAP BootROMs. If x-load.bin is written into a SD card
without modification, it does not work as a boot loader. To solve this issue, x-load.bin is needed to be modified with signGP.
signGP can be downloaded from the address shown below.
http://beagleboard.googlecode.com/files/signGP
After the download is finished, execute sigGP is executed as it is defined below.$ ./signGP x-load.binx-load.bin.ift, which is created after build is completed, is needed to change its name to MLO. MLO should be written into the top
of FAT partition of the SD card. The information of how to create the SD card image is available at the section below.
The prebuilt image is compressed files that we have built so far.
The rebuilt image can be created as following instructions described in the first half of this section, or the image is obtained
by downloading the prebuilt image from here.
The obtained file (created or downloaded) is placed at the HOME directory, /home/beat/.
Extract bc10-boot-sd-image—release20110107.tar.gzFAT.tar.gz EXT3.tar.gzThere are two archives in the file. As their names are indicated, please put these archives in FAT partition and EXT3 partition of
the targeted SD card, respectively.
The instructions of writing into these archives are described as it is followed.
The creation of bootable SD card is following the instructions described in the section of Create bootable SD card at bc10/booting.
This instructions are strictly for SD card. bc10 cannot be booted from microSD card by its design. The structure of the SD card is
described below.
- FAT32 partition
- X-Loader
- U-Boot
- Linux kernel
- Linux partition
- Linux root file system
This working environment is expected to employ a Linux environment. The working instruction is listed below.
- Initialization and configuration of partitions.
- Format file system
- Placement of files
The instructions are mainly from LinuxBootFormat (code.google.com) and modified for bc10.
To start working on partition and formatting, unmount the SD card, first, if the SD card is mounted.
$ df -h
Filesystem Size Used Avail Use% Mounted on ... /dev/sdc1 400M 94M 307M 24% /media/disk ...
unmount the SD card.
$ unmount /media/disk
Execute fdiskcommand. Its parameter is the device file of the SD card. The directory shown below may differ, depending on your
working environment and the location of the SD card. Please check the directory of your SD card before starting working on this task.$ 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)Remove all partitions
Command (m for help): [d] Select partition 1Shift into Expert Mode.
Command (m for help): [x]Set the number of heads to 255.
Expert Command (m for help): [h] Number of heads (1-256, default xxx): [255]Set the number of sectors to 63.
Expert Command (m for help): [s] Number of sectors (1-63, default xxx): [63]The number of cylinders is differ, and it depends on SD cards. This is how to calculate the number of cylinders. The outcome is
truncated, do not be rounded.#cylinders = FLOOR (the number of Bytes on the SD Card (from above) / 255 / 63 / 512 )The number of cylinders for the SD card used here is calculated as described below.
2021654528 / 255 / 63 / 512 = 245.79 -> 245Set the number of cylinders. For this example, the number of cylinders is 245.
Expert Command (m for help): [c] Number of cyliner (1-256, default xxx): [the number obtained from the equation above]Return to Normal Mode.
Expert Command (m for help): [r]Create FAT32 partition in the SD Card.
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))Configure boot flag in the first partition, and male it bootable.
Command (m for help): [a] Partition number (1-4): [1]Create the partition for Linux file system.
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 245Check the setting of the partitions.
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 LinuxSave the changes in the partition table.
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.
Format the FAT32 partition and the Linux partition, individually. The first line of each command, FAT32 and EXT3 indicate
the labels of the partitions, respectively. You can replace “FAT32” and “EXT3” with the names of partitions depending on
your preference.
This is for FAT32 partition. At the end of the first line, “FAT32” indicates the name of partition, you can label the name
whatever you like.$ [sudo mkfs.msdos -F 32 /dev/sdc1 -n FAT32] mkfs.msdos 2.11 (12 Mar 2005)This is for Linux partition. At the first command line, “EXT3” (the capital letters) suggest that the location of the partition
name. It can be replaced with own partition name.$ [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:
To place the file in FAT32 partition, there are some restrictions. Please follow the instruction carefully. The archive is
extracted at the working environment.$ [tar xvfz FAT.tar.gz]The extracted archive contains a file.
$ ls FAT.tar.gz MLO u-boot.bin uImageSince X-Loader (MLO) is the first boot loader, there are strict order to place the file to the SD card. Please follow the
instructions, carefully.
- After formatting FAT32 directory, MLO is placed first.
- MLO is put at the top directory in the partition.
$ [cp MLO /media/FAT32/]There are no specific rules for how to put other files. Copy these files on the SD card as they are.$ [cp u-boot.bin boot. Scr uImage/media/FAT32]If you have made mistakes and/or done it in wrong order, redone from the part of formatting Fat32 partition.
There are no specific restriction for placing the created files. The archive is extracted on the SD card.
$ [sudo tar xvfz ext3.tar.gz -C /media/EXT3]
This is the end of transferring the prebuild image onto the SD Card. To do sync for saving all changes, then unmount the SD card.
$ [sudo sync] $ [unmount /media/EXT3] $ [unmount/ media/FAT32]
To insert the prepared SD card into the SD card slot of bc10, turn on power supply. For the first time booting, DB is made for
setting up SQLite and Dalvik EXecutable.dat is created. These newly created information is written into bootable disk.
Thus, the first time booting takes a lttle longer than usual.
There are seven buttons on the right hand side of bc10 (seven buttons on each side, and totally 14 buttons).
As Picture a is indicated, each button has been pre-assigned for a different task. To change the program, the assignment of
each key is also altered.
(In the picture, the enclosure of bc10 is a prototype.)1. Menu 2. Back 3. Home 4. Up 5. Left 6. Right 7. Down
As explaining at the last line of init.rc, SGX functions remain effective. To make SGX ineffective, please comment out
the lines of commands. As kernel and/or userland are updated or modified, not only kernel and/or userland, but also GSX are needed
to be rebuild.$ vi init.rc
# Start PowerVR SGX DDK service pvr /system/bin/sgx/rc.pvr start
As Android is not capable of control on/off function of wifi over its GUI, apply insmod and netcfg commands to check
the working status of wifi functionality. This wifi configuration method is only applicable the devices, which is equipped with
RT3070USB driver.Maker Parts Number 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 works only as it is connected to a USB AC-powered hub.
One of the RT3070USB devices shown in the table above is connected to bc10, and bc10 is booted. As the device is recognized,
the serial console displays such outputs as shown below.~ (This is an example of connecting 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 ...
After booting is completed, execute insmod on the rt3370sta.ko file. Apply netcfg command to the device, and execute
up dhcp. RT2870STA.dat is used for connecting to the SSID, which is specified in the rt3370sta.ko file. The following
outputs, which are displayed in the serial console, are resulted from the connection up to netcfg dhcp connection.
(The some parts of logs are not shown. RT2870STA.dat, which is located at '''/system/lib/module is not used here.)# 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 #
RT2870STA.dat in the prebuilt image is configured in the way as it is shown below. The configuration is highly depending on
working environment, please set up RT2870STA.dat for the working environment.
An an example of connection configuration, the example below is listed in SSID (xxx-BC):
authentication method (AuthMode OPEN) encryption scheme (EncryType WEP) typeface of encryption key (Key1Type1 (scsii)) and encryption key (Key1Str xxx.testessid).
For the farther explanations, please look at 2010_0831_RT3070_Linux_STA_v2.4.0.1_DPO/README_STA_usb.
- RT2870STA.dat
... SSID=ssidname NetworkType=Infra WirelessMode=5 Channel=0 BeaconPeriod=100 TxPower=100 BGProtection=0 TxPreamble=0 RTSThreshold=2347 FragThreshold=2346 TxBurst=1 PktAggregate=0 WmmCapable=1 AckPolicy=0;0;0;0 AuthMode=authmodetype EncrypType=encyptype WPAPSK= DefaultKeyID=1 Key1Type=0 Key1Str= ...- An example of the connection set up
SSID=XXX-BC ... AuthMode=OPEN EncrypType=WEP WPAPSK= DefaultKeyID=1 Key1Type=1 Key1Str=xxx.testessid Key2Type=0
The prebuilt image is built with += -DCONFIG_STA_SUPPORT. Under this configuration, debug logs are not output and critical logs are
not obtainable. The original file is put under the directory of os/linux/config.mk. This file is configured as WFLAGS += -DCONFIG_STA_SPPORT -DDBG
and produces more than adequate amounts of debug logs. Since a lot of debug logs are issued, it may be difficult to work under the original setting.$ vi os/linux/config.mk # config for STA mode ifeq ($(RT28xx_MODE),STA) WFLAGS += -DCONFIG_STA_SUPPORT -DDBGAlso, a debugged and printed version of rt3370sta.ko, rt3370sta.gz is available at the URL below. To use this file, download
the file, and replace the original, which is located at the directory of /system/lib/modules/. The name of the original file is
the same as new one.
The log shown below is a real log, which is displayed on a serial console. This log is generated as '''RT3070USB is inserted
and insmod rt3370sta.ko is executed.
- This is a log of WFLAGS += - DCONFIG_STA_SUPPOT -DDBG
# 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
- WFLAGS += -DCONFIG_STA_SUPPORT
# 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
Due to update u-boot-bc10, the initial value, which treats AMOLED as the display device, is already written under the directory of
include/configs/omap3_bc10h. Therefore boot.scr is not included the newer version of u-boot-bc10
To copy the contents of the original boot.scr to the newer boot.scr, it can is possible to boot the bc10. In this case, configuration of
u-boot.bin is written over on the configuration of boot.scr, then, bc20 is booted. The script blow is used for creating a boot.scr,
which makes AMOLED the default value for display device.$ 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 (Caution) From setenv bootargs to disp=lcd', these are supposed to be one line.
$ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n ./boot.script -d ./boot.script ./boot.scr &> /dev/null
If DVI is selected for the initial value of display device, the last line of the code shown above will be change as omapdss.def_disp=dvi
in boot.scr.
The details of omapfb.mode and mapdss are listed in the file, which is located at the directory of kernel/Documentation/arm/OMAP/DSS in the kernel source
- rowboat ConfigureAndBuild
- [Armadillo:06309] Re: Wifi LAN adapter which is compatible with Armadillo-440 (in Japanese)
2011/02/23 This article is initially uploaded.