Setting up Android on Juno

This blog post will try to provide step-by-step instructions on how to set-up Android on ARM Juno development platform.

If you prefer watching a video instead on this process, please click here.

Installation Procedure

The installation procedure involves 2 major steps:

  1. Creating a USB drive with the Android file system available through Linaro
  2. Configuring UEFI on Juno to boot from USB drive.

Before any installation begins, it is important that you ensure your board has the latest firmware installed. If you do not have the latest firmware, please see the Firmware Update section at the end of this blog post for the latest updates and installation instructions.

Prerequisites

  • Ubuntu 12.04 desktop PC with Internet connection
  • 4GB USB drive or larger
  • Juno ARM Development Platform connected to the PC through serial/USB port

NOTE: Only the Ethernet port on the front panel is active.

Creating the USB drive

  • Install Linaro image tools:

         $ sudo add-apt-repository ppa:linaro-maintainers/tools

        $ sudo apt-get update

        $ sudo apt-get install linaro-image-tools


  • Insert the USB drive and note the assigned '/dev/sdX'
    • $ dmesg | less
  • Create the USB drive:
    • $ linaro-android-media-create --mmc /dev/sdX --dev vexpress --boot boot.tar.bz2 --system system.tar.bz2 --userdata userdata.tar.bz2
  • Wait for all writes to the USB drive to complete. Then run the following commands to eject the device:
    • $ sync
    • $ sudo eject /dev/sdX
  • Re-insert the device into your Ubuntu machine and use the Disk Utility program to check the partitions on the USB drive. You will see something like this:
disk util.png

If you see similar partitions on your USB drive, the USB image has been created successfully.

Configuring UEFI

Connect Juno to the PC through UART0 (top UART on the back panel) and monitor the output through a serial terminal client like Putty. Although not necessary on first boot, it is always a good idea to clear flash memory of the device when replacing the kernel and file systems used by Juno. Make sure your device is connected through the serial port and powered on. Do not boot the device just yet. On the cmd> prompt, run the following commands:

Cmd> flash

Flash> areas

Base      Area Size Blocks Block Size

----      --------- ------ ----------

0x08000000    65280K    255      256K

0x0BFC0000      256K      4        64K

Flash> eraserange 0x0BFC0000

Erasing Flash

.

Flash> exit

Cmd> reboot

The system will now be rebooted, and after a short time, you be presented by a boot countdown from 10, thus:

The default boot selection will start in 10 seconds

When you see this prompt, please press the enter key to interrupt the countdown. You will then be presented with a menu, thus:

[1] Linux from NOR Flash

[2] Shell

[3] Boot Manager

Start:

Depending on the configuration of your board, the menu option called “Boot Manager” may not be option 3. In this example, we can see that the Boot Menu is indeed option “3”, so we choose it by pressing the “3” key and pressing enter. You will then be presented with a boot menu, thus:

[1] Add Boot Device Entry

[2] Update Boot Device Entry

[3] Remove Boot Device Entry

[4] Update FDT Path

[5] Return to main menu choice:

The first thing we need to do is to delete all of the existing Boot Device Entries. Deleting a Boot Device Entry is achieved by pressing the 3 key and pressing enter:

[1] Linux from NOR Flash

Delete entry:

In our example, using the default config from the first time you boot the board, there is only 1 Boot Device Entry: “Linux from NOR Flash”. You must delete this entry by pressing the 1 key and pressing enter. After this, you will be returned to the Boot Menu where you should continue by deleting all Boot Device Entries that are configured.

Once you have done this, you should continue by creating a new Boot Device Entry by selecting option 1 from from the Boot Menu. After selecting the menu option by pressing the 1 key followed by enter, you will see a list of available Boot Devices, thus:

[1] Add Boot Device Entry

[2] Update Boot Device Entry

[3] Remove Boot Device Entry

[4] Update FDT Path

[5] Return to main menu choice: 1


[1] Firmware Volume (0 MB)

[2] Firmware Volume (0 MB)

[3] NOR Flash (63 MB)

