bc10

Summary

bc10/prebuilt-20110127 is based upon rowboat community's TI-Android-FroYo-Devkit-V2.

This article explains the details of prebuilt image prebuilt-20110127. This shows how to replicate this prebuilt image and install it to bc10. Since prebuilt-20110127 is based upon TI-Android-FroYo-Devkit-V2, prebuilt-20110127 can be seen as an extension of TI-Android-FroYo-Devkit-V2. You may learn or at least grasp the basics of how to port Android one hardware to the other.

  • The instructions of creating the prebuilt image
    • This section mainly explains how to create prebuilt-20110127. This include how to create the development environment and the instruction of build process.
  • The instruction of how to place the prebuilt-image on SD card.
    • This section shows how to download the prebuilt-image and how to place the image on an SD card.

The major difference between prebuilt-20110127 and prebuilt-20110107 is their origins. prebuilt-20110127 is based upon upon TI-Android-Froyo-Devkit-V2, which is created from a a master branch and considered as stable. On the other hand, prebuilt-20110107 is driven from AOSP Android 2.2_r1.1. Therefore, these Android OSes are slightly different one from the other.

Since prebuilt-20110127 is based upon TI-Android-FroYo-Devkit-V2, bc10/prebuilt-20110127 contains extra information comparing bc10/TI-Android-ForoYo-Devkit-V2. There are few changes in bc10/20110127 from bc10/TI-Android-FroYo-Devkit-V2.

  • USB camera driver
    Hardware overlay is employed as displaying a preview
    ・Specifications, Limitations and known issues:
         - Targeted Hardware and Specifications
           V4L2 camera 
           640x480 fixed resolutions
         - Expansion & Reduction
           The size of display area can be flexibly changed. The change is done by hardware. 
           As creating an application, the size of SurfaceView, which is registered into Camera is the same size as Preview's one.
         - Confirmed Applications
           Camera application, which is built with Android, can only take pictures. The hardware and software cannot meet 
           the requirements for options of camera mode and Video mode.
         - Confirmed device
           In this article, Logicool Orbit AF is used for the technical testing. In general, if USB cameras, which is compatible with
           Linux UVC, they can work on bc10.
         - Unsolved known issues
           As connecting a USB camera, USB device is suddenly disconnected and it does not work.
  • USB WiFi (RT3070USB) driver
    Confirmation of operation status
         - The conformation of WiFi status is checked by the serial connection as the device is booted.
             When the device is booted, type "insmod" and "netcfg" command from its serial.
             (Causation) Android GUI does not have a feature to control the power switch.
    Confirmed devices
         - The USB WiFi (RT3070USB) driver
         Producer      Serial #        Compatible Device ID
          Buffalo       WLI-UC-GN          0411:015d
    

    The devices may be added on the list in the future. The list may change without advance notice.

About TI-Android-FroYo-DevKit -V2

Overview of TI-Android-FroYo-DevKit -V2

Before start discussing the details of prebuilt-20110127, this part provides the overview of TI-Android-FroYo-Devkit-V2. As having explained in the previous section, TI-Android-FroYo-Devkit-V2 is is released from Texas Instruments, Inc. on October 27, 2010. This is a stable version of froyo for the TI produced devices.

As executing lunch command, the output is displayed.

BUILD_ID=MASTER

This is an evidence that TI-Android-FroYo-Devkit-V2 is considered as master brunch. This is regarded as stable version.

TI-Android-FroYo-Devkit-V2 is developed as SDK package for OMAP35x EVM, AM35x EVM, AM37x EVM, BeagleBodard Rev Cx, and BeagleBoard XM. TI-Android-Froyo-Devkit-V2.xml contains the information of revisions of each product for identifying a version of each product.

The next section starts explaining how to create prebuilt image, prebuilt-20110127. It begins with creating the development environment for TI-Android-FroYo-Devkit-V2, and it shows the process of modifying the image of TI-Android-FroYo-Devkit-V2 for bc10. Then, explains how to create the prebuilt image, prebuilt-20110127.

