Hi, I tried to boot Android on TC2, using Linaro 12-11 release. I am getting error messages indicating SD card detection failure.
I can access SD card in monitor mode.
Bellowing are the steps I took:
1: Get Android Images: wget http://releases.linaro.org/12.11/android/vexpress/boot.tar.bz2 wget http://releases.linaro.org/12.11/android/vexpress/system.tar.bz2 wget http://releases.linaro.org/12.11/android/vexpress/userdata.tar.bz2
2: Formate SD card: linaro-android-media-create --mmc /dev/sdX --dev vexpress --boot boot.tar.bz2 --system system.tar.
3: Update firmware: dd if=boot/uImage of=/media/VEMSD/SOFTWARE/TC2/zimage.bin skip=64 bs=1 dd if=boot/uInitrd of=/media/VEMSD/SOFTWARE/TC2/initrd.bin skip=64 bs=1 cp boot/v2p-ca15-tc2.dtb /media/VEMSD/SOFTWARE/TC2/tc2_dtb.bin
4: Reset to run.
>>>>>>
ARM Versatile Express Boot Monitor Version: V5.1.7 Build Date: Sep 14 2012 Daughterboard Site 1: V2P-CA15_A7 Cortex A15 Daughterboard Site 2: Not Used Running boot script from flash - BOOTSCRIPT Loaded FDT - tc2_dtb Loaded initrd - initrd Loaded kernel - zimage Booting kernel @ 0x80008000 Command line 'console=tty0 console=ttyAMA0,38400n8 rootwait ro init=/init androidboot.console=ttyAMA0 mmci.fmax=4000000' initrd @ 0xa0100000 (206277 bytes) FDT @ 0xa0000000 (14365 bytes) [ 0.000000] Booting Linux on physical CPU 0 [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 3.7.0-rc6-00610-g110910f (jenkins-build@ip-10-38-70-160) (gcc version 4.7.3 20121106 (prerelease) (Linaro GCC 4.7-2012.11) ) #1 SMP Fri Nov 23 09:47:07 UTC 2012 [ 0.000000] CPU: ARMv7 Processor [412fc0f1] revision 1 (ARMv7), cr=50c5387d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache [ 0.000000] Machine: ARM-Versatile Express, model: V2P-CA15_CA7 [ 0.000000] Truncating memory at 0x80000000 to fit in 32-bit physical address space [ 0.000000] Memory policy: ECC disabled, Data cache writealloc [ 0.000000] Booting Linux on CPU HWID 0x0 [ 0.000000] PERCPU: Embedded 9 pages/cpu @c1b98000 s14144 r8192 d14528 u36864 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 520191 [ 0.000000] Kernel command line: console=tty0 console=ttyAMA0,38400n8 rootwait ro init=/init androidboot.console=ttyAMA0 mmci.fmax=4000000 [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Memory: 2032MB = 2032MB total [ 0.000000] Memory: 2051320k/2051320k available, 45828k reserved, 1302528K highmem [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) [ 0.000000] vmalloc : 0xf0000000 - 0xff000000 ( 240 MB) [ 0.000000] lowmem : 0xc0000000 - 0xef800000 ( 760 MB) [ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) [ 0.000000] modules : 0xbf800000 - 0xbfe00000 ( 6 MB) [ 0.000000] .text : 0xc0008000 - 0xc05945b8 (5682 kB) [ 0.000000] .init : 0xc0595000 - 0xc05ce740 ( 230 kB) [ 0.000000] .data : 0xc05d0000 - 0xc061a158 ( 297 kB) [ 0.000000] .bss : 0xc061a17c - 0xc0b718a0 (5470 kB) [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=5. [ 0.000000] NR_IRQS:16 nr_irqs:16 16 [ 0.000000] Booting Linux on GIC CPU IF 0x0 [ 0.000000] Using SP804 '/smb/motherboard/iofpga@3,00000000/timer@110000' as a clock & events source [ 0.000000] Architected local timer running at 24.00MHz (virt). [ 0.000000] Switching to timer-based delay loop [ 0.000000] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms [ 0.000000] Console: colour dummy device 80x30 [ 0.000000] console [tty0] enabled [ 0.000000] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar [ 0.000000] ... MAX_LOCKDEP_SUBCLASSES: 8 [ 0.000000] ... MAX_LOCK_DEPTH: 48 [ 0.000000] ... MAX_LOCKDEP_KEYS: 8191 [ 0.000000] ... CLASSHASH_SIZE: 4096 [ 0.000000] ... MAX_LOCKDEP_ENTRIES: 16384 [ 0.000000] ... MAX_LOCKDEP_CHAINS: 32768 [ 0.000000] ... CHAINHASH_SIZE: 16384 [ 0.000000] memory used by lock dependency info: 3695 kB [ 0.000000] per task-struct memory footprint: 1152 bytes [ 0.002845] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000) [ 0.002897] pid_max: default: 32768 minimum: 301 [ 0.003399] Mount-cache hash table entries: 512 [ 0.006527] CPU: Testing write buffer coherency: ok [ 0.006624] ftrace: allocating 19280 entries in 38 pages [ 0.030093] CPU0: update cpu_power 1441 [ 0.030116] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 [ 0.030170] Setting up static identity map for 0x803c6730 - 0x803c677c [ 0.033086] CPU1: Booted secondary processor [ 0.033106] CPU1: update cpu_power 1441 [ 0.033111] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001 [ 0.034616] CPU2: Booted secondary processor [ 0.034646] CPU2: update cpu_power 606 [ 0.034654] CPU2: thread -1, cpu 0, socket 1, mpidr 80000100 [ 0.036527] CPU3: Booted secondary processor [ 0.036549] CPU3: update cpu_power 606 [ 0.036556] CPU3: thread -1, cpu 1, socket 1, mpidr 80000101 [ 0.038141] CPU4: Booted secondary processor [ 0.038163] CPU4: update cpu_power 606 [ 0.038169] CPU4: thread -1, cpu 2, socket 1, mpidr 80000102 [ 0.038274] Brought up 5 CPUs [ 0.038522] SMP: Total of 5 processors activated (240.00 BogoMIPS). [ 0.038963] CPU0 packing on CPU2 [ 0.038997] CPU1 packing on CPU0 [ 0.039028] CPU2 packing on CPU2 [ 0.039058] CPU3 packing on CPU2 [ 0.039089] CPU4 packing on CPU2 [ 0.060586] regulator-dummy: no parameters [ 0.062405] NET: Registered protocol family 16 [ 0.063128] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.096535] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers. [ 0.096583] hw-breakpoint: maximum watchpoint size is 8 bytes. [ 0.096620] Serial: AMBA PL011 UART driver [ 0.097320] 1c090000.uart: ttyAMA0 at MMIO 0x1c090000 (irq = 37) is a PL011 rev2 [ 1.448963] console [ttyAMA0] enabled [ 1.461214] 1c0a0000.uart: ttyAMA1 at MMIO 0x1c0a0000 (irq = 38) is a PL011 rev2 [ 1.484711] 1c0b0000.uart: ttyAMA2 at MMIO 0x1c0b0000 (irq = 39) is a PL011 rev2 [ 1.507543] 1c0c0000.uart: ttyAMA3 at MMIO 0x1c0c0000 (irq = 40) is a PL011 rev2 [ 1.530685] vexpress_spc loaded at f0052000 [ 1.543806] hw perfevents: enabled with CCI PMU driver, 5 counters available [ 1.565194] CCI loaded at f0060000 [ 1.618698] bio: create slab <bio-0> at 0 [ 1.632618] 3V3: 3300 mV [ 1.642817] SCSI subsystem initialized [ 1.656623] usbcore: registered new interface driver usbfs [ 1.673431] usbcore: registered new interface driver hub [ 1.689829] usbcore: registered new device driver usb [ 1.707489] Advanced Linux Sound Architecture Driver Initialized. [ 1.729409] Switching to clocksource arch_sys_counter [ 1.842238] NET: Registered protocol family 2 [ 1.857014] TCP established hash table entries: 131072 (order: 8, 1048576 bytes) [ 1.882593] TCP bind hash table entries: 65536 (order: 9, 2359296 bytes) [ 1.927353] TCP: Hash tables configured (established 131072 bind 65536) [ 1.947494] TCP: reno registered [ 1.957209] UDP hash table entries: 512 (order: 3, 40960 bytes) [ 1.975379] UDP-Lite hash table entries: 512 (order: 3, 40960 bytes) [ 1.995539] NET: Registered protocol family 1 [ 2.009645] RPC: Registered named UNIX socket transport module. [ 2.027445] RPC: Registered udp transport module. [ 2.041559] RPC: Registered tcp transport module. [ 2.055673] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 2.075697] Trying to unpack rootfs image as initramfs... [ 2.111725] Freeing initrd memory: 200K [ 2.123717] hw perfevents: enabled with ARMv7_Cortex_A15 PMU driver, 7 counters available [ 2.148385] hw perfevents: enabled with ARMv7_Cortex_A7 PMU driver, 5 counters available [ 2.180387] bounce pool size: 64 pages [ 2.192373] VFS: Disk quotas dquot_6.5.2 [ 2.204369] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 2.228639] NFS: Registering the id_resolver key type [ 2.244229] Key type id_resolver registered [ 2.256795] Key type id_legacy registered [ 2.268928] jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc. [ 2.291857] Btrfs loaded [ 2.299494] msgmni has been set to 1462 [ 2.313639] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 2.335916] io scheduler noop registered [ 2.347692] io scheduler deadline registered [ 2.360618] io scheduler cfq registered (default) [ 2.381898] hdlcd 2b000000.hdlcd: HDLCD: found ARM HDLCD version r0p0 [ 2.401254] hdlcd 2b000000.hdlcd: using 1024x768-16@60 mode [ 2.443681] Console: switching to colour frame buffer device 128x48 [ 2.544932] A15 Vcore: 800 <--> 1050 mV at 897 mV [ 2.574927] A7 Vcore: 800 <--> 1050 mV at 905 mV [ 2.604929] VIO: at 1788 mV [ 2.812812] brd: module loaded [ 2.833840] loop: module loaded [ 2.850753] mtdoops: mtd device (mtddev=name/number) must be supplied [ 2.871727] smsc911x: Driver version 2008-10-21 [ 2.890632] libphy: smsc911x-mdio: probed [ 2.903019] smsc911x 1a000000.ethernet eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=1a000000.etherne:01, irq=-1) [ 2.937419] smsc911x 1a000000.ethernet eth0: MAC Address: 00:02:f7:00:48:bd [ 2.959829] nxp-isp1760 1b000000.usb: NXP ISP1760 USB Host Controller [ 2.979584] nxp-isp1760 1b000000.usb: new USB bus registered, assigned bus number 1 [ 3.202761] nxp-isp1760 1b000000.usb: bus width: 32, oc: digital [ 3.244283] nxp-isp1760 1b000000.usb: irq 48, io mem 0x1b000000 [ 3.265630] nxp-isp1760 1b000000.usb: USB ISP 1761 HW rev. 1 started [ 3.291130] hub 1-0:1.0: USB hub found [ 3.305982] hub 1-0:1.0: 1 port detected [ 3.322470] Initializing USB Mass Storage driver... [ 3.340899] usbcore: registered new interface driver usb-storage [ 3.362348] USB Mass Storage support registered. [ 3.381863] mousedev: PS/2 mouse device common for all mice [ 3.404674] rtc-pl031 1c170000.rtc: rtc core: registered pl031 as rtc0 [ 3.433721] device-mapper: ioctl: 4.23.0-ioctl (2012-07-25) initialised: dm-devel@redhat.com [ 3.463284] CPUFreq for CPU 0 initialized [ 3.479450] CPUFreq for CPU 2 initialized [ 3.495225] cpuidle: using governor ladder [ 3.510145] cpuidle: using governor menu [ 3.525660] usbcore: registered new interface driver usbhid [ 3.544995] usbhid: USB HID core driver [ 3.560069] ashmem: initialized [ 3.572446] logger: created 256K log 'log_main' [ 3.588724] nxp-isp1760 1b000000.usb: port 1 high speed [ 3.589065] logger: created 256K log 'log_events' [ 3.589477] logger: created 256K log 'log_radio' [ 3.589903] logger: created 256K log 'log_system' [ 3.606578] aaci-pl041 1c040000.aaci: ARM AC'97 Interface PL041 rev0 at 0x1c040000, irq 43 [ 3.606584] aaci-pl041 1c040000.aaci: FIFO 512 entries [ 3.608798] oprofile: using timer interrupt. [ 3.717261] TCP: cubic registered [ 3.729710] Initializing XFRM netlink socket [ 3.745363] NET: Registered protocol family 10 [ 3.763065] NET: Registered protocol family 17 [ 3.778890] NET: Registered protocol family 15 [ 3.784986] usb 1-1: new high-speed USB device number 2 using nxp-isp1760 [ 3.817590] Key type dns_resolver registered [ 3.832937] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 1 [ 3.858533] Registering SWP/SWPB emulation handler [ 3.864936] nxp-isp1760 1b000000.usb: port 1 high speed [ 3.893663] CPUidle for CPU0 registered [ 3.907880] CPUidle for CPU1 registered [ 3.921988] CPUidle for CPU2 registered [ 3.936021] CPUidle for CPU3 registered [ 3.949922] CPUidle for CPU4 registered [ 3.957421] hub 1-1:1.0: USB hub found [ 3.957596] hub 1-1:1.0: 3 ports detected [ 4.004803] rtc-pl031 1c170000.rtc: setting system clock to 2004-05-27 04:10:24 UTC (1085631024) [ 4.032176] ALSA device list: [ 4.041847] #0: ARM AC'97 Interface PL041 rev0 at 0x1c040000, irq 43 [ 4.063089] Freeing init memory: 228K [ 4.083639] init (1): /proc/1/oom_adj is deprecated, please use /proc/1/oom_score_adj instead. [ 4.394981] atkbd serio0: keyboard reset failed on 1c060000.kmi [ 4.996634] input: AT Raw Set 2 keyboard as /devices/smb.23/motherboard.24/iofpga.25/1c070000.kmi/serio1/input/input0 [ 20.020655] lowmem_shrink: convert oom_adj to oom_score_adj: [ 20.037657] oom_adj 0 => oom_score_adj 0 [ 20.049432] oom_adj 1 => oom_score_adj 58 [ 20.061446] oom_adj 2 => oom_score_adj 117 [ 20.073725] oom_adj 4 => oom_score_adj 235 [ 20.086003] oom_adj 7 => oom_score_adj 411 [ 20.098270] oom_adj 15 => oom_score_adj 1000 [ 20.122236] init: cannot find '/system/bin/sh', disabling 'console' [ 20.141216] init: cannot find '/system/bin/servicemanager', disabling 'servicemanager' [ 20.164989] init: cannot find '/system/bin/vold', disabling 'vold' [ 20.183564] init: cannot find '/system/bin/netd', disabling 'netd' [ 20.202140] init: cannot find '/system/bin/debuggerd', disabling 'debuggerd' [ 20.223303] init: cannot find '/system/bin/rild', disabling 'ril-daemon' [ 20.243456] init: cannot find '/system/bin/surfaceflinger', disabling 'surfaceflinger' [ 20.267236] init: cannot find '/system/bin/app_process', disabling 'zygote' [ 20.288212] init: cannot find '/system/bin/drmserver', disabling 'drm' [ 20.307808] init: cannot find '/system/bin/mediaserver', disabling 'media' [ 20.328450] init: cannot find '/system/bin/dbus-daemon', disabling 'dbus' [ 20.348832] init: cannot find '/system/bin/installd', disabling 'installd' [ 20.369487] init: cannot find '/system/etc/install-recovery.sh', disabling 'flash_recovery' [ 20.394557] init: cannot find '/system/bin/keystore', disabling 'keystore' [ 20.415213] init: cannot find '/system/bin/gatord', disabling 'gatord' [ 20.434818] init: cannot find '/system/bin/faketsd', disabling 'faketsd' [ 20.454938] init: cannot find '/system/bin/netcfg', disabling 'netcfghack' [ 20.627216] init: cannot find '/system/bin/sh', disabling 'console'
On Tue, 2013-02-12 at 16:51 -0800, Eric Huang wrote:
Hi, I tried to boot Android on TC2, using Linaro 12-11 release. I am getting error messages indicating SD card detection failure.
There is no mention of 'mmc' anywhere in the boot log and there normally is several lines associated with the device driver getting started, so yes, it looks like the MMC device isn't getting detected at all.
What version of the firmware are you using? My first guess as to the cause of the problem would be that you are using firmware from the latest Version 5 of the Versatile Express CD. This includes an IOFGA update which adds a new variant of the PL180 MMC device, and the 12.11 release doesn't include support for that. What does your MBIOFPGA line in MB/HBI0190D/board.txt look like? If it has "io_b108.bit" you have the newer version.
If that is the problem then you have three choices.
1. Use the latest 13.01 Android release. You will also need some extra firmware updates from ARM for this. The steps are shown in the 'Firmware Update' tab of http://releases.linaro.org/13.01/android/vexpress
2. Stick with the 12.11 Android release and revert to the firmware from the Version 4 Versatile Express CD. Again, the firmware will need to be patched and the steps are in the 'Firmware Update' section of the release notes for the 12.11 release: http://releases.linaro.org/12.11/android/vexpress
3. This is an option I haven't tested and may not work... Recompile the kernel in the 12.11 release after applying this MMC patch: http://git.linaro.org/gitweb?p=kernel/linux-linaro-tracking.git%3Ba=commit%3...
If I've guess wrong and this isn't the cause of the problem, then it would be good to check exactly what firmware you have installed, so could you send these files from your Versatile Express:
MB/HBI0190D/board.txt SITE1/HBI0249A/board.txt SITE1/HBI0249A/images.txt
Jon, Thanks for the help. Yes, I am using the latest TC2 release, V5.0. I got the Versatile Express just last week. I am trying 12.11 and earlier version.
MB/HBI0190D/board.txt
[FPGAS] MBIOFPGA: io_b108.bit ;REQUIRED TO ALLOW UPDATE FROM VECD v1.x MBIOFPGA1: io_b108.bit ;MB LEGACY IOFPGA IMAGE FOR SITE 1 BOOT MASTER MBIOFPGA2: io_b208.bit ;MB LEGACY IOFPGA IMAGE FOR SITE 2 BOOT MASTER MBIOFPGA3: io_b116.bit ;MB A SERIES IOFPGA IMAGE FOR SITE 1 BOOT MASTER MBIOFPGA4: io_b216.bit ;MB A SERIES IOFPGA IMAGE FOR SITE 2 BOOT MASTER MBMUXFPGA: mux_b1c.bit ;MB MUXFPGA IMAGE releases.
>>>>>
Another two questions 1) Regarding the SD card: ARM support is telling me SDHC card is not supported, is that the case? If so, how can a 4G card be used?
2) Regarding UEFI: Is UEFI required to boot Android image ?
-----Original Message----- From: Jon Medhurst (Tixy) [mailto:tixy@linaro.org] Sent: Wednesday, February 13, 2013 3:19 AM To: Eric Huang Cc: linaro-android@lists.linaro.org Subject: Re: Android boot failure on TC2
On Tue, 2013-02-12 at 16:51 -0800, Eric Huang wrote:
Hi, I tried to boot Android on TC2, using Linaro 12-11 release. I am getting error messages indicating SD card detection failure.
There is no mention of 'mmc' anywhere in the boot log and there normally is several lines associated with the device driver getting started, so yes, it looks like the MMC device isn't getting detected at all.
What version of the firmware are you using? My first guess as to the cause of the problem would be that you are using firmware from the latest Version 5 of the Versatile Express CD. This includes an IOFGA update which adds a new variant of the PL180 MMC device, and the 12.11 release doesn't include support for that. What does your MBIOFPGA line in MB/HBI0190D/board.txt look like? If it has "io_b108.bit" you have the newer version.
If that is the problem then you have three choices.
1. Use the latest 13.01 Android release. You will also need some extra firmware updates from ARM for this. The steps are shown in the 'Firmware Update' tab of http://releases.linaro.org/13.01/android/vexpress
2. Stick with the 12.11 Android release and revert to the firmware from the Version 4 Versatile Express CD. Again, the firmware will need to be patched and the steps are in the 'Firmware Update' section of the release notes for the 12.11 release: http://releases.linaro.org/12.11/android/vexpress
3. This is an option I haven't tested and may not work... Recompile the kernel in the 12.11 release after applying this MMC patch: http://git.linaro.org/gitweb?p=kernel/linux-linaro-tracking.git%3Ba=commit%3...
If I've guess wrong and this isn't the cause of the problem, then it would be good to check exactly what firmware you have installed, so could you send these files from your Versatile Express:
MB/HBI0190D/board.txt SITE1/HBI0249A/board.txt SITE1/HBI0249A/images.txt
On Wed, 2013-02-13 at 08:07 -0800, Eric Huang wrote:
Another two questions
- Regarding the SD card: ARM support is telling me SDHC card is not supported, is that the case? If so, how can a 4G card be used?
I believe ARM's bootloader doesn't support SDHC, or it didn't use to. This isn't a hardware issue though because UEFI and Linux do support SDHC.
- Regarding UEFI: Is UEFI required to boot Android image ?
It's the officially documented and promoted method.
As an alternative, some people put the kernel, dtb, and initrd into NOR flash, then use ARM's bootloader to load and run these. (There are some old instructions lurking around for this from before we got UEFI working, see the "Boot Monitor (TC2 only)" section of http://www.linaro.org/members/arm/ve_12.09#tab2
Another alternative some people use it to the A5 CoreTile version of U-Boot, see [1]. This also works on TC2 though it only gives you 1GB of RAM by default - apparently adding "mem=2048m@0x80000000" to the kernel commandline fixes this. The prebuilt A5 U-Boot in boot partition of the Android image (uefi_v2p-ca5s.bin) probably will work, I've never tried this method.
[1] http://lists.linaro.org/pipermail/linaro-dev/2012-October/014136.html
Jon, Thanks for the answers, they are very helpful. I was trying the ARM bootloader approach and keep having problems. I will start using the UEFI approach.
Eric
-----Original Message----- From: Jon Medhurst (Tixy) [mailto:tixy@linaro.org] Sent: Wednesday, February 13, 2013 9:47 AM To: Eric Huang Cc: linaro-android@lists.linaro.org Subject: Re: Android boot failure on TC2
On Wed, 2013-02-13 at 08:07 -0800, Eric Huang wrote:
Another two questions
- Regarding the SD card: ARM support is telling me SDHC card is not supported, is that the case? If so, how can a 4G card be used?
I believe ARM's bootloader doesn't support SDHC, or it didn't use to. This isn't a hardware issue though because UEFI and Linux do support SDHC.
- Regarding UEFI: Is UEFI required to boot Android image ?
It's the officially documented and promoted method.
As an alternative, some people put the kernel, dtb, and initrd into NOR flash, then use ARM's bootloader to load and run these. (There are some old instructions lurking around for this from before we got UEFI working, see the "Boot Monitor (TC2 only)" section of http://www.linaro.org/members/arm/ve_12.09#tab2
Another alternative some people use it to the A5 CoreTile version of U-Boot, see [1]. This also works on TC2 though it only gives you 1GB of RAM by default - apparently adding "mem=2048m@0x80000000" to the kernel commandline fixes this. The prebuilt A5 U-Boot in boot partition of the Android image (uefi_v2p-ca5s.bin) probably will work, I've never tried this method.
[1] http://lists.linaro.org/pipermail/linaro-dev/2012-October/014136.html
linaro-android@lists.linaro.org