[4] VenHw(E7223039-5836-41E1-B542-D7EC736C5E59)

[5] VenHw(02118005-9DA7-443A-92D5-781F022AEDBB)

[6] PXE on MAC Address: 00:02:F7:00:57:DD

[7] TFTP on MAC Address: 00:02:F7:00:57:DD

Select the Boot Device:

As you will see in the example above, there is no partition named “boot” available to the user. At this point, the user must press the ESC key to exit the “Select the Boot Device” option and return to the Boot Menu. From the Boot Menu, please select option 1 again. The example below shows how this looked on our test system, your results may differ:

[1] Add Boot Device Entry

[2] Update Boot Device Entry

[3] Remove Boot Device Entry

[4] Update FDT Path

[5] Return to main menu choice: 1


[1] Firmware Volume (0 MB)

[2] Firmware Volume (0 MB)

[3] NOR Flash (63 MB)

[4] boot (131 MB)

[5] sdcard (13585 MB)

[6] VenHw(E7223039-5836-41E1-B542-D7EC736C5E59)

[7] VenHw(02118005-9DA7-443A-92D5-781F022AEDBB)

[8] PXE on MAC Address: 00:02:F7:00:57:DD

[9] TFTP on MAC Address: 00:02:F7:00:57:DD

Select the Boot Device:

As you will see, the menu option "boot" has now appeared, allowing us to select the partition named “boot” on the USB drive. In the example above, the partition named “boot” is option 4. Your system may show a different option for the partition named boot on your USB drive. Please examine the menu and choose the appropriate option.

Once you have chosen the Boot Device, you will be prompted for the configuration of that Boot Device.

The first question will ask for the file path of the kernel, thus:

File path of the EFI Application or the kernel:

When configuring a system to boot Android, you enter the file path of the kernel as “kernel” without the quotes and followed by the enter key, for this is the filename of the kernel in the boot partition on the USB drive.

Next you will be prompted if the kernel has Flattened Device Tree support:

Has FDT support? [y/n]

The answer is yes, so please press the “y” key followed by enter. Next you will be asked if you wish to configure an “initrd” for your system:

Add an initrd: [y/n]

The answer is yes, so please press the “y” key followed by enter. Next you will be asked for the file path of the initrd on your USB drive:

File path of the initrd:

The file is called “ramdisk.img”, so please type “ramdisk.img” without the quotes, followed by the enter key.

After this you will be asked to supply the arguments required to boot the kernel:

Arguments to pass to the binary:

Please note, copy and paste does not work well over the serial terminal. The user is advised to type the commandline arguments by hand, character at a time, followed by the enter key. The commandline used is shown below:

console=ttyAMA0,115200 earlyprintk=pl011,0x7ff80000 root=/dev/ram0 verbose debug

Finally, after entering the command line, the final question is simply asking for a title that will appear in the Boot Menu:

Description for this new Entry:

You may enter a simple string of alphanumeric characters use to represent the name of this Boot Device. On our example system, we chose to type the string “Android on USB”, without the quotes, followed by pressing the enter key.

After entering the description string, you will then be returned to the boot menu:

[1] Add Boot Device Entry

[2] Update Boot Device Entry

[3] Remove Boot Device Entry

[4] Update FDT Path

[5] Return to main menu choice:

It may take a long time, perhaps over a minute for UEFI to save the Boot Device Entry.

After you have configured the Boot Device Entry, next you must configure the Flattened Device Tree (FDT) path. You do this by selecting the option “Update FDT path” by pressing the 4 key and pressing enter. As with the Add Boot Device Entry option, next you will be presented with a list of Boot Devices that can host the FDT file. On our test system, the list looked like this:

[1] Firmware Volume (0 MB)

[2] Firmware Volume (0 MB)

[3] NOR Flash (63 MB)

[4] boot (131 MB)

[5] sdcard (13585 MB)

[6] VenHw(E7223039-5836-41E1-B542-D7EC736C5E59)

[7] VenHw(02118005-9DA7-443A-92D5-781F022AEDBB)

