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. h2. Juno ports   h3. Back panel h3. Front panel h3(#uarts). UARTs There are 4 UARTs on the Juno board: | *UART* | *Location* | *Used by* | *Baud* | *Data bits* | |SoC UART0 |"back panel":https://releases.linaro.org/14.06/openembedded/juno-lsk/RearPanel.png |The motherboard, UEFI and the Linux kernel. |115200 |8 | |SoC UART1 |"back panel":https://releases.linaro.org/14.06/openembedded/juno-lsk/RearPanel.png |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”:#setup section.   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 hosted on this website by following the instructions in the section titled "Juno Board Recovery Image and MCC firmware update" on the "Binary Image Installation tab":https://releases.linaro.org/14.06/openembedded/juno-lsk/#tabs-2. 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":https://releases.linaro.org/14.06/openembedded/juno-lsk/#tabs-2 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":https://releases.linaro.org/14.06/openembedded/juno-lsk/RearPanel.png connector ("settings":#uarts). # Connect the 12 volt power, then press the red "ON/OFF button":https://releases.linaro.org/14.06/openembedded/juno-lsk/RearPanel.png on the back panel. 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":https://releases.linaro.org/14.06/openembedded/juno-lsk/#tabs-2. 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 ARM V2M_Juno Firmware v1.1.7 Build Date: May 27 2014 Time : 11:52:35 Date : 09:07:2060 Cmd> debug Debug> date 09/07/2060 Change Date? Y\N >y D:>23 M:>6 Y:>2014 Debug> time 15 : 51 : 58 Change Time? Y\N >y s:>0 m:>08 h:>14 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> 4.      At the Cmd> prompt on the serial terminal, issue the command usb_on bc. Cmd> usb_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            ;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":https://wiki.linaro.org/ARM/Juno?action=AttachFile&do=get&target=DDI0515A3b_juno_arm_development_platform_soc_trm.pdf * "V2M Juno Reference Manual":https://wiki.linaro.org/ARM/Juno?action=AttachFile&do=get&target=DDI0524A4b_v2m_juno_reference_manual.pdf * "SCPI protocol description":https://wiki.linaro.org/ARM/Juno?action=AttachFile&do=get&target=scpi-doc-v0.2.1.zip