[[bc10]]
- Contents
#CONTENTS

* Summary [#y8fb13d6]
>
COLOR(red){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
 
>
COLOR(red){The devices may be added on the list in the future. The list may change without advance notice.}


** About TI-Android-FroYo-DevKit -V2 [#a4de86f1]
*** Overview of TI-Android-FroYo-DevKit -V2 [#v24c5978]
>
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 [#c5da5b72]
* Development environment [#r12506c6]

>
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 [#se4d5ec3]
>
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 [#x3cd8b72]
>
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 [#wb21db47]
** repo Configuration [#fbb57431]

>
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 [#z526e53d]
>
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 [#e03099b3]
>
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 [#z01cea7b]
>
Reading the configuration file for bc10, build it.
 $ cd ~/TI-Android-FroYo-DevKit-V2
 $ source build/envsetup.sh
 $ lunch bc10-eng
 $ make

** Creating image [#gfd5ee9f]
>
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 [#d29f0215]
>
'''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 [#ye6f737a]
>
 $ 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 [#y4ce112f]
>
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.~
[[2011_0107_RT3070_RT3370_Linux_SAT_v2.5.0.1_DPO.tar.bz2]]~
[[RT3370USB.diff]]~
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 [#nf1e9043]
>
- 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 [#n462e52b]
>
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 [#uf3abaa1]
>
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 [#pe6b8c50]
>
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 [#jbdb1ad8]
>
'''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 of'''signGP''' 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 [#jd33af1f]
>
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 [#hbea96d6]
* prebuilt-image [#d90f73eb]
>
The prebuilt image, which has been created so far, can be also downloaded from sourceforge.jp.
Please download the image, bc10-boot-sd-image&#8213;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 [#b7c654d7]
>
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.
+ The initialization and configuration of partitions
+ Formatting file system
+ Placing files

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

**Unmounting SD card [#d821a58d]
>
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 [#u7eb25b9]
>
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 [#l2c77a39]
>
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 [#c78c542e]
** Putting files in FAT32 partition [#o0896598]
>
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 [#bab4fd2a]
>
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 [#xdfc2907]
>
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 [#ke290925]
** Limitations and known issues [#i984ecb9]
*** Recognizing USB device [#e1894c54]
>
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 [#f89c5529]
>
- 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 [#b170aeae]
>
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 [#b589e296]
>
(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 [#t2ca4313]
>
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 [#v0949822]
>
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 [#xbce96d5]
- rowboat community
-- http://code.google.com/p/rowboat/
- rowboat ConfigureAndBuild
--http://code.google.com/p/rowboat/wiki/ConfigureAndBuild#Install_the_drivers_in_Target_filesystem
- 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
- [Armadillo:06309] Re: About  Wireless LAN card for Armadillo-440 (Japnese)
-- http://lists.atmark-techno.com/pipermail/armadillo/2010-December/006309.html
* Revision History [#e9175287]
>
2011/04/01 This article is initially published.


Front page   New List of pages Search Recent changes   RSS of recent changes