arm-trusted-firmware: Enable building in AGL build
[AGL/meta-agl-refhw.git] / meta-agl-refhw-gen3 / docs / ReferenceHW_Rcar_gen3.md
1 # Reference Hardware Board
2
3 - [About](#about)
4 - [Difference to Salvator-XS When Flashing Firmware](#difference-to-salvator-xs-when-flashing-firmware)
5 - [How to Build the Flash Writer](#how-to-build-the-flash-writer)
6 - [How to Flash Firmware](#how-to-flash-firmware)
7 - [How to Build the Firmware](#how-to-build-the-firmware)
8
9
10 ## About
11 The AGL Reference hardware board with R-Car H3 SoC is made by Panasonic for the
12 AGL community.
13
14 ## Difference to Salvator-XS When Flashing Firmware
15
16 The HyperFlash/QSPI flash switch function is not implemented on the reference
17 hardware board at present, HyperFlash and QSPI flash are not used.  Firmware
18 (arm-trusted-firmware, U-Boot...) is stored in eMMC and updated by using serial
19 download.
20
21 ## How to build the Flash Writer
22
23 1. Get the prebuilt cross compiler:
24     ```
25     $ cd ~/
26     $ wget https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-elf/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-elf.tar.xz
27     $ tar xvf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-elf.tar.xz
28     ```
29 2. Prepare the source code:
30     ```
31     $ cd ~/
32     $ git clone https://github.com/renesas-rcar/flash_writer.git
33     $ cd flash_writer
34     $ git checkout rcar_gen3
35     ```
36 3. Build the Flash Writer
37     ```
38     $ make AArch=64 clean
39     $ CROSS_COMPILE=~/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-elf/bin/aarch64-elf- make AArch=64
40     ```
41     The output image is at:
42     ```
43     ./AArch64_output/AArch64_Flash_writer_SCIF_DUMMY_CERT_E6300400_salvator-x.mot
44     ```
45
46
47 ## How to Flash Firmware
48
49 1. Connect reference hardware board to the development PC by using USB serial cable.
50
51 2. Open a serial console (like Teraterm in Windows, or gtkterm in Ubuntu that
52    can easily send files) with a baudrate of 115200n8.
53
54 4. Set bit2 of SW2221 (on the top of SoC board) to "off"which turns SW2221 to be
55         off,off,off,off.
56
57 5. Power on the reference board, you will find following message on the serial
58    console:
59     ```
60     SCIF Download mode (w/o verification)
61     (C) Renesas Electronics Corp.
62
63     -- Load Program to SystemRAM ---------------
64     please send !
65     ```
66
67 6. Use console application menu to send the flash writer binary:
68     ```
69     AArch64_Flash_writer_SCIF_DUMMY_CERT_E6300400_salvator-x.mot
70     ```
71
72 7. After the writer is transferred correctly, the following message will be displayed:
73     ```
74     Flash writer for R-Car H3/M3/M3N Series V1.11 Feb.12,2020
75     >
76     ```
77 8. Set reference board to boot from eMMC:
78
79     \> **EM_SECSD**  
80     Please Input EXT_CSD Index(H'00 - H'1FF) :**b1**  
81     EXT_CSD[B1] = 0x00  
82     Please Input Value(H'00 - H'FF) :**a**  
83     EXT_CSD[B1] = 0x0A  
84
85     \> **EM_SECSD**  
86     Please Input EXT_CSD Index(H'00 - H'1FF) :**b3**  
87     EXT_CSD[B3] = 0x00  
88     Please Input Value(H'00 - H'FF) :**8**  
89     EXT_CSD[B3] = 0x08  
90
91     \>**EM_DCSD**  
92     [CSD Field Data]  
93     [127:126]  CSD_STRUCTURE       0x03  
94     [125:122]  SPEC_VERS           0x04  
95     [119:112]  TAAC                0x27  
96     [111:104]  NSAC                0x01  
97     [103: 96]  TRAN_SPEED          0x32  
98     [ 95: 84]  CCC                 0x00F5  
99     [ 83: 80]  READ_BL_LEN         0x09  
100     [ 79: 79]  READ_BL_PARTIAL     0x00  
101     [ 78: 78]  WRITE_BLK_MISALIGN  0x00  
102     [ 77: 77]  READ_BLK_MISALIGN   0x00  
103     [ 76: 76]  DSR_IMP             0x00  
104     [ 73: 62]  C_SIZE              0x0FFF  
105     [ 61: 59]  VDD_R_CURR_MIN      0x06  
106     [ 58: 56]  VDD_R_CURR_MAX      0x06  
107     [ 55: 53]  VDD_W_CURR_MIN      0x06  
108     [ 52: 50]  VDD_W_CURR_MAX      0x06  
109     [ 49: 47]  C_SIZE_MULT         0x07  
110     [ 46: 42]  ERASE_GRP_SIZE      0x1F  
111     [ 41: 37]  ERASE_GRP_MULT      0x1F  
112     [ 36: 32]  WP_GRP_SIZE         0x0F  
113     [ 31: 31]  WP_GRP_ENABLE       0x01  
114     [ 30: 29]  DEFAULT_ECC         0x00  
115     [ 28: 26]  R2W_FACTOR          0x03  
116     [ 25: 22]  WRITE_BL_LEN        0x09  
117     [ 21: 21]  WRITE_BL_PARTIAL    0x00  
118     [ 16: 16]  CONTENT_PROT_APP    0x00  
119     [ 15: 15]  FILE_FORMAT_GRP     0x00  
120     [ 14: 14]  COPY                0x01  
121     [ 13: 13]  PERM_WRITE_PROTECT  0x00  
122     [ 12: 12]  TMP_WRITE_PROTECT   0x00  
123     [ 11: 10]  FILE_FORMAT         0x00  
124     [  9:  8]  ECC                 0x00  
125     [  7:  1]  CRC                 0x00  
126
127 9. Flash the firmware.
128
129     If using an AGL build with the agl-refhw-h3 feature, you can find the firmware
130     files under the build directory in `tmp/deploy/images/h3ulcb`.
131
132     The firmware should be stored on the eMMC as follows:
133
134     | Name                                | eMMC partition | Flash address | Load address | Description
135     |-------------------------------------|:--------------:|:-------------:|:------------:|------------------|
136     | bootparam_sa0-agl-refhw-4x2g.srec   | 1              | H'000000      | H'E6320000   | Boot parameter
137     | bl2-agl-refhw-4x2g.srec             | 1              | H'00001E      | H'E6304000   | bl2 loader
138     | cert_header_sa6-agl-refhw-4x2g.srec | 1              | H'000180      | H'E6320000   | Certification
139     | bl31-agl-refhw-4x2g.srec            | 1              | H'000200      | H'44000000   | bl3 loader
140     | tee-h3ulcb.srec                     | 1              | H'001000      | H'44100000   | OP-Tee
141     | u-boot-elf-agl-refhw-4x2g.srec      | 2              | H'000000      | H'50000000   | U-boot
142
143     If the firmware has been built using a standalone build outside of AGL
144     (see [below](#standalone-build)), then the firmware files can be be found in
145     `tmp/deploy/images/agl-refhw-h3`, and should be stored on the eMMC as follows:
146
147     | Name                                | eMMC partition | Flash address | Load address | Description
148     |-------------------------------------|:--------------:|:-------------:|:------------:|------------------|
149     | bootparam_sa0-4x2g.srec             | 1              | H'000000      | H'E6320000   | Boot parameter
150     | bl2-agl-refhw-h3-4x2g.srec          | 1              | H'00001E      | H'E6304000   | bl2 loader
151     | cert_header_sa6-4x2g.srec           | 1              | H'000180      | H'E6320000   | Certification
152     | bl31-agl-refhw-h3-4x2g.srec         | 1              | H'000200      | H'44000000   | bl3 loader
153     | tee-agl-refhw-h3.srec               | 1              | H'001000      | H'44100000   | OP-Tee
154     | u-boot-elf-salvator-xs-4x2g.srec    | 2              | H'000000      | H'50000000   | U-boot
155
156     The firmware files can be flashed by using **EM_W** command for each of them:
157
158     \> **EM_W**  
159     \---------------------------------------------------------  
160     Please select,eMMC Partition Area.  
161      0:User Partition Area   : 62496768 KBytes  
162       eMMC Sector Cnt : H'0 - H'07733FFF  
163      1:Boot Partition 1      : 32640 KBytes  
164       eMMC Sector Cnt : H'0 - H'0000FEFF  
165      2:Boot Partition 2      : 32640 KBytes  
166       eMMC Sector Cnt : H'0 - H'0000FEFF  
167     \---------------------------------------------------------  
168     Select area(0-2)> **\<Enter the eMMC partition number above, Ex.'1' \>**   
169     -- Boot Partition X Program -----------------------------  
170     Please Input Start Address in sector : **\<Enter the Flash address above, Ex.'1e'\>**  
171     Please Input Program Start Address : **\<Enter the Load address above, Ex. 'e6304000'\>**  
172     Work RAM(H'50000000-H'50FFFFFF) Clear....  
173     please send ! ('.' & CR stop load)  
174     **\<Send the fimware file above by using console appliction, Ex. send 'bl2-agl-refhw-x-4x2g.srec'\>**
175
176 9. Power off the board.
177 10. Reset bit2 of SW2221 (on the top of SoC board) to "on", which turns SW2221 to be  
178     off,on,off,off.
179
180
181 ## How to build the Firmware
182
183 ### In AGL Build
184
185 1. Initialize build environment:
186     ```
187     source meta-agl/scripts/aglsetup.sh -m h3ulcb agl-refhw-h3
188     ```
189     or:
190     ```
191     source meta-agl/scripts/aglsetup.sh -m h3ulcb-nogfx agl-refhw-h3
192     ```
193 2. Build the firmware:
194     ```
195     bitbake arm-trusted-firmware optee-os u-boot
196     ```
197 3. Afterwards, the firmware files will be in the directory `tmp/deploy/images/agl-refhw-h3`.
198
199
200 ### Standalone Build
201
202 It is also possible to build the firmware outside of the AGL build by using this
203 BSP layer on top of the meta-rcar-gen3 layer in meta-renesas.
204
205 1. In a temporary working directory, clone poky the poky repository and check out the dunfell branch:
206     ```
207     git clone git://git.yoctoproject.org/poky
208     cd poky
209     git checkout dunfell
210     ..
211     ```
212 2.  Clone the Renesas BSP and it's dependent layers:
213     ```
214     git clone https://github.com/renesas-rcar/meta-renesas
215     cd meta-renesas
216     git checkout dunfell-dev-4.14
217     cd ..
218     git clone git://git.openembedded.org/meta-openembedded
219     cd meta-openembedded
220     git checkout dunfell
221     cd ..
222     ```
223 3. Clone the reference hardware BSP layer:
224     ```
225     git clone https://gerrit.automotivelinux.org/gerrit/AGL/meta-agl-refhw
226     ```
227 4. Create a build environment:
228     ```
229     . ./poky/oe-init-build-env build
230     ```
231 5. Add the layers to `conf/bblayers.conf`, the `BBLAYERS` variable definition should look like:
232     ```
233     BBLAYERS ?= " \
234         /home/user/workdir/poky/meta \
235         /home/user/workdir/poky/meta-poky \
236         /home/user/poky/meta-yocto-bsp \
237         /home/user/workdir/meta-openembedded/meta-oe \
238         /home/user/workdir/meta-openembedded/meta-python \
239         /home/user/workdir/meta-renesas/meta-rcar-gen3 \
240         /home/user/workdir/meta-agl-refhw/meta-agl-refhw-gen3 \
241     "
242     ```
243 6. Add the machine setting to `conf/local.conf`, for example:
244     ```
245     echo MACHINE=agl-refhw-h3 >> conf/local.conf
246     ```
247 7. Build the firmware:
248     ```
249     bitbake arm-trusted-firmware optee-os u-boot
250     ```
251 8. Afterwards, the firmware files will be in the directory `tmp/deploy/images/agl-refhw-h3`.