summaryrefslogtreecommitdiff
path: root/openembedded/juno-lsk
diff options
context:
space:
mode:
authorRyan Harkin <ryan.harkin@linaro.org>2014-06-23 14:04:28 +0100
committerRyan Harkin <ryan.harkin@linaro.org>2014-06-23 15:32:18 +0100
commitb876ebb5424c05bf2d81bda962d5fdc443d2298b (patch)
treec1d42eda03d6a8e51e888516295424bc43d5a0a4 /openembedded/juno-lsk
parent9f564aa6ab1ab65b32844b9e05849d42699ce737 (diff)
14.06: general tidyup
Fix various style and syntax errors, improve table layouts, etc... Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
Diffstat (limited to 'openembedded/juno-lsk')
-rw-r--r--openembedded/juno-lsk/FIRMWARE.textile151
-rw-r--r--openembedded/juno-lsk/GETTINGSTARTED.textile194
-rw-r--r--openembedded/juno-lsk/HACKING.textile240
-rw-r--r--openembedded/juno-lsk/INSTALL.textile64
-rw-r--r--openembedded/juno-lsk/README.textile49
5 files changed, 513 insertions, 185 deletions
diff --git a/openembedded/juno-lsk/FIRMWARE.textile b/openembedded/juno-lsk/FIRMWARE.textile
deleted file mode 100644
index bb54dd9..0000000
--- a/openembedded/juno-lsk/FIRMWARE.textile
+++ /dev/null
@@ -1,151 +0,0 @@
-h2. Disclaimer
-
-The use of Juno software is subject to the terms of the Juno "End User License Agreement":https://releases.linaro.org/14.06/openembedded/juno-lsk/#tabs-5.
-
-*Getting Started Tab*
-
-
-*Juno ports*
-
-
-*Back panel*
-
-!Linaro_Release_Notes_v1_files/image001.png!
-
-*Front panel*
-
-!Linaro_Release_Notes_v1_files/image002.png!
-
-There are 4 UARTs on the Juno board:
-
-<table>
-<col width="20%" />
-<col width="20%" />
-<col width="20%" />
-<col width="20%" />
-<col width="20%" />
-<tbody>
-<tr class="odd">
-<td align="left"> 
-
-SoC UART0
-
-SoC UART1
-
-FPGA UART0
-
-FPGA UART1
-</td>
-<td align="left">Location
-
-"back panel":http://community.arm.com/docs/DOC-8393#jive_content_id_Back_panel, top slot.
-
-"back panel":http://community.arm.com/docs/DOC-8393#jive_content_id_Back_panel, bottom slot.
-
-Corresponds to the J55 header on the board. Please contact ARM for more information about this type of header.
-
-Corresponds to J56 header on the board. Please contact ARM for more information about this type of header
-</td>
-<td align="left">Used by
-
-The motherboard, UEFI and the Linux kernel.
-
-SCP firmware
-
-AP Trusted Firmware
-
-Unused at the moment
-</td>
-<td align="left">Baud
-
-115200
-
-115200
-
-115200
-
--
-</td>
-<td align="left">Data bits
-
-8
-
-8
-
-8
-
--
-</td>
-</tr>
-</tbody>
-</table>
-
-
-*Quick Start*
-
-If you have just unpacked a new Juno board and would like to get it booting straight away, you may wish to skip ahead to the “Set up and boot the Juno board” section.  &lt;make this a link&gt;
-
-
-*Juno software stack overview*
-
-There are several pieces of software that make up the complete Juno software stack, and a description of each one follows below.
-
-*Juno MCC Microcontroller Firmware*
-
-The MCC is a microcontroller on the motherboard that takes care of early setup before the SCP or applications processors are powered on. The MCC is also responsible for managing firmware upgrades.
-
-*System Control Processor (SCP) Firmware*
-
-The Juno System Control Processor (SCP) is an on-chip Cortex-M3 that provides low level power management and system control for the Juno platform.
-
-*Application Processor (AP) Trusted Firmware*
-
-The Juno AP Trusted Firmware provides low-level Trusted World support for the Juno platform.
-
-*Unified Extensible Firmware Interface (UEFI)*
-
-The Juno UEFI implementation provides Linux loader support for the Juno platform. It is based on the open source EFI Development Kit 2 (EDK2) implementation from the Tianocore sourceforge project.
-
-*Linux Kernel*
-
-The Linaro Stable Kernel (LSK) for Juno.
-
-*Linux filesystem*
-
-An Openembedded filesystem from Linaro can be mounted via USB (recommended) or NFS over Ethernet.
-
-*Android kernel and AOSP*
-
-The LSK image contains Android patches and has a unified defconfig, so the same kernel binary will work with a Linux filesystem or an AOSP filesystem (available from Linaro).
-
-
-*Software preloaded on new Juno boards*
-
-New Juno boards arrive preloaded with MCC firmware, SCP firmware, AP trusted firmware, UEFI, and a Linux kernel. The Juno board does not contain a Linux filesystem anywhere in onboard storage.
-
-*Please note* that early batches of Juno boards contained an SCP firmware image that limits the CPU clock to 50 MHz. ARM strongly recommends that you immediately upgrade to the latest "firmware image":http://community.arm.com/docs/DOC-8396#jive_content_id_Juno_Board_Recovery_Image hosted on this website.  &lt;link should point to firmware tab&gt;
-
-When the power is first turned on, it should boot straight through to Linux. UEFI offers a 10 second window during which you can interrupt the boot sequence by pressing a key on the serial terminal, otherwise the Linux kernel will be launched. In order to reach the Linux shell you must attach a Linux "filesystem":http://community.arm.com/docs/DOC-8396#jive_content_id_Deploying_a_root_filesystem via USB. If no filesystem is attached then Linux will boot as far as it can and then announce that it is waiting for a filesystem to be attached.
-
-New Juno boards do not contain any Android software pre-installed.
-
-
-*Set up and boot the Juno board*
-
-You are strongly recommended to update to the latest firmware before doing anything productive with your Juno board.
-
-The steps to set up and boot the board are:
-
-# Connect a serial terminal to the "UART0":http://community.arm.com/docs/DOC-8396#jive_content_id_Setting_up_the_board connector ("settings":http://community.arm.com/docs/DOC-8396#jive_content_id_Setting_up_the_board). &lt;UART0 link should point to the back panel picture, settings link should point to the UART table below it&gt;
-# Connect the 12 volt power, then press the red "ON/OFF button":http://community.arm.com/docs/DOC-8393#jive_content_id_Back_panel on the back panel. &lt;link should point to the back panel picture&gt;
-
-*Getting Juno to boot to the Linux shell*
-
-If you have just received a new board and powered it on for the first time, you will not reach the Linux shell. Juno will boot Linux to the point where it looks for a filesystem, and when it can't find one it will sit and wait for one to be attached. To boot all the way to the Linux shell you will need to "attach a root filesystem":http://community.arm.com/docs/DOC-8396#jive_content_id_Deploying_a_root_filesystem.  &lt;the link should point to the relevant section in the “Binary Image Installation” tab&gt;
-
diff --git a/openembedded/juno-lsk/GETTINGSTARTED.textile b/openembedded/juno-lsk/GETTINGSTARTED.textile
new file mode 100644
index 0000000..bac8343
--- /dev/null
+++ b/openembedded/juno-lsk/GETTINGSTARTED.textile
@@ -0,0 +1,194 @@
+h2. License
+
+The use of Juno software is subject to the terms of the Juno "End User License Agreement":https://releases.linaro.org/14.06/android/juno-lsk/#tabs-5.
+
+h2. Juno ports
+
+
+h3. Back panel
+
+!Linaro_Release_Notes_v2_files/image001.png!
+
+h3. Front panel
+
+!Linaro_Release_Notes_v2_files/image002.png!
+
+h3. UARTs
+
+There are 4 UARTs on the Juno board:
+
+|<b>UART</b>
+|<b>Location</b>
+|<b>Used by</b>
+|<b>Baud</b>
+|<b>Data bits</b>|
+|SoC UART0
+|"back panel":http://community.arm.com/docs/DOC-8393#jive_content_id_Back_panel, top slot.
+|The motherboard, UEFI and the Linux kernel.
+|115200
+|8
+|
+|SoC UART1
+|"back panel":http://community.arm.com/docs/DOC-8393#jive_content_id_Back_panel, bottom slot.
+|SCP firmware
+|115200
+|8
+|
+|FPGA UART0
+|Corresponds to the J55 header on the board. Please contact ARM for more information about this type of header.
+|AP Trusted Firmware
+|115200
+|8
+|
+|FPGA UART1
+|Corresponds to the J56 header on the board. Please contact ARM for more information about this type of header
+|Unused at the moment
+|-
+|-
+|
+
+h2. Quick Start
+
+If you have just unpacked a new Juno board and would like to get it booting straight away, you may wish to skip ahead to the “Set up and boot the Juno board” section.  &lt;make this a link&gt;
+
+
+h4. Juno software stack overview
+
+There are several pieces of software that make up the complete Juno software stack, and a description of each one follows below.
+
+h4. Juno MCC Microcontroller Firmware
+
+The MCC is a microcontroller on the motherboard that takes care of early setup before the SCP or applications processors are powered on. The MCC is also responsible for managing firmware upgrades.
+
+h4. System Control Processor (SCP) Firmware
+
+The Juno System Control Processor (SCP) is an on-chip Cortex-M3 that provides low level power management and system control for the Juno platform.
+
+h4. Application Processor (AP) Trusted Firmware
+
+The Juno AP Trusted Firmware provides low-level Trusted World support for the Juno platform.
+
+h4. Unified Extensible Firmware Interface (UEFI)
+
+The Juno UEFI implementation provides Linux loader support for the Juno platform. It is based on the open source EFI Development Kit 2 (EDK2) implementation from the Tianocore sourceforge project.
+
+h4. Linux Kernel
+
+The Linaro Stable Kernel (LSK) for Juno.
+
+h4. Linux filesystem
+
+An Openembedded filesystem from Linaro can be mounted via USB (recommended) or NFS over Ethernet.
+
+h4. Android kernel and AOSP
+
+The LSK image contains Android patches and has a unified defconfig, so the same kernel binary will work with a Linux filesystem or an AOSP filesystem (available from Linaro).
+
+
+h3. Software preloaded on new Juno boards
+
+New Juno boards arrive preloaded with MCC firmware, SCP firmware, AP trusted firmware, UEFI, and a Linux kernel. The Juno board does not contain a Linux filesystem or Android AOSP filesystem anywhere in onboard storage.
+
+*Please note* that early batches of Juno boards contained an SCP firmware image that limits the CPU clock to 50 MHz. ARM strongly recommends that you immediately upgrade to the latest "firmware image":http://community.arm.com/docs/DOC-8396#jive_content_id_Juno_Board_Recovery_Image hosted on this website.  &lt;link should point to firmware tab&gt;
+
+When the power is first turned on, it should boot straight through to Linux. UEFI offers a 10 second window during which you can interrupt the boot sequence by pressing a key on the serial terminal, otherwise the Linux kernel will be launched. In order to reach the Linux shell you must attach a Linux "filesystem":http://community.arm.com/docs/DOC-8396#jive_content_id_Deploying_a_root_filesystem via USB. If no filesystem is attached then Linux will boot as far as it can and then announce that it is waiting for a filesystem to be attached.
+
+New Juno boards do not contain any Android software pre-installed.
+
+
+h3. Set up and boot the Juno board
+
+You are strongly recommended to update to the latest firmware before doing anything productive with your Juno board.
+
+The steps to set up and boot the board are:
+
+# Connect a serial terminal to the "UART0":http://community.arm.com/docs/DOC-8396#jive_content_id_Setting_up_the_board connector ("settings":http://community.arm.com/docs/DOC-8396#jive_content_id_Setting_up_the_board). &lt;UART0 link should point to the back panel picture, settings link should point to the UART table below it&gt;
+# Connect the 12 volt power, then press the red "ON/OFF button":http://community.arm.com/docs/DOC-8393#jive_content_id_Back_panel on the back panel. &lt;link should point to the back panel picture&gt;
+
+h3. Getting Juno to boot to the Linux shell
+
+If you have just received a new board and powered it on for the first time, you will not reach the Linux shell. Juno will boot Linux to the point where it looks for a filesystem, and when it can't find one it will sit and wait for one to be attached. To boot all the way to the Linux shell you will need to "attach a root filesystem":http://community.arm.com/docs/DOC-8396#jive_content_id_Deploying_a_root_filesystem.  &lt;the link should point to the relevant section in the “Binary Image Installation” tab&gt;
+
+h3. Setting the Real Time Clock (required for Android)
+
+The example below demonstrates how to set the clock on the board:
+
+bc. ARM V2M-Juno Boot loader v1.0.0
+HBI0262 build 596
+
+bc. ARM V2M_Juno Firmware v1.1.7
+Build Date: May 27 2014
+
+bc. Time : 11:52:35
+Date : 09:07:2060
+
+bc. Cmd> debug
+
+bc. Debug> date
+09/07/2060
+
+bc. Change Date? Y\N >y
+D:>23
+M:>6
+Y:>2014
+
+bc. Debug> time
+15 : 51 : 58
+
+bc. Change Time? Y\N >y
+s:>0
+m:>08
+h:>14
+
+bc. Debug>
+
+h3. Enabling Texture Compression Formats
+
+The Mali GPU in Juno is able to use a variety of texture compression formats, many of which are subject to license from third parties. It is the responsibility of the end user to obtain a license for each texture that will be used on Juno. Once such licenses are obtained, the textures can be enabled by the following procedure:
+
+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 USB port of your host computer.
+
+3.      Connect the 12 volt power supply to the board.
+
+The serial terminal will show the command prompt Cmd&gt;
+
+4.      At the Cmd&gt; prompt on the serial terminal, issue the command usb&#95;on
+
+bc. Cmd&gt; usb&#95;on
+
+The configuration flash memory should now be visible on the host computer as a mass storage device.
+
+5.      Open the file SITE1/HBI0262B/board.txt for editing.
+
+6.      Consult the “Mali-T600 Series GPU Configuration and Sign-off Guide” to determine the correct value that should be programmed into the GPU texture format register to enable only the registers that you have licensed for use with Juno. For example, to enable all texture compression formats, the value should be 0xFFFFFFFF.
+
+7.      In the [SCC REGISTERS] section, below the “TOTALSCCS” line, insert the following line:
+
+SCC: 0x05C &lt;value from step 6 above&gt;           ;Optional comment to explain which texture you have enabled
+
+8.      Update the TOTALSCCS count (increment it by one) so that it now reflects the total number of SCC registers that are programmed.
+
+9.      Press the red 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.
+
+h3. Additional documentation
+
+For further details, please see the following documents.
+
+·        Juno SoC Reference Manual
+
+·        V2M Juno Reference Manual
+
+·        SCPI protocol description
+
+
+
+
diff --git a/openembedded/juno-lsk/HACKING.textile b/openembedded/juno-lsk/HACKING.textile
index 2968e94..1d19b5b 100644
--- a/openembedded/juno-lsk/HACKING.textile
+++ b/openembedded/juno-lsk/HACKING.textile
@@ -1,4 +1,4 @@
-h2. Disclaimer
+h2. License
The use of Juno software is subject to the terms of the Juno "End User License Agreement":https://releases.linaro.org/14.06/openembedded/juno-lsk/#tabs-5.
@@ -49,7 +49,241 @@ Copy the kernel Image and the juno.dtb files to the BOOT partition on the USB dr
bc. cp arch/arm64/boot/Image /media/BOOT/Image
cp arch/arm64/boot/dts/juno.dtb /media/BOOT/juno/juno.dtb
-h2. Building UEFI
-To rebuild the UEFI binaries, see the "UEFI Wiki":https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI and specifically the "UEFI build page":https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build.
+h1. Building Firmware From Source
+
+h2. Prerequisites
+
+The following tools and environment are required:
+
+
+* Ubuntu desktop OS and the following packages. ARM have only tested with Ubuntu 12.04.02 (64-bit).
+** `git` package to obtain source code
+** `ia32-libs` package
+** `build-essential` and `uuid-dev` packages for building the UEFI and Firmware Image Package (FIP) tool
+
+* Baremetal GNU GCC tools. Can be downloaded from Linaro
+** "http://releases.linaro.org/13.11/components/toolchain/binaries/gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.xz":http://releases.linaro.org/13.11/components/toolchain/binaries/gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.xz
+
+* The instructions on this page below assume that the environment variable $JUNO&#95;ROOT&#95;DIR has been initialised to a working directory.
+
+bc. $ export JUNO&#95;ROOT&#95;DIR=&lt;path-to-working-dir&gt;/&lt;name-of-working-dir&gt;
+
+
+
+h1. Building the components
+
+h2. SCP Firmware
+
+The SCP Firmware is only available as a pre-built binary.
+
+
+h2. AP Trusted Firmware
+
+The AP trusted firmware consists of the following images:
+
+|<b>Filename</b>|<b>Image Type</b>|<b>Image Name</b>|
+|bl1.bin|BL1|AP Trusted ROM image|
+|bl2.bin|BL2|AP Trusted Firmware|
+|bl31.bin|BL3-1|EL3 runtime|
+|bl32.bin|BL3-2|Test Secure Payload|
+
+The bl2.bin, bl31.bin and bl32.bin images are inputs to the process of creating a Firmware Image Package.
+
+h3. Obtaining sources
+
+Clone the ARM Trusted Firmware repository from GitHub:
+
+bc. $ cd $JUNO&#95;ROOT&#95;DIR
+$ git clone "$":https://github.com/ARM-software/arm-trusted-firmware.git
+$ cd arm-trusted-firmware
+$ git checkout v0.3-Juno-0.3
+
+h3. Configuration
+
+Set the compiler path
+
+bc. $ export CROSS&#95;COMPILE=&lt;path-to-aarch64-gcc&gt;/bin/aarch64-none-elf-
+
+h3. Building
+
+1. Change to the trusted firmware directory:
+
+bc. $ cd $JUNO&#95;ROOT&#95;DIR/arm-trusted-firmware
+
+2. Build the different firmware images:
+
+bc. $ make PLAT=juno all
+
+By default this produces a release version of the build. To produce a debug version instead and make the build more verbose use:
+
+bc. $ make PLAT=juno DEBUG=1 V=1 all
+
+The build process creates products in a `build` directory tree, building the objects for each boot loader stage in separate sub-directories. The following boot loader binary files are created:
+
+    `build/juno/&lt;build-type&gt;/bl1.bin`
+
+    `build/juno/&lt;build-type&gt;/bl2.bin`
+
+    `build/juno/&lt;build-type&gt;/bl31.bin`
+
+    `build/juno/&lt;build-type&gt;/bl32.bin`
+
+
+... where `&lt;build-type&gt;` is either `debug` or `release`.
+
+
+To clean the AP Trusted Firmware source tree (warning, this will remove the binaries too):
+
+bc. $ make realclean
+
+
+h2. UEFI
+
+UEFI is a single bl33.bin image that is an input to the process of creating a Firmware Image Package.
+
+h3. Obtaining sources
+
+Clone the Juno UEFI Github repository:
+
+bc. $ cd $JUNO&#95;ROOT&#95;DIR
+$ git clone https://github.com/ARM-software/edk2.git -b juno
+$ cd edk2
+$ git checkout v0.3
+
+
+h3. Configuration
+
+1. Define the AArch64 GCC toolchain:
+
+bc. $ export GCC48&#95;AARCH64&#95;PREFIX=&lt;path-to-aarch64-gcc&gt;/bin/aarch64-none-elf-
+
+2. Configure Tianocore environment:
+
+bc. $ cd $JUNO&#95;ROOT&#95;DIR/edk2
+$ . edksetup.sh
+$ make -C BaseTools
+
+h3. Building
+
+1. Change to the EDK2 directory:
+
+bc. $ cd $JUNO&#95;ROOT&#95;DIR/edk2
+
+2. To build DEBUG version of UEFI firmware:
+
+bc. $ make -f ArmPlatformPkg/ArmJunoPkg/Makefile
+
+The build produces the binary $JUNO&#95;ROOT&#95;DIR/edk2/Build/ArmJuno/DEBUG&#95;GCC48/FV/BL32&#95;AP&#95;UEFI.fd that should be used as 'bl33.bin' when generating the Firmware Image Package binary.
+
+To build RELEASE version of UEFI firmware:
+
+bc. $ make -f ArmPlatformPkg/ArmJunoPkg/Makefile EDK2&#95;BUILD=RELEASE
+
+Use the release binary $JUNO&#95;ROOT&#95;DIR/edk2&gt;/Build/ArmJuno/RELEASE&#95;GCC48/FV/BL32&#95;AP&#95;UEFI.fd as bl33.bin when generating the Firmware Image Package binary.
+
+To clean EDK2 source tree:
+
+bc. $ make -f ArmPlatformPkg/ArmJunoPkg/Makefile clean
+
+
+h2. Packaging the binaries
+
+ARM Trusted Firmware uses the Firmware Image Package (FIP) binary blob to load images into the system, so that the firmware can avoid managing lots of smaller images. The FIP will contain:
+
+    BL2 and BL3-1 boot loader images
+
+    Test Secure Payload (BL3-2 image)
+
+    UEFI firmware (BL3-3 image)
+
+    SCP firmware (BL3-0 image)
+
+Note: BL1 image is NOT part of the FIP.
+
+
+h3. Building a FIP binary
+
+The steps to create a FIP are as follows:
+
+1. Build the 'fip&#95;create' tool.
+
+bc. $ cd $JUNO&#95;ROOT&#95;DIR/arm-trusted-firmware
+$ make fiptool
+
+2. Define the FIP environment. Specifically, include the FIP tool in the path.
+
+bc. $ export PATH=$JUNO&#95;ROOT&#95;DIR/arm-trusted-firmware/tools/fip&#95;create:$PATH
+
+3. Gather the binary files (the following example is for release builds only).
+
+bc. $ cd $JUNO&#95;ROOT&#95;DIR
+$ mkdir fip
+$ cd fip
+$ cp &lt;path to prebuilt binary&gt;/bl30.bin .
+$ cp $JUNO&#95;ROOT&#95;DIR/arm-trusted-firmware/build/juno/release/bl2.bin .
+$ cp $JUNO&#95;ROOT&#95;DIR/arm-trusted-firmware/build/juno/release/bl31.bin .
+$ cp $JUNO&#95;ROOT&#95;DIR/edk2/Build/ArmJuno/RELEASE&#95;GCC48/FV/BL32&#95;AP&#95;UEFI.fd  bl33.bin
+
+
+4. Create the FIP file:
+
+bc. $ fip&#95;create --dump         \
+             --bl2 bl2.bin  \
+             --bl30 bl30.bin \
+             --bl31 bl31.bin \
+             --bl33 bl33.bin \
+             fip.bin
+
+
+The previous command will display the FIP layout:
+
+
+bc. Firmware Image Package ToC:
+---------------------------
+- Trusted Boot Firmware BL2: offset=0xD8, size=0x5268
+- SCP Firmware BL3-0: offset=0x5340, size=0x9C64
+- EL3 Runtime Firmware BL3-1: offset=0xEFA4, size=0x82A0
+- Non-Trusted Firmware BL3-3: offset=0x17244, size=0xF0000
+---------------------------
+
+bc. Creating &quot;fip.bin&quot;
+
+
+5. Optional: the `fip&#95;create` tool can be used in the exact same way to update individual images inside an existing FIP file. For example, to update the SCP Firmware BL3-0 image:
+
+bc. $ fip&#95;create --dump --bl30 new&#95;bl30.bin fip.bin
+
+The previous command will again display the FIP layout:
+
+
+bc. Firmware Image Package ToC:
+---------------------------
+- Trusted Boot Firmware BL2: offset=0xD8, size=0x5268
+- SCP Firmware BL3-0: offset=0x5340, size=0x9C64
+file: 'new&#95;bl30.bin'
+- EL3 Runtime Firmware BL3-1: offset=0xEFA4, size=0x82A0
+- Non-Trusted Firmware BL3-3: offset=0x17244, size=0xF0000
+---------------------------
+
+bc. Updating &quot;fip.bin&quot;
+
+
+For more details and options about the `fip&#95;create` tool:
+
+bc. $ fip&#95;create --help
+
diff --git a/openembedded/juno-lsk/INSTALL.textile b/openembedded/juno-lsk/INSTALL.textile
index 6f419b7..87a3069 100644
--- a/openembedded/juno-lsk/INSTALL.textile
+++ b/openembedded/juno-lsk/INSTALL.textile
@@ -1,4 +1,4 @@
-h2. Disclaimer
+h2. License
The use of Juno software is subject to the terms of the Juno "End User License Agreement":https://releases.linaro.org/14.06/openembedded/juno-lsk/#tabs-5.
@@ -25,7 +25,7 @@ Linaro provides two methods for installing Linaro binary builds:
h2. Pre-Installation Steps
-Before any installation begins, it is important that you ensure your board has the latest firmware installed. Please check the "Firmware Update tab":https://releases.linaro.org/14.06/openembedded/juno-lsk/#tabs-4 on this page for the latest updates and installation instructions. The 14.06 release has been tested with Firmware version 0.7.1, but we always recommend that users install the latest version available.
+Before any installation begins, it is important that you ensure your board has the latest firmware installed. Please see "Juno Board Recovery Image and MCC firmware update" below for the latest updates and installation instructions. The 14.06 release has been tested with Firmware version 0.7.1, but we always recommend that users install the latest version available.
h2. Using pre-built image
@@ -96,4 +96,62 @@ h2. Booting the image
After the media create tool has finished executing, remove the USB drive from your PC and insert it into the board.
-Before you can boot the image you will need to install the latest firmware on the board. The instructions on the Firmware Update tab provide information on how to do this and how to configure UEFI to specify the USB drive as a boot device.
+Before you can boot the image you will need to install the latest firmware on the board. The instructions below provide information on how to do this. See the "UEFI wiki":https://wiki.linaro.org/ARM/UEFI#Configure_UEFI for more information on how to configure UEFI to boot disk images.
+
+h2. DS-5 Configuration Files for Juno
+
+As an optional step, you may wish to install DS-5 configuration files that will allow you to debug Juno. The procedure is as follows:
+
+1.      Extract the DS-5 config files anywhere on your host PC.
+
+2.      Start DS-5 and select &quot;Preferences&quot; from the &quot;Window&quot; menu.
+
+3.      In the window that opens, expand the &quot;DS-5&quot; heading and select &quot;Configuration Database&quot;
+
+4.      In the dialogue that opens, fill in:
+
+a.       Name, which can be any string you like e.g. &quot;Juno&quot;.
+
+b.      Location, which must be the directory that you extracted the DS-5 config files to. Note this is not the &quot;boards&quot; directory, but the parent directory that now contains &quot;boards&quot;.
+
+5.      Click Ok to close the dialogue
+
+6.      Back in the &quot;Configuration Database&quot; screen, click on &quot;Rebuild database&quot; then click Ok.
+
+
+h2. Juno Board Recovery Image and MCC firmware update
+
+This section describes how to reset all firmware images to their factory default state. This procedure is also the only way that you can install updates to the MCC firmware.
+
+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 board recovery image onto the flash memory device, replacing any files already in the flash memory.
+
+To update the MCC firmware only, the procedure is just the same except that the MCC firmware update bundle will contain only a subset of the files contained in the full recovery image.
+
+To carry out a system recovery or update the MCC firmware, 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 USB port of your host computer.
+
+3.      Connect the 12 volt power supply to the board.
+
+The serial terminal will show the command prompt Cmd&gt;
+
+4.      At the Cmd&gt; prompt on the serial terminal, issue the command usb&#95;on
+
+bc. Cmd&gt; usb&#95;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 the MCC firmware only then skip to step 7. Otherwise, for a full system recovery, format the configuration flash memory (FAT16).
+
+7.      Extract the board recovery image to the root directory of the configuration flash memory, preserving the directory structure.
+
+8.      Press the red 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.
diff --git a/openembedded/juno-lsk/README.textile b/openembedded/juno-lsk/README.textile
index e0550d0..c79409e 100644
--- a/openembedded/juno-lsk/README.textile
+++ b/openembedded/juno-lsk/README.textile
@@ -1,12 +1,8 @@
-* *
-
-*License*
+h2. License
The use of Juno software is subject to the terms of the Juno "End User License Agreement":https://releases.linaro.org/14.06/openembedded/juno-lsk/#tabs-5.
-* *
-
-*About Juno*
+h2. About Juno
Juno is the first 64-bit development platform from ARM, featuring a dual Cortex-A57 &quot;big&quot; cluster, a quad Cortex-A53 &quot;little&quot; cluster, and a Mali T624 GPU cluster with four shader cores.
@@ -14,27 +10,27 @@ This board is lead-free (it does not contain Pb).
 
