PLEASE NOTE: Some steps are known to be out-of-date. We are working on updates.
This page details the steps necessary to run Android 4.2.2 on ZC702 evaluation board. All commands displayed on this page are executed on an Ubuntu 10.04 x86_64 Linux system.
This solution is not directly supported by Xilinx. For questions and help about this solution, please contact iVeia at http://git.iveia.com/support\
Overview
Android 4.2.2 (aka JellyBean) is supported on ZC702 evaluation board. The Android BSP is developed and maintained by iVeia. The Android GUI is supported through two interfaces on ZC702:
- The on-board HDMI interface connector.
- A Digilent FMC-HMI adapter board which contains an LCD. The Digilent FMC-HMI adapter board has the following interfaces:
- A touchscreen interface - NOT SUPPORTED IN THIS RELEASE
- A WVGA (800x480) resolution LCD display (resistive touchscreen NOT SUPPORTED IN THIS RELEASE).
- An audio interface - NOT SUPPORTED IN THIS RELEASE.
- A vertically mounted camera - NOT SUPPORTED IN THIS RELEASE.
Only one of the above interfaces is supported at a time, and different binary images are used in each case.
Binaries
The Android OS requires a set of binaries to be installed on an SD card. A pre-built set of binaries can be downloaded from the support site, at:
http://git.iveia.com/supportThe Linux and Android binaries can be rebuilt from source with the instructions on the lower portion of this page - Building Android BSP on Zynq ZC702. The other binaries can be rebuilt from source provided by the vendors listed below:
Filename as downloaded | Filename on SD card | Description | Vendor |
BOOT_FMC.BIN & BOOT_HDMI.BIN | BOOT.BIN | Created using the EDK bootgen tool - contains the FSBL (First Stage Boot Loader), the FPGA bit-stream, and the U-Boot bootloader | Xylon |
uImage | uImage | The Linux kernel | iVeia |
devicetree_fmc.dtb & devicetree_hdmi.dtb | devicetree.dtb | The Device Tree Blob | Xylon (with modifications by iVeia) |
uramdisk.image.gz | uramdisk.image.gz | The Linux ramdisk (u-boot wrapped), modified from the Xilinx's ZC702 release to run init.sh on boot and modify mount directories. | Xylon (with modifications by iVeia) |
init.sh | init.sh | A script run at the end of boot (used to start Android) | iVeia |
root_fs.tar.gz | N/A | The Android Root Filesystem | iVeia |
BOOT.BIN and devicetree.dtb have two versions, one for the FMC-HMI LCD (labelled FMC) adapter, and one for the on-board HDMI (labelled HDMI). The correct files must be copied except root_fs.tar.gz to the SD card and renamed as shown in the table.
Preparing the SD card
The external SD card should contain all the images required for Android boot. The SD card must have the first partition formatted with a FAT32 file system. Aa second EXT4 formatted filesystem is utilized by Android as the root filesystem. A third and final EXT4 partition is used by android as external storage; some media applications require external storage to load/save data files.
Partitions on the SD card should be structured as follows:
1. FAT32-formatted partition, large enough to contain all boot files.
2. EXT4 formatted partition, used by Android as a root filesystem.
3. EXT4 formatted partition, used by Android as external storage.
NOTE: The ZC702 bootloader will not boot from the SD card if any partitions formatted incorrectly.
The following console output details the steps necessary to partition an SD card using "`fdisk`" and format the partitions using "`mkdosfs`" (assumes the SD card is assigned device node "`/dev/sdb`"):
Command (m for help): pDisk /dev/sdb: 7948 MB, 7948206080 bytes255 heads, 63 sectors/track, 966 cylinders, total 15523840 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x87f6d5f9Device Boot Start End Blocks Id SystemCommand (m for help): nPartition type:p primary (0 primary, 0 extended, 4 free)e extendedSelect (default p):Using default response pPartition number (1-4, default 1):Using default value 1First sector (2048-15523839, default 2048):Using default value 2048Last sector, +sectors or +size{K,M,G} (2048-15523839, default 15523839): +1GCommand (m for help): tSelected partition 1Hex code (type L to list codes): cChanged system type of partition 1 to c (W95 FAT32 (LBA))Command (m for help): nPartition type:p primary (1 primary, 0 extended, 3 free)e extendedSelect (default p):Using default response pPartition number (1-4, default 2):Using default value 2First sector (2099200-15523839, default 2099200):Using default value 2099200Last sector, +sectors or +size{K,M,G} (2099200-15523839, default 15523839): +4GCommand (m for help): tPartition number (1-4): 2Hex code (type L to list codes): 83Command (m for help): nPartition type:p primary (2 primary, 0 extended, 2 free)e extendedSelect (default p):Using default response pPartition number (1-4, default 3):Using default value 3First sector (10487808-15523839, default 10487808):Using default value 10487808Last sector, +sectors or +size{K,M,G} (10487808-15523839, default 15523839):Using default value 15523839Command (m for help): tPartition number (1-4): 3Hex code (type L to list codes): 83Command (m for help): vPartition 1: previous sectors 2099199 disagrees with total 2098565Partition 2: previous sectors 10487807 disagrees with total 10476633Partitions 3: cylinder 967 greater than maximum 966Partition 3: previous sectors 15523839 disagrees with total 15521165Remaining 2047 unallocated 512-byte sectorsCommand (m for help): wThe 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 atthe next reboot or after you run partprobe(8) or kpartx(8)WARNING: If you have created or modified any DOS 6.xpartitions, please see the fdisk manual page for additionalinformation.Syncing disks.$ mkfs.vfat -F 32 -n boot /dev/sdb1$ mkfs.ext4 -L root /dev/sdb2$ mkfs.ext4 -L root /dev/sdb3After formatting the card, copy all files listed in the Binaries section above to the first partition of the SD card
except the root filesystem. It will be extracted to the second partition next. Be sure to select and rename the correct set of files for either the on-board HDMI or FMC-HMI LCD interface.
The root filesystem of Android now needs to be copied to the second partition. To do this, first extract the filesystem out of root_fs.tar.gz to a local directory (in the Example case: tmp_mnt/). The root user must then copy all of the files in the mount directory over to the second partition of the sd card (named part2 in the example).
Example:
sudo cp -r tmp_mnt/* /media/part2This completes the preparation of the sd card. You are now ready to run it.
Running
Boot
To boot the ZC702 and run Android, follow these steps:
- Format and Prepare SD card, according to the Installing section above. Be sure to select and rename the correct set of files for either the on-board HDMI or FMC-HMI LCD interface.
- Insert the SD card into the ZC702's SDIO slot.
- Ensure that the ZC702 board jumpers (shunts) are configured as follows:
- Required for boot from SD:
- J27: 1-2, J28: 1-2, J21: 2-3, J20: 2-3, J22: 1-2, J25: 1-2, J26: 2-3
- Required for FMC-HMI touchscreen:
- J37: 1-2, J38: 2-3, J70: 2-3, J65: 1-2, J8: open, J9: 1-2
- Other jumpers that may be required:
- J30: 1-2, J43: 1-2, J15: 1-2, J53: 1-2, J34: 1-2, J36: 1-2, J35: 1-2JJ7: 1-2, J33: 2-3
- All other jumpers are open.
- Connect the display:
- To use the FMC-HMI adapter:
- Connect the FMC-HMI adapter to the ZC702's FMC1 connector, J3.
- Connect a ribbon cable between the FMC-HMI adapter's J4 and the ZC702's J40.
- To use the on-board HDMI:
- Connect the HDMI output, P1, to a display, e.g., an LCD monitor.
- Both on-board HDMI and FMC-HMI adapter may be connected, but only one interface can be used at a time - this is selected by using the correct binaries (see the Binaries section above).
- Connect a USB Hub, PC Mouse, or PC keyboard to the ZC702's USB OTG port (J1). This will generally require a USB A-to-A adapter and a USB A to micro-B cable.
- To view boot/console output, connect the ZC702's USB UART port (J17) to a PC/laptop using a compatible USB cable, configured at 115200 bps.
- Connect the DC power adapter to the ZC702 power connector (J60).
- Power on the ZC702 using the power switch (SW11).
Expected Output
Example Linux and Android console output is listed here on the iVeia support site
http://git.iveia.com/supportwithin the release file : android-output.txt
Android prints most of its output to a log file. To view the logfile during boot, you can use the "`logcat`" command.
Note: Once logcat is run, you will not be able to return to the Linux command-line, and logcat will continue to dump any newly logged information. To run logcat to show only the current log and then return to the command-line, run "`logcat -d`".
Android Navigation
Navigation within Android is accomplished via the USB-connected PC keyboard and USB-connected mouse.