summaryrefslogtreecommitdiff
path: root/android/images/armv8-juice-juno-lsk/HOWTO_gettingstarted.txt
blob: dd9e79021a6f5b91c2d04b33c8f091a5bda4679b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
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/images/armv8-juice-juno-lsk/#tabs-5.

h2. Juno ports

 

h3. Back panel

<img src="https://releases.linaro.org/14.06/android/images/armv8-juice-juno-lsk/RearPanel.png">

h3. Front panel

<img src="https://releases.linaro.org/14.06/android/images/armv8-juice-juno-lsk/FrontPanel.png">

h3(#uarts). UARTs

There are 4 UARTs on the Juno board:

| *UART* | *Location* | *Used by* | *Baud* | *Data bits* | *Stop bits* | *Parity |
|SoC UART0 |"back panel":https://releases.linaro.org/14.06/android/images/armv8-juice-juno-lsk/RearPanel.png |The motherboard, UEFI and the Linux kernel.  |115200 |8 |1 |None |
|SoC UART1 |"back panel":https://releases.linaro.org/14.06/android/images/armv8-juice-juno-lsk/RearPanel.png |SCP firmware |115200 |8 |1 |None |
|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 |1 |None |
|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 "Firmware update" on the "Binary Image Installation tab":https://releases.linaro.org/14.06/android/images/armv8-juice-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/android/images/armv8-juice-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(#setup). 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/android/images/armv8-juice-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/android/images/armv8-juice-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/android/images/armv8-juice-juno-lsk/#tabs-2.

h3. Setting the Real Time Clock (required for Android)

New Juno boards do not have the correct time programmed into the real time clock. Some software (notably Android) will not operate correctly until a sensible time is programmed. To set the time, start a terminal session with "UART0":https://releases.linaro.org/14.06/android/images/armv8-juice-juno-lsk/RearPanel.png connector ("settings":#uarts). Ensure there is power to the board, but the SoC must be powered off (if it is not, then press the black "Hardware Reset" button).

Execute the following:

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 Configuration Port 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 table 1 below 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.
        To reset to factory settings, the value to program should be 0x00FE001E.

7.      In the [SCC REGISTERS] section, below the "TOTALSCCS" line, insert the following line:

bc. SCC: 0x05C <value from step 6 above>         ;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.

<br><br>

h4. Table 1. Bit mappings for the CONFIG_TEX_COMPRESSED_FORMAT_ENABLE register.

&nbsp;&nbsp;&nbsp;&nbsp;*Please ensure you have obtained the appropriate license(s) before enabling these texture compression formats*

|Bit|Texture compression format| Direct X 9| DirectX 10| DirectX 11| OpenGL ES 1.1| OpenGL ES 2.0| OpenGL ES 3.0| OpenGL 2.0 - 2.1| OpenGL 3.0 - 3.1| OpenGL 3.2 - 4.1| OpenGL 4.2|
|0  | Invalid format             |   |   |   |      |      |      |      |      |      |      |
|1  | ETC2                       |   |   |   | x<sup>[a]</sup> | x<sup>[a]</sup> | x    |      |      |      |      |
|2  | EAC, 1 component           |   |   |   |      |      | x    |      |      |      |      |
|3  | ETC2 + EAC                 |   |   |   |      |      | x    |      |      |      |      |
|4  | EAC, 2 components          |   |   |   |      |      | x    |      |      |      |      |
|5  | Reserved                   |   |   |   |      |      |      |      |      |      |      |
|6  | NXR                        |   |   |   |      |      |      |      |      |      |      |
|7  | BC1_UNORM (DXT1)           | x | x | x | x<sup>[b]</sup> | x<sup>[b]</sup> | x<sup>[b]</sup> | x<sup>[f]</sup> | x<sup>[f]</sup> | x<sup>[f]</sup> | x<sup>[f]</sup> |
|8  | BC2_UNORM (DXT3)           | x | x | x |      | x<sup>&#91;c]</sup> | x<sup>&#91;c]</sup> | x<sup>[f]</sup> | x<sup>[f]</sup> | x<sup>[f]</sup> | x<sup>[f]</sup> |
|9  | BC3_UNORM (DXT5)           | x | x | x |      | x<sup>[d]</sup> | x<sup>[d]</sup> | x<sup>[f]</sup> | x<sup>[f]</sup> | x<sup>[f]</sup> | x<sup>[f]</sup> |
|10 | BC4_UNORM (RGTC1_UNORM)    |   | x | x |      |      |      | x<sup>[g]</sup> | x    | x    | x    |
|11 | BC4_SNORM (RGTC1_SNORM)    |   | x | x |      |      |      | x<sup>[g]</sup> | x    | x    | x    |
|12 | BC5_UNORM (RGTC2_UNORM)    |   | x | x |      |      |      | x<sup>[g]</sup> | x    | x    | x    |
|13 | BC5_SNORM (RGTC2_SNORM)    |   | x | x |      |      |      | x<sup>[g]</sup> | x    | x    | x    |
|14 | BC6H_UF16                  |   |   | x |      |      |      |      |      | x<sup>[h]</sup> | x    |
|15 | BC6H_SF16                  |   |   | x |      |      |      |      |      | x<sup>[h]</sup> | x    |
|16 | BC7_UNORM                  |   |   | x |      |      |      |      |      | x<sup>[h]</sup> | x    |
|17 | EAC_SNORM, 1 component     |   |   |   |      |      | x    |      |      |      |      |
|18 | EAC_SNORM, 2 components    |   |   |   |      |      | x    |      |      |      |      |
|19 | ETC2 + punch-through alpha |   |   |   |      |      | x    |      |      |      |      |
|20 | ASTC 3D LDR                |   |   |   |      |      |      |      |      |      |      |
|21 | ASTC 3D HDR                |   |   |   |      |      |      |      |      |      |      |
|22 | ASTC 2D LDR                |   |   |   | x<sup>[e]</sup> | x<sup>[e]</sup> | x<sup>[e]</sup> |      |      |      |      |
|23 | ASTC 2D HDR                |   |   |   |      |      |      |      |      |      |      |
|24 - 31 | Reserved              |   |   |   |      |      |      |      |      |      |      |

<p></p>

Key
&nbsp;&nbsp;&nbsp;[a]&nbsp;&nbsp; Enable for GL_OES_compressed_ETC1_RGB8_texture
&nbsp;&nbsp;&nbsp;[b]&nbsp;&nbsp; Enable for GL_EXT_texture_compression_dxt1
&nbsp;&nbsp;&nbsp;[c]&nbsp;&nbsp; Enable for GL_ANGLE_texture_compression_dxt3
&nbsp;&nbsp;&nbsp;[d]&nbsp;&nbsp; Enable for GL_ANGLE_texture_compression_dxt5
&nbsp;&nbsp;&nbsp;[e]&nbsp;&nbsp; Enable for GL_KHR_texture_compression_astc_ldr
&nbsp;&nbsp;&nbsp;[f]&nbsp;&nbsp; Enable for GL_EXT_texture_compression_s3tc
&nbsp;&nbsp;&nbsp;[g]&nbsp;&nbsp; Enable for GL_EXT_texture_compression_rgtc
&nbsp;&nbsp;&nbsp;[h]&nbsp;&nbsp; Enable for GL_ARB_texture_compression_bptc



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