(Caution):
The developing machine, which hosts the development environment, requires at least 1GB of memory. If the developing machine does not have, errors will occur at fetch parts of prebuilt and ask as executing repo sync. The following process is tested with an development machine, which is equipped with more than 1GB of memory.
TI-Android-FroYo-DevKit-V2_ReleaseNotes
TI-Android-FroYo-DevKit-V2_UserGuide

Instructions of prebuilt image

Development environment

For creating the development environment, the requirements are

  • OS: Ubuntu 10.04 (32bit version)
  • JAVA: java 1.5x
  • Android Version: TI-Android-FroYo-Devkit-V2 froyo

Installing Package

Obtaining required packages from the repository of Ubuntu, install them.

$ 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

To build TI-Android-FroYo-Devkit-V2, sun-java5-jdk is required. Since Ubuntu 9.10, this version of Java has been removed from the repository. The old repository is temporarily added to the source list file, which is located at /etc/apt/sources.list.

$ sudo vi /etc/apt/sources.list

After adding the old repository, obtain the information of this repository by apt-get update command. Then, install sun-java5-jdk.

$ sudo apt-get update
$ sudo apt-get install sun-java5-jdk

After having installed Java, remove the added directory for avoid 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 multiverse

After removing the old repository, execute apt-get update for restoring the original condition.

$ sudo apt-get update

Obtaining Android source files

repo Configuration

To obtain the source code of android, configure repo. To obtain Repo, create bin directory at the home directory
(Caution):hereafter the home directory refers to the directory of home/beat/.

$ cd ~
$mkdir bin
$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo

On Ubuntu, as users once log out and long in, PATH automatically goes though ~/bin. If you wish to stay log in status, add ~/bin to PATH of the environment variable.

$ export PATH=~/bin:$PATH

Obtaining files

To obtain the source files of Android, TI-Android-FroYo-DevKit-V2 can be used. From TI_Android _DevKit 02_00_00 Product Download Page, TI-Android-FroYo-DevKit-V2.xml is downloaded. It takes quite long time to complete downloading whole files. This process is required at least 1GB memory. If your memory size is smaller than 1GB, errors will occur at fetch of prebuilt and sdk as executing repo sync.

$ 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

DevKit V2 patch for bc10

Apply the patch file. devkitv2-patches-for-bc10.tar.gz is a patch file on DevKit V2 for bc10. Download, extract the file and apply it to DevKit V2.

$ cd ~
$ tar xvfz devkitv2-patches-for bc10.tar.gz
$ cd devkitv2-patches-for-bc10

Configure ANDROID_DIR, SETUP, and PATCH_DIR, which are written in bc10-devkitV2-patch.sh, are configured as shown below. The environment variables, which are listed on bc10-devkitV2-patch.sh, have to be consistent with the PATH of the targeted files.

### 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
###

After appling patch, devic/ti directory is created.

$ 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

Building Android

Reading the configuration file for bc10, build it.

$ cd ~/TI-Android-FroYo-DevKit-V2
$ source build/envsetup.sh
$ lunch bc10-eng
$ make

Creating image

After the build process is completed, the binary of the userland, which has been just built, is relocated to the bootable position. To relocate and organize the userland, mkbc10-image.sh is applied. ANDROID_DIR, which is listed in mkbc10-image.sh is set up as shown below. Please rewrite ANDROID_DIR of mkbc10-image.sh for being consistent with PATH of the file.

### Settings
#ANDROID_DIR=${HOME}/bc10
ANDROID_DIR=${HOME}/prebuilt-20110122-DevkitV2/TI-Android-FrroYo-DevKit-V2
###
$ cd ~/devkit2-patches-for-bc10
$ ./mkbc10-image.sh

After this process is completed, bc10-image directory is created at TI-Android-DevKitV2/out/target/product/bc10. Under this directory, android userland is placed.

Configuring environment variables

x-loader, u-boot, and kernel are built with toolchain, which is distributed with the source code of Android. The environment variables are configured as x-loader, u-boot, and kernel are cross compiled by the toolchain in the building process.

The directories of PATH are also adjusted with the configuration shown above.

$ export PATH=/home/beat/TI-Android-FroYo-DevKit-V2/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:$PAT
$ export ARCH=arm
$ export CROSS_COMPILE=arm-eabi-

Building kernel