-h1. About the Linaro Stable Kernel (LSK)
+h2. About the Linaro Stable Kernel (LSK)
The Linaro Stable Kernel (LSK) is produced, validated and released by Linaro and is based on the linux stable kernel tree. The LSK focuses on quality and stability and is therefore a great foundation for product development. It also includes backports of commonly desired features, provided they meet the quality requirements, and also any bug fixes.
-LSK releases appear monthly. Sources are also made available so you can build your own images (see the "'Building from Source'":https://releases.linaro.org/14.06/openembedded/vexpress-lsk/#tabs-3 tab).  &lt;link should point to the “building from sources” tab&gt;
+LSK releases appear monthly. Sources are also made available so you can build your own images (see the "'Building from Source'":https://releases.linaro.org/14.06/openembedded/vexpress-lsk/#tabs-3 tab).
 
-*Support*
+h2. Support
Please send any support enquiries to "juno-support&#64;arm.com":mailto:juno-support@arm.com?subject=Juno%20support%20request
 
-*Functionality in this release*
+h2. Functionality in this release
The current release supports the following:
* Full cold boot support to Linux shell or Android homescreen
* Multicore support in Linux, all six CPUs enabled.
-* Experimental big.LITTLE support, disabled by default but can be "enabled":http://community.arm.com/docs/DOC-8664#biglittleenable.  &lt;link should point to “enabling big.LITTLE” in the “building from source” tab&gt;
+* Experimental big.LITTLE MP support. The code is functional but has not been tuned and there are no performance guarantees.
* Full USB driver support in Linux, for access to mass storage and input devices.
* There is no GPU support for Linux in this release.
* GPU support in Android, functional but *not performant*. The performance issues will be addressed in the next release.
@@ -42,13 +38,13 @@ The current release supports the following:
* Thermal protection is enabled. If the SoC reaches 85C it will shut down. Linux will receive a warning at 75C.
* Stable operating points are enabled for nominal (Cortex-A57 800MHz, Cortex-A53 700MHz, Mali T624 600MHz) and overdrive (Cortex-A57 1100MHz, Cortex-A53 850MHz).
* DVFS is supported in the SCP firmware and the Linux CPUFreq driver.
+* The Linux CPUIdle driver is included, but is disabled by default. The latency table has not been tuned and when CPUIdle is enabled, performance suffers accordingly. This will be addressed in the next release.
* Android patches and defconfig have been merged to unify the Linux and Android kernels.
-* There is no idle power management support in this release.
* There is no PCIe support in this release.
-*Functionality listed by software component*
+h3. Functionality listed by software component
-*SCP Firmware*
+h4. SCP Firmware
* System configuration
* DDR initialization
@@ -57,49 +53,47 @@ The current release supports the following:
* Thermal protection (shutdown at 85C)
* DVFS support
-*AP Trusted Firmware*
+h4. AP Trusted Firmware
* Send the SCP firmware to SCP
* Initialize the Trusted World before transitioning into Normal World.
* Service CPU hotplug requests coming from Normal World
-*UEFI*
+h4. UEFI
* Booting an Operating System from NOR Flash or USB mass storage
* Support for Ethernet and PXE boot
-*Linux Kernel*
+h4. Linux Kernel
* Enable Juno Compute Subsystem comprised of a dual A57 core cluster and a quad A53 core cluster.
* Enable a limited set of peripherals present on the Juno development board: on-chip USB, non-secure UART, HDMI output, keyboard and mouse functionality over PS/2 connector, Ethernet support via on-board SMSC ethernet chip.
* Experimental big.LITTLE support
-* Unified kernel and kernel config for Android and Linux.
+* Unified kernel and kernel config for Android and Linux. 
+h3. Limitations listed by software component
-*Limitations listed by software component*
-
-*SCP Firmware*
+h4. SCP Firmware
* A number of SCPI commands are not yet implemented or are incomplete.
-*AP Trusted Firmware*
+h4. AP Trusted Firmware
* Does not support changing the primary core using SCC General Purpose Register 1.
* Does not support bringing up secondary cores using PSCI CPU&#95;ON when they have been enabled at boot time by SCP using SCC General Purpose Register 1.
* Does not support Secure-EL1 Payload (i.e. BL3-2)
* Does not support CPU suspend
-*UEFI*
+h4. UEFI
* No PCI Express support included
* No display controller support
-* No low and full speed USB support
+* No USB OHCI support. Only EHCI is supported
-*Linux Kernel*
+h4. Linux Kernel
* No PCI Express support included
-* No support for MALI graphics
+* No support for MALI graphics other than in Android releases
* big.LITTLE support is experimental and there are no guarantees of performance. This support is disabled by default and must be "enabled":http://community.arm.com/docs/DOC-8664#biglittleenable before it can be used.
 
@@ -111,4 +105,3 @@ h2. This is the initial release.
h2. Known Issues
&lt;insert list of Juno bugs tracked by landing team&gt;
-