1 # Reference Hardware Board
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)
11 The AGL Reference hardware board with R-Car H3 SoC is made by Panasonic for the
14 ## Difference to Salvator-XS When Flashing Firmware
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
21 ## How to build the Flash Writer
23 1. Get the prebuilt cross compiler:
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
29 2. Prepare the source code:
32 $ git clone https://github.com/renesas-rcar/flash_writer.git
34 $ git checkout rcar_gen3
36 3. Build the Flash Writer
39 $ CROSS_COMPILE=~/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-elf/bin/aarch64-elf- make AArch=64
41 The output image is at:
43 ./AArch64_output/AArch64_Flash_writer_SCIF_DUMMY_CERT_E6300400_salvator-x.mot
47 ## How to Flash Firmware
49 1. Connect reference hardware board to the development PC by using USB serial cable.
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.
54 4. Set bit2 of SW2221 (on the top of SoC board) to "off"which turns SW2221 to be
57 5. Power on the reference board, you will find following message on the serial
60 SCIF Download mode (w/o verification)
61 (C) Renesas Electronics Corp.
63 -- Load Program to SystemRAM ---------------
67 6. Use console application menu to send the flash writer binary:
69 AArch64_Flash_writer_SCIF_DUMMY_CERT_E6300400_salvator-x.mot
72 7. After the writer is transferred correctly, the following message will be displayed:
74 Flash writer for R-Car H3/M3/M3N Series V1.11 Feb.12,2020
77 8. Set reference board to boot from eMMC:
80 Please Input EXT_CSD Index(H'00 - H'1FF) :**b1**
82 Please Input Value(H'00 - H'FF) :**a**
86 Please Input EXT_CSD Index(H'00 - H'1FF) :**b3**
88 Please Input Value(H'00 - H'FF) :**8**
93 [127:126] CSD_STRUCTURE 0x03
94 [125:122] SPEC_VERS 0x04
97 [103: 96] TRAN_SPEED 0x32
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
121 [ 13: 13] PERM_WRITE_PROTECT 0x00
122 [ 12: 12] TMP_WRITE_PROTECT 0x00
123 [ 11: 10] FILE_FORMAT 0x00
127 9. Flash the firmware.
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`.
132 The firmware should be stored on the eMMC as follows:
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
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:
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
156 The firmware files can be flashed by using **EM_W** command for each of them:
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'\>**
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
181 ## How to build the Firmware
185 1. Initialize build environment:
187 source meta-agl/scripts/aglsetup.sh -m h3ulcb agl-refhw-h3
191 source meta-agl/scripts/aglsetup.sh -m h3ulcb-nogfx agl-refhw-h3
193 2. Build the firmware:
195 bitbake arm-trusted-firmware optee-os u-boot
197 3. Afterwards, the firmware files will be in the directory `tmp/deploy/images/agl-refhw-h3`.
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.
205 1. In a temporary working directory, clone poky the poky repository and check out the dunfell branch:
207 git clone git://git.yoctoproject.org/poky
212 2. Clone the Renesas BSP and it's dependent layers:
214 git clone https://github.com/renesas-rcar/meta-renesas
216 git checkout dunfell-dev-4.14
218 git clone git://git.openembedded.org/meta-openembedded
223 3. Clone the reference hardware BSP layer:
225 git clone https://gerrit.automotivelinux.org/gerrit/AGL/meta-agl-refhw
227 4. Create a build environment:
229 . ./poky/oe-init-build-env build
231 5. Add the layers to `conf/bblayers.conf`, the `BBLAYERS` variable definition should look like:
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 \
243 6. Add the machine setting to `conf/local.conf`, for example:
245 echo MACHINE=agl-refhw-h3 >> conf/local.conf
247 7. Build the firmware:
249 bitbake arm-trusted-firmware optee-os u-boot
251 8. Afterwards, the firmware files will be in the directory `tmp/deploy/images/agl-refhw-h3`.