$ 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 chackout-t -b bc10-2.6.32 origin/bc10-2.6.32
$ make omap3_bc10_defconfig
$ make uImage
$ make modules

As the build process is completed, uImage is created at the directory shown belown.

$ ls arch/arm/boot/
Image Makefile bootp compressed install.sh uImage zImage

Building USB WiFi (RT3070USB) driver

This section explains an USB WiFi (RT3070USB) driver. The hardware used here for the explanation is Baffualo WLI-UG-G301N. The driver can be downloaded from RALINK web. The Linux driver, 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO.tar.bxz2 and a firm ware RT28XX/RT30XX USB series (RT2870/RT2770/RT3572/RT3070) are used.

To obtain the driver and firm ware, name and e-mail address are required. As RALINK updates the driver and firm ware, it lists only the newest ones. The previous versions of drivers and firm wares are removed from the web site. For the precautionary measurements, the driver and firm ware are posted below. toolchain is located at the directory, prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin of the Android source file. In the previous section, this source file was configured when kernel was built.

To cross-compile, one of two changes is required. One is to modify 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1DPO. The details of this modification is shown below. The other is to apply the patch on. Using RT3370USB.diff, execute patch command. To use the patch, make cross compile work for bc10.

The major changes of 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO are:

  • Add the entries for the compile configuration for bc10 (platform, PATH of toolchain, configuration of compile flags)
  • Change the regional setting to Japan, and select the entries of configuration for easier familiar setting.
  • Add vender ID and product ID for USB WiFi

LINUX_SR and CROSS_COMPILE sections in Makefile are originally configured as shown below. Please change PATH in Mkefile. Each PATH has to be consistent with the location of its respective file.

+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 xcfz 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/

As the changes are completed, execute make command. As the make process is completed, rt3070sta.ko is generated at the directory of os/linux.

$ make
$ ls -l os/linux/rt3070sta.ko
-rw-r--r--1 beat beat 10871281 2011-01-20 14:50 os/linux/rt3070sta.ko
{Code-long}

Placing USB WiFi (RT3070USB) driver

  • rt3070sta.ko
    This is the file, which has been created at the end of previous section. Create modules directory under the director bc10/out/target/product/bc10/bc10-image/system/lib/ in android userland. rt3070sta.ko is placed under module directory'''.
  • RT2870STA.dat
    This is WiFi configuration file. RT2870STA records SSID and other authentication types. RT2870STA.dat is placed at the directory of Wireless/RT2870STA. This directory is created under the directory of bc10/out/target/product/bc10/bc10-image/system/etc/ in android userland.

The example of configurations: SSID: XXX-BC, Authentication type: AuthMode OPEN, Encryption type: EncryptType WEP, Encryption key type :Key1Type 1(acsii), Encryption key: Key1Str xxx.testessid.
An example of connection is shown below.

SSID=XXX-BC
…
AuthMode=OPEN
EncryptType=EWP
WPAPSK=
DefaultKeyID=1
Key1Type=1 
Key1Str=xxx.testessid
Key2Type=0

For the details of connection configuration, please look at '''2011_0107_RT3070_RT3370_Linux_STA_v2.5.DPO/README_STA_usb.

  • rt2870.bin It contains the firmware file and license text. rt2870.bin and LICENSE.ralink-firmware.txt are placed at the directory of bc10/out/target/product/bc10/bc10-image/sytem/etc/firmware. This directory is needed to be created at android userland.

Owner and authorization of this file are root and 777, respectively. The owner and authorization are consistent with mkbc10-image.sh.

$ 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

Building SGX SDK

Applying the same method as bc10/froyo, obtain TI Android SGX SDX (Caution): The obtaining process really takes time. If you have already downloaded and installed OMAP35x_Android_Graphics_SDK_3_01_00_03 for bc10/froyo, this file is identical to the file you need to download here. There are no issues that you may substitute with this file rather than downloading a whole new file. Please be careful with changing the location of Rules.make directory. If you download a whole new file, please remove or save the old file.

$ 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

As its install directory is asked, this time, the default directory, ${HOME}/OMAP35x_Android_Graphics_SDK_3_01_00_03 is selected.

To download TI's Android SGX SDK

Modifying Rules.make

