These instructions assume you have already followed these instructions to initialize and build an Arm Platforms workspace software stack.
If you chose to use Android or one of the OpenEmbedded filesystems, the workspace initialization script will have placed the user-space filesystem image in the root of `<workspace>'. You will need to write this image to a USB stick with a minimum capacity of 4GB.
Linux users can do this like so:
$ sudo dd if=<workspace>/<filesystem>.img of=/dev/sdX bs=64M
Note: Replace `/dev/sdX' with the handle corresponding to your USB stick as identified by the `lsblk' command.
Windows users will instead need to use third party software to burn the user-space filesystem image to a USB stick, for example UNetbootin.
Next connect both a serial cable and a USB-B cable between your host PC and the Juno board (the top UART port on the back of the board), then configure a serial monitor such as `PuTTy' or `minicom' with the following settings:
Power on the board and (if prompted) press Enter to stop auto-boot. Enter the following commands on the Juno's boot monitor console:
This will delete any binaries and UEFI settings currently stored in the Juno's Flash, then mount the Juno's MMC card as an external storage device on your host PC.
From your host PC, delete all files on your Juno's mounted MMC card. How you then proceed will depend on whether you built from source or are using a prebuilt configuration.
Copy the contents of the resulting subdirectory in your workspace onto the Juno's mounted MMc card (for example `<workspace>/juno-latest-busybox-uboot/*' for a Juno `latest-armlt' + BusyBox prebuilt configuration), then skip to "Booting the board".
Copy the contents of `<workspace>/recovery/' directory onto the Juno's mounted MMC card.
Note: This is required as the `<workspace>/recovery/' directory contains closed-source binary images and FPGA bitfiles necessary for the motherboard to power up main processor SoC.
Next, navigate to the subdirectory in `<workspace>/output/' corresponding to your chosen configuration.
For example for an EDK2-based UEFI environment this will be `<workspace>/output/juno/juno-uefi/' whereas for an Android environment it will be `<workspace>/output/juno/juno-android/uboot/'.
Copy all files from that folder into the `/SOFTWARE/' folder on your Juno's mounted MMC card, overwriting any duplicate files.
Be sure to issue a `sync' command on your host PC after copying any files in the previous step, which will guarantee that the copy has completed.
If you chose to use Android or one of the OpenEmbedded filesystems, insert the USB stick created earlier into one of the Juno's rear USB ports (not needed for BusyBox or if booting into an EDK2-based UEFI environment).
Finally, power cycle the Juno. After it has finished copying the contents of the MMC card into Flash, the board will boot up and run the new software images.
If booting a Linux kernel you should eventually reach a prompt, at which point can start using the system.
If booting into an EDK2-based UEFI environment you can launch an EFI application or manually boot a kernel, see here.