Running Android on pandaboard:

This assumes that you have all the necessary proprietary binaries.

When working with AOSP, download them from:
http://code.google.com/android/nexus/drivers.html#panda
The master branch in AOSP works with the latest version of those drivers.

Unarchive each file at the root of your source tree (with tar zxvf), and
execute the included shell script, still at the root of tour source tree.
That will create a vendor tree that contains the necessary files.
They can be unarchived and extracted in any order.

For Googlers working in Google's full internal tree (i.e. with
vendor/ti/proprietary and related projects) or in equivalent
situations, this is done automatically.

Board setup:
Power supply
Mini-USB to the PC
USB keyboard and mouse
(optional) Ethernet, on a network that supports DHCP
HDMI-to-DVI-D on the P1 DVI-D connector

# Initial setup, part 1: build fastboot
source build/envsetup.sh
lunch full_panda-eng
make fastboot

# Initial setup, part 2:
# With no SD card inserted, plug USB first, then the power cord,
#   and load fastboot over USB:
device/ti/panda/usbboot device/ti/panda/bootloader.bin

# Initial setup, part 3:
# Once in fastboot, insert and initialize an SD card (4GB or greater):
fastboot oem format
fastboot flash xloader device/ti/panda/xloader.bin
fastboot flash bootloader device/ti/panda/bootloader.bin

# Build and flash, part 1: Do a build
source build/envsetup.sh
lunch full_panda-eng
make

# Build and flash, part 2: Flash
# Reboot into the SD card's fastboot (hold GPIO_121 and press PWRON_RESET)
#   and flash the system:
fastboot erase cache
fastboot flash userdata
fastboot flashall

# Post-boot setup, part 1: Set the date on the board:
adb shell date $(date +%s)

# Post-boot setup, part 2: (optional) Configure Ethernet
adb shell dhcpcd eth0

=================================

KNOWN ISSUES

fastboot -w doesn't work. Neither does fastboot erase userdata. They don't
write a valid filesystem.

adb reboot bootloader doesn't work.

Ethernet networking is initialized to use DHCP. The status bar will not
show that there is an Ethernet connection established, but apps such as
Browser will work.

Everything camera-related crashes.

Grass live wallpaper crashes.

Language selection crashes.