HOME, GRAPHICS_INSTALL_DIR, ANDROID_ROOT, CSTOOL_DIR, and KERNEL_INSTALL_DIR in Rules.make''' are needed to be modified as each PATH has to be consistent with the location of respective file.

$ 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)/ 

After the modification of RULE.make is finished, execute make and make install.

$ make
$ make OMAP=3.x install

u-boot

The list below shows the boot process of bc10 (omap3530). After power supply is turned on, bc10 is boot into Linux by the order shown below.

1. BootROM code
2. X-Loader
3. U-Boot
4. Linux kernel(uImage).

u-boot is the second boot loader. This is executed in the second place as bc10 is turned on. The information of boot process is listed on bc10/booting. Please refer to the page for the details.

$ 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

The build process is completed, u-boot.bin is produced. This file is going to be copied in the FAT partition of a SD card right after MLO file is copied. The process of how to create a SD card image is explained in the section, “Creating SD card image.”

x-loader

x-loader is the first boot loader as bc10 is booted.

$ 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

The specifications and format of x-load.bin are not compatible with OMAP BootROM, originally. x-load.bin does not work as x-loader when it is written into NAND Flash or SD card. To solve this issue, x-load.bin is needed to be modified with signGP.

The executable file ofsignGP can be downloaded form URL shown below. http://beagleboard.googlecode.com/files/signGP signGP'downloaded here is used as it is shown below.

$ signGO x-load.bin

x-load.bin.ift is produced after the build process is competed. The name of x-load.bin.ift is changed to MLO and this is written in the top of FAT partition.

The process of how to create a SD card image is explained at the section of Creating SD card image.

boot.scr

This file has the same functionality as applying u-boot command prompt from serial console for the boot setting.

This file provides the result as setenv command from u-boot command prompt configures the boot setting in serial console. To use this file, user does not need to input the commands as each time bc10 is booted. The configuration that this file sets for prevents memory mapping to change. As using boot.scr, the boot configuration, which is contained in u-boot.bin, can be used as the configuration of

To create boot.scr, create boot.script first. Then write down the contents shown below. (From sentenv to cli6010.enable=0, please write down as one line of code.) To apply mkimage, boot.script turns to be boot.scr. This is the end of this process.

$ vi bnoot.script
if fatload mac 0 84000000 uImage
then
 echo ***** Kernel: /dev/mmcblk0p1/uImage.bin *****
fi
echo ***** RootFS: /dev/mmcblk02p *****
setenv bootargs 'mem=256M androidboot.console=ttyS2 Console=tty0 console=ttyS2, 115200n8
root=/dev/mmcblk0p2 init=init root wait omapfb.mode=dvi:1024x768MR-24@60  omapdss.def_disp=lcd cli6010.enable=0'
bootm 8400000
(Caution) From setetv to cli6010.enable=0', it is supposed to be one line of script

$ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n ./boot/script -d ./boot.scr &> /dev/null

This is the end of creating the files for prebuilt image. To compress all files, these files become the prebuilt image.

Instructions of how to place prebuilt image

prebuilt-image

The prebuilt image, which has been created so far, can be also downloaded from sourceforge.jp. Please download the image, bc10-boot-sd-image―release20110127.tar.gz, from URL shown below. Assuming that the downloaded image is placed at the home directory of /home/beat/. http://sourceforge.jp/project/bc10-dev/release50734 To extract the downloaded image file, it contains two archives.

FAT.tar.gz
EXT3.tar.gz

FAT and EXT3 files are placed with FAR32 and EXT3 partitions, respectively. The next section shows the instructions of how to place these files in their respective partitions.

Creating Bootable SD card

The contents of this section is based upon the information published at “Create Bootable SD card” of bc10/booting . This process is strictly targeted for SD card. By design, bc10 is not capable of booting from microSD card. The contents of each partition are listed below.

  • FAT 32 partition
    • X-Loader
    • U-Boot
    • Linux kernel
    • boot.scr
  • Linux partition
    • Linux root file system (TI-Android-FroYo-DevKit-V2 userland)

Linux is used for its development environment.

The outline of how to create a bootable SD card.

  1. The initialization and configuration of partitions
  2. Formatting file system
  3. Placing files

The following explanation is mostly based upon the information listed at LinuxBootDiskFormat (code.google.com).

Unmounting SD card

To crate and format petitions, the SD card is unmounted. In this example, the SD card is mounted at the location shown below.

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
...
/dev/sdc1             400M   94M  307M  24% /media/disk
...

Unmounting the SD card

$ unmount  /media/disk 

Initializing and configuring patrtions

To apply fdisk command, the parameter is the device file of SD card. The command shown below will change depending on your working environment, and this is an example. The inside [ ] indicates the answer for each question. Some answers are only for this example. Please do not apply these answers before checking your SD card and development environment.

$ 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)

The outputs of fdisk show that the numbers of heads, tracks, and cylinders. These numbers are used for the following questions. Erase all partitions.

Command (m for help): [d]
selected partition 1

Turn to the expert mode.

Command (m for help): [x]

Input the number of head. According to the result of fdisk, the number of heads is 255.

Expert Command (m for help): [h]
Number of heads (1-256, default xxx): [255]

Configure the number of sectors. The result of fdisk indicates that the number is 63.

Expert Command (m for help): [s]
Number of sectors (1-63, default xxx): [63]

Calculate the number of cylinders. The number is depending on the SD card.
Apply the formula shown below, and truncate below the decimal point.

#cylinders = FLOOR(#Bytes on the SD/ #heads/#sectors/512) (All information is available at the results of '''fdisk'''.)

For the SD card used in this example, the number of cylinders is:

2021654528/255/63/512 = 245.79. Then, truncate, do not round the result. 
&#8594; 245

For this example, the number of cylinders is 245

Expert Command (m for help): [c]
Number of cylinders (1-256, default xxx): [the result obtained from the formula: 245]

Turn back to the normal mode

Expert Command (m for help): [r]

Create a FAT32 partition. The commands, which are used for creating the partition, are shown below.

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

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 245 

Examine the configuration of 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  Linux

Alter the partition table, and save the changes.

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.

Formatting the file systems

FAT32 and Linux partitions are formatted to FAR32 and EXT4, respectively. At the example below, FAT32 and EXT3 indicate the labels of the partitions. You may name them arbitrary.

$ [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: 

Placing the prebuilt-image files

Putting files in FAT32 partition

There are strict rules on how to place the files in FAT32 partition. The archive is extracted in your working environment.

$ mkdir ~/FAT
$ [tar xvfz FAT.tar.gz -C FAT/]

Extracting the archive, these files are contained in the folder.

$ ls FAT
MLO boot.scr u-boot.bin uImage

MLO (X-Loader) is the first bootloader, so there are few requirements for placing it on the SD card. Please pay attention to these points.

  • MLO is placed right after the format of FAT32 partition is completed.
  • MLO is put on the top directory of the partition.
$ [cp MLO /media/FAT32/]

No restrictions are applied for installing other files. Simply copy the files on the SD card.

$ [cp u-boot.bin boot.scr uImage /media/FAT32/]

If you have made any mistakes on the order of placing files or failed to placing file, please redo from formatting FAT32 partition. It brings a better result.

Placing files in ext3 partition

There are no specific rules for putting files in ext3 partition. Placing the archive directly on the SD card, extract it.

$ [sudo tar xcfz ex3.tar.gz -C/media/EXT3]

This is the end of placing the prebuilt image in the SD card. Before unmounting the SD card, please execute sync for updating the information of the SD card.

$ [sudo sync]
$ [unmount /media/EXT3]
$ [unmount /media/FAT32]

Booting from the SD card

To insert the SD card to bc10's SD card slot, turn on the power supply. For the first time booting, Android creates a configuration DB for SQLite3 and Dalvik Executable (.dex) and write these files into the booting disk. Therefore, the booting takes longer at the first time.

Supplements

Limitations and known issues

Recognizing USB device

As trying to connect USB camera, USB device is disconnected and the device does not work as it is expected. If this happens, turn off the power once and turn it on again. This incident happens as using AC powered USB hub. The cause and details of this incident is currently investigated.

About CameraPreview Overlay

  • To preview image of the camera, the overlay is modified to employ hardware overlay.
  • Specifications and limitations are shown below.
    • This works with V4L2 camera.
    • The resolution of camera is 640x480 fixed.
    • Depending on view area, it can make the screen larger or smaller. Hardware handles to change the size of screen.
    • To use in an application, the size of SurfaceView, which is registered in camera must be equal to the size of Preview.
  • The camera application, which is preinstalled in Android, only take pictures on camera mode. Hardware and software are not compatible with the options in camera mode and video mode.
  • This modified overlay is tested with “Logicool Orbit AF”, but theoretically it works with any USB camera, which is compatible with Linux UVC.

Adjusting build.prop

As the default display device, ro.sf.lcd_density is set on 120. To use the DVI video output, the icons are smaller relative to the size of display. Please change the setting of ro.sf.lcd_density to 160, then, reboot bc10.

$ cd ~/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android/out/target/product/bc10/bc10-image/system
$ vi build.prop
....
ro.sf.lcd_demsity=160

Introducing Performance_Apps

(Caution) Performance_Apps is a selective, not a requirement. Performance_App is a set of bench mark testes for 2D, 3D drawings and CPU. As installing the bench mark tests on the default setting, Luncher will be replaced with Luncher2, and Contacts, Mms, and SpeechRecorder are removed.

TI_Android_DevKit 02_00_00 Product Download Page Performance_App.tar.gz are available at ''Component Download Section of the web page above. Having applied Performance_App.tar.gz, butoons on HOME screen will changes since Luncher2 and Contacts are copied and removed, respectively. (The icon of Performance_Apps is displayed at the icon of telephone.)

$ wget http://software-dl.ti.com.
$ tar xvfz Performance_Apps.tar.gz
$ cd Performance_Apps

To execute install_rowboperf.sh, an errors occur immediately. install_rowbopref.sh is needed to be modified.

$ vi install_rowbperf.sh
*** 13,18 ****
--- 13,19 ----
echo "Error: Rootfs location `basename $1` does not exist"
exit $E_BADARGS
fi
+ cd -

echo "Rootfs location is $1"

As the script is fixed, specify the location of installation as Android userkand, and execute the script.

$ ./install_rowboperf.sh ~/TI_Android_FroYo_DevKit-V2/Android_Source_Manifest/rowboat-android/out/target/product/bc10/bc10-image

As executing install_rowboperf.sh, many of apk are added as well aw removed. The complete list of added and removed programs is shown below.

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 

About Android SGX

As explaining at the section of init.rc, SGX is effective. To use comment out, make SGX ineffective. (Caution) As having turned off SGX, GUI is redrawing, and it causes flickering on the screen. Also, as kernel and userland are rewritten, not only renewed kernel and userland, but also SGX are needed to be rebuilt.

$ vi /media/LABEL2/init.rc
#Start PowerVR SGX DDK
service pvr /system/bin/sgx/rx.pvr start

How to configure bc10 Wifi

bc10 cannot turn on/off Wifi function from GUI of Android. To examine the working condition of wifi devices, use insmod and netcfg commands from serial console. In this section, WLI-UC-GN is used as an example.

Maker      Serial Number     Device ID
Buffalo    WLI-UC-GN         0411:015d

As booting with the USB wifi device, the serial console recognizes the connection of the USB Wifi device.

...
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
...

execute insmod on rt3070sta.ko file, and apply up dhcp, one of netcfg command devices. RT2870STA.dat is used for the connection to the specific SSID. The SSID is written in the file. The instructions of how to connect netcfg dhcp are shown below. (logs are skipped, only commands.)

# 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
#
  • About RT2870STA.dat RT2870STA.dat is the configuration file for SSID, authentication method, and encryption method. There is an example of configuration of XXX-BC, a type of SSID (authentication method: AuthMode OPEN, encryption method: EncrypType WEP, and font type of encryption key: Key1Type 1(acsii)).

    For the details of set up for the connection, please look at 2011_0107_RT3070_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

Reference

Revision History

2011/04/01 This article is initially published.


Attach file: file2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO.tar.bz2 1006 download [Information] filedevkitv2-patches-for-bc10.tar.gz 995 download [Information] fileRT3370USB.diff 1150 download [Information]

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New List of pages Search Recent changes   RSS of recent changes
Last-modified: 2011-04-04 (Mon) 13:34:22 (2631d)