6AJ.1.0 Release Notes

= Introduction =

These Release Notes provide instructions for: and
 * Testing the release using a pre-built binary image which can be loaded onto SD card on EVM board
 * Rebuilding the Android binary image from the Android sources

Both sets of instructions make use of binary components to enable hardware acceleration for Graphics.

This software release has been developed and verified in the following software and hardware environment.

OS Kernel: Linux® 3.8 Android:  Android JellyBean 4.2.2 Toolchain: Andriod linux-x86 toolchain arm-eabi-4.6 Reference hardware platforms: TI DRA7xxx EVM (J6 EVM) - REV C boards and later Build Host OS: Ubuntu Daily Build J6 EVM Version: JACINTO6_JB_MR1_DB build 13

Release Features
This is an engineering release supporting following features and were sanity tested:


 * Kernel: USB device enumeration
 * Audio: By default, audio is routed via HDMI. To use McASP for audio, refer "Appendix A:" section
 * Display: HDMI display is the default display and HDMI cable is expected to be attached during bootup.

Release Limitations
In this release: 
 * Boot: Only SD card boot is supported
 * USB: The USB3.0 port is hardcoded for ADB and USB2.0 port is for USB host (mouse, etc...)
 * HDMI: We don't read EDID dynamically from the HDMI monitor and this may cause some HDMI displays to not work properly(audio or video)

=Using the Prebuilt Release Image= The prebuilt release image can be obtained from here. After you download the binaries, follow the flashing instruction from "Formatting and installing SD card image" section.

=Rebuilding Android from Sources=

Build PC setup
You would need a 64bit machine for building Android file system. You must have sudo permissions on the PC for installing packages


 * Install Pre-requisite packages for building the Android File System

The following commands will install the correct packages to your PC:

Ubuntu 10.04 sudo apt-get install git-core flex bison gperf libesd0-dev zip libwxgtk2.6-dev zlib1g-dev build-essential tofrodos x-dev sudo apt-get install lib32readline5-dev libstdc++6 lib32z1 lib32z1-dev ia32-libs g++-multilib libx11-dev libncurses5-dev sudo apt-get install uboot-mkimage libxml2-utils

Ubuntu 12.04 sudo apt-get install git-core flex bison gperf libesd0-dev zip libwxgtk2.8-dev zlib1g-dev build-essential tofrodos sudo apt-get install lib32readline6-dev libstdc++6 lib32z1 lib32z1-dev ia32-libs g++-multilib libx11-dev libncurses5-dev sudo apt-get install uboot-mkimage libxml2-utils

For more up to date information on initializing build environment for Android, refer to official Android page here


 * Install Java SE 6 JDK from Oracle

http://www.oracle.com/technetwork/java/javase/downloads/index.html


 * Proxy/Firewall

If you are behind proxy/firewall, workaround it using the instructions in

For installing repo make sure you also export https_proxy environment variable. export https_proxy= eg: http://local.proxyserver.com:80


 * Install latest repo tool

mkdir ~/bin -p sudo apt-get install curl curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo export PATH=~/bin:$PATH

If you do not have sudo rights to your machine, contact your System Administrator for assistance.


 * Tool Chain for building Kernel and Drivers

The Kernel and Driver sources are built using the Android linux-x86 toolchain for ARM GNU/Linux version. This tool chain can be obtained when you pull the Android code based on the released manifest that will be given.

Android Filesystem Sources
You can get the Android source for this release by doing: cd mkdir -p 6AJ.1.0 cd 6AJ.1.0 export YOUR_PATH=$PWD mkdir -p mydroid; cd mydroid export MYDROID=$PWD repo init -u git://git.omapzoom.org/platform/omapmanifest.git -b 6AJ.x -m RLS_6AJ.1.0.xml repo sync

TI Hardware Accelerated Graphics and Multimedia Binaries
Accelerated graphics binaries are part of Android file system build now

U-Boot Sources
cd ${YOUR_PATH} git clone git://git.omapzoom.org/repo/u-boot.git cd u-boot git checkout 6cabe702cbc1bd8fb0c886b75b96c81d3e2321dd

Kernel & Driver Sources
To clone kernel source from scratch do: cd ${YOUR_PATH} mkdir kernel git clone git://git.omapzoom.org/kernel/omap.git kernel/android-3.8 cd kernel/android-3.8 git checkout 18692f6aca12e4bca72f092f5da6130cfd44d3da