[8] PXE on MAC Address: 00:02:F7:00:57:DD

[9] TFTP on MAC Address: 00:02:F7:00:57:DD

Select the Boot Device:

Choose the option that corresponds to the partition named “boot” on your system. In the example above, this is option 4. Enter the option number and press the enter key. You will then be prompted for the file path for the FDT file:

File path of the FDT blob:

At this prompt, type the filename “juno.dtb” and press the enter key. The system may take some time to save the configuration. After which, you will be returned to the Boot Menu:

[1] Add Boot Device Entry

[2] Update Boot Device Entry

[3] Remove Boot Device Entry

[4] Update FDT Path

[5] Return to main menu

At this point, we have completed our configuration and we can return to the main menu by selecting option 5 “Return to main menu”. To select option 5, press the 5 key and press enter.

Once you are back at the main menu, you will see that the selection of Boot Devices has now changed. On our test system, the selection looked like this:

[1] Android on USB

[2] Shell

[3] Boot Manager

Start:

Where option 1, “Android on USB” was the Boot Device Entry that we created by following the instructions above.

You should now choose this option to boot from your USB drive. When booting, you will see output similar to this:

[1] Android on USB

[2] Shell

[3] Boot Manager

Start: 1

The Android boot process should now start. Connect Juno to an HD tv screen through an HDMI cable using the HDMI port closest to the hardware reset buttons. You will be able to the see the android boot flash screen on your tv:

androidoriginal.gif

Firmware Update

This section describes how to update the firmware on the Juno board.

The configuration of the Juno Development Platform board is determined by a set of files stored on a flash memory device on the board. The flash memory can be accessed via a USB-B socket on the rear panel of the board. When connected to a host computer, the flash memory will appear as a USB mass storage device with a FAT16 filesystem. The files in this filesystem are edited to control the configuration of the board.

The configuration of the Juno Development Platform board can be returned to factory default by extracting the Juno board recovery image onto the flash memory device, replacing any files already in the flash memory.

To install firmware images that you have built yourself, the procedure is the same except that you will overwrite the contents of the /SOFTWARE/ directory with your own images.To update the MCC firmware only, the procedure is the same except that the MCCfirmware update bundle will contain only a subset of the files contained in the full recovery image.

To carry out a system recovery, update the MCC firmware, or install your own custom firmware images, follow these steps:

1. Connect a serial terminal to the top 9-pin UART0 connector on the rear panel (115200 baud, 8, n, 1).

2. Connect a USB cable between the USB-B connector on the rear panel and a USBport of your host computer.

3. Connect the 12 volt power supply to the board.

The serial terminal will show the command prompt Cmd>

4. At the Cmd> prompt on the serial terminal, issue the command usb_on

Cmd> usb_on 

The configuration flash memory should now be visible on the host computer as a mass storage device.

5. Save to the host PC any of the existing files in the configuration flash memory that you wish to retain for future use.

6. If you wish to update one or more of the firmware components then skip to step 7. Otherwise, for a full system recovery, format the configuration flash memory (FAT16).

7. Extract the board recovery image (board_recovery_image_0.7.5.zip) to the root directory of the configuration flash memory, preserving the directory structure.

8. If you are performing a system recovery or installing an update from ARM then skip to step 9. Otherwise if you wish to install firmware images that you have built yourself then delete the bl1.bin and fip.bin from the /SOFTWARE/ directory in the configuration flash memory, and copy your own bl1.bin and fip.bin images into that directory to replace them.

9. Safely eject the mass storage device, giving it time to write the files to the internal storage.

10. Press the ON/OFF button on the rear panel of the board and wait for reprogramming to complete.

The board will load the default configuration and boot up

 
Anonymous
Parents
No Data
Comment
  • ADB over USB, can't seem to get it working. Loaded udev rules with the Genesys Logic 0x05e3 and Keil SOftware (0xc251) and did the usual stop/start of udev and then adb kill-manager./adb start-manager to no avail.  I don't see ARM show up as a USB device when I do 'lsusb'

Children
No Data