Running Android on pandaboard:

This assumes that you have all the proper drivers. 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. Other situations TBD.

Board setup:
Power supply
Mini-USB to the PC
USB keyboard and mouse
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: 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.

Networking is hardcoded to use 8.8.8.8 and 8.8.4.4 DNS.

The connectivity manager doesn't know that the network is available. As
a result, the browser complains that the network is down, and the download
manager refuses to download anything.

Everything camera-related crashes.

Grass live wallpaper crashes.

Language selection crashes.

No audio.

No wifi.