Setting up build environment
From your work directory (6AJ.1.0 folder): export YOUR_PATH=$PWD export MYDROID=${YOUR_PATH}/mydroid export PATH=$PATH:${MYDROID}/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/ export CROSS_COMPILE=${MYDROID}/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-

Building U-boot sources
Instructions for building x-loader and bootloader

cd ${YOUR_PATH}/u-boot export CROSS_COMPILE=${MYDROID}/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi- export ARCH=arm make distclean make dra7xx_evm

Instructions for generating boot.scr (boot script)

echo "fatload mmc 0:1 0x80300000 uImage" >> boot.cmd echo "fatload mmc 0:1 0x80f80000 dra7-evm.dtb" >> boot.cmd echo "bootm 0x80300000 - 0x80f80000" >> boot.cmd mkimage -A arm -O linux -T script -C none -e 0 -n "boot-script" -d boot.cmd boot.scr

Building Kernel
Follow the steps below to build kernel image.

cd ${YOUR_PATH}/kernel/android-3.8 export CROSS_COMPILE=${MYDROID}/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi- make ARCH=arm mrproper make ARCH=arm android_omap_defconfig make ARCH=arm uImage dtbs

Building Android Filesystem (AFS)
cd $MYDROID . build/envsetup.sh lunch 21 #(specific lunch target: full_jacinto6evm-userdebug) make -j2 clean make -j2

=Preparing Android SD Card Image=

Instructions for preparing SD card images

Prepare boot partition files
cd $MYDROID/out/target/product/jacinto6evm mkdir boot cp ${YOUR_PATH}/kernel/android-3.8/arch/arm/boot/uImage boot/ cp ${YOUR_PATH}/kernel/android-3.8/arch/arm/boot/dts/dra7-evm.dtb boot/ cp ${YOUR_PATH}/u-boot/u-boot.img boot/ cp ${YOUR_PATH}/u-boot/MLO boot/ cp ${YOUR_PATH}/u-boot/boot.scr boot/

Prepare file system
cd $MYDROID/out/target/product/jacinto6evm mkdir fs cp -Rfp root/* fs/ cp -Rfp system fs/ cp -Rfp data fs/

=Formatting and installing SD card image=

Formatting SD card
You will need to format your SD for the Linux file system. Connect your micro SD memory card reader with memory card inserted to a USB port on your Linux Ubuntu PC.

There is a shell script that performs all of the formatting required. Download it with:

$ wget http://cgit.openembedded.org/cgit.cgi/openembedded/plain/contrib/angstrom/omap3-mkcard.sh

Add execution permission:

$ chmod +x omap3-mkcard.sh

And you are ready to use it by just typing:

$sudo ./omap3-mkcard.sh 

Once it has finished, remove and reinsert the micro SD card. If you are logged in graphically, "/media/boot" and "/media/Angstrom" will be automatically mounted. Otherwise you will need to mount them manually.

Installing the required files to micro SD
Assuming your micro SD card is mounted on "/media/boot" and "/media/Angstrom", use the following commands to populate the card:

cd $MYDROID/out/target/product/jacinto6evm sudo cp -rf boot/* /media/boot/ sudo cp -rf fs/* /media/Angstrom/ sync

After copying the files to micro SD card, unmount the partitions and your SD card is ready for use.

Note: Make sure you have following DIP switch setting on the EVM (SW5 USERCONFIG) board for SD card boot 1  2   3  4   5  6   7   8   9   10 OFF OFF ON OFF ON OFF OFF OFF OFF OFF

=Appendix A: Audio: Routing through McASP=

HDMI hotplug detection is not yet enabled, so it's the default audio device. HDMI audio can be enabled/disabled via sysfs entry:

echo 0 > /sys/devices/sound_hdmi.8/enable  #Audio will be routed to primary device (McASP) echo 1 > /sys/devices/sound_hdmi.8/enable  #Audio will be routed to HDMI device

=Appendix B: Post Release Fixes=

Apply the following kernel patches to fix Audio quality issues with HDMI cd ${YOUR_PATH}/kernel/android-3.8 git fetch http://review.omapzoom.org/kernel/omap refs/changes/07/33007/1 && git cherry-pick FETCH_HEAD git fetch http://review.omapzoom.org/kernel/omap refs/changes/08/33008/1 && git cherry-pick FETCH_HEAD
 * AUDIO