blob: d1752c452daf3522517d15988727f38ed4b7d4ab [file] [log] [blame]
H Bellad2ee4e2024-05-22 19:12:51 +00001.. SPDX-License-Identifier: GPL-2.0+
2
3Pine64 Star64
4=============
5
6U-Boot for the Star64 uses the same U-Boot binaries as the VisionFive 2 board.
7In U-Boot SPL the actual board is detected and the device-tree patched
8accordingly.
9
10Building
Heinrich Schuchardt0c443d62025-04-24 14:13:13 +020011--------
H Bellad2ee4e2024-05-22 19:12:51 +000012
131. Add the RISC-V toolchain to your PATH.
142. Setup ARCH & cross compilation environment variable:
15
16.. code-block:: none
17
18 export CROSS_COMPILE=<riscv64 toolchain prefix>
19
20The M-mode software OpenSBI provides the supervisor binary interface (SBI) and
21is responsible for the switch to S-Mode. It is a prerequisite to build U-Boot.
22Support for the JH7110 was introduced in OpenSBI 1.2. It is recommended to use
23a current release.
24
25.. code-block:: console
26
27 git clone https://github.com/riscv/opensbi.git
28 cd opensbi
29 make PLATFORM=generic FW_TEXT_START=0x40000000
30
31Now build the U-Boot SPL and U-Boot proper.
32
33.. code-block:: console
34
35 cd <U-Boot-dir>
36 make starfive_visionfive2_defconfig
37 make OPENSBI=$(opensbi_dir)/build/platform/generic/firmware/fw_dynamic.bin
38
39This will generate the U-Boot SPL image (spl/u-boot-spl.bin.normal.out) as well
40as the FIT image (u-boot.itb) with OpenSBI and U-Boot.
41
42Device-tree selection
Heinrich Schuchardt0c443d62025-04-24 14:13:13 +020043---------------------
H Bellad2ee4e2024-05-22 19:12:51 +000044
45U-Boot will set variable $fdtfile to starfive/jh7110-pine64-star64.dtb.
46
47To overrule this selection the variable can be set manually and saved in the
48environment
49
50::
51
52 env set fdtfile my_device-tree.dtb
53 env save
54
55or the configuration variable CONFIG_DEFAULT_FDT_FILE can be used to set to
56provide a default value.
57
H Bellad2ee4e2024-05-22 19:12:51 +000058Preparing the SD-Card
Heinrich Schuchardt0c443d62025-04-24 14:13:13 +020059---------------------
H Bellad2ee4e2024-05-22 19:12:51 +000060
61The device firmware loads U-Boot SPL (u-boot-spl.bin.normal.out) from the
62partition with type GUID 2E54B353-1271-4842-806F-E436D6AF6985. You are free
63to choose any partition number.
64
65With the default configuration U-Boot SPL loads the U-Boot FIT image
66(u-boot.itb) from partition 2 (CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=0x2).
67When formatting it is recommended to use GUID
68BC13C2FF-59E6-4262-A352-B275FD6F7172 for this partition.
69
70The FIT image (u-boot.itb) is a combination of OpenSBI's fw_dynamic.bin,
71u-boot-nodtb.bin and the device tree blob.
72
73Format the SD card (make sure the disk has GPT, otherwise use gdisk to switch)
74
75.. code-block:: bash
76
77 sudo sgdisk --clear \
78 --set-alignment=2 \
79 --new=1:4096:8191 --change-name=1:spl --typecode=1:2E54B353-1271-4842-806F-E436D6AF6985\
80 --new=2:8192:16383 --change-name=2:uboot --typecode=2:BC13C2FF-59E6-4262-A352-B275FD6F7172 \
81 --new=3:16384:1654784 --change-name=3:system --typecode=3:EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 \
82 /dev/sdb
83
84Copy U-Boot to the SD card
85
86.. code-block:: bash
87
88 sudo dd if=u-boot-spl.bin.normal.out of=/dev/sdb1
89 sudo dd if=u-boot.itb of=/dev/sdb2
90
91 sudo mount /dev/sdb3 /mnt/
92 sudo cp u-boot-spl.bin.normal.out /mnt/
93 sudo cp u-boot.itb /mnt/
94 sudo cp Image.gz /mnt/
95 sudo cp initramfs.cpio.gz /mnt/
96 sudo cp jh7110-starfive-visionfive-2.dtb /mnt/
97 sudo umount /mnt
98
Heinrich Schuchardt387cd002025-04-24 14:13:14 +020099.. include:: jh7110_common.rst
H Bellad2ee4e2024-05-22 19:12:51 +0000100
101Serial Number and MAC address issues
Heinrich Schuchardt0c443d62025-04-24 14:13:13 +0200102------------------------------------
H Bellad2ee4e2024-05-22 19:12:51 +0000103
104U-Boot requires valid EEPROM data to determine which board-specific fix-up to
105apply at runtime. This affects the size of memory initialized, network mac
106address numbering, and tuning of the network PHYs.
107
108The Star64 does not currently ship with unique serial numbers per-device.
109Devices follow a pattern where the last mac address bytes are a sum of 0x7558
110and the serial number (lower port mac0), or a sum of 0x7559 and the serial
111number (upper port mac1).
112
113As tested there are several 4gb model units where the serial number and network
114mac addresses collide with other devices (serial
115``STAR64V1-2310-D004E000-00000005``, MACs ``6c:cf:39:00:75:61``,
116``6c:cf:39:00:75:62``)
117
118Some early Star64 boards shipped with an uninitialized EEPROM and no write
119protect pull-up resistor in place. Later units of all 4gb and 8gb models
120sharing the same serial number in EEPROM data will have this problem that the
121network mac addresses are alike between different models and this may be
122corrected by defeating the write protect resistor to write new values. As an
123alternative to this, it may be worked around by overriding the mac addresses
124via U-Boot environment variables.
125
126It is required for any unit having uninitialized EEPROM and recommended for
127all later Star64 4gb model units (not properly serialized) to have decided on a
128new 6-byte serial number. This serial number should be high enough to
129avoid collision with other JH7110 boards and low enough not to overflow i.e.
130between ``cafe00`` and ``f00d00``.
131
132Update EEPROM values
133^^^^^^^^^^^^^^^^^^^^
134
1351. Prepare EEPROM data in memory
136
137::
138
139 ## When there is no error to load existing data:
140 mac read_eeprom
141
142 ## When there is an error to load non-existing data:
143 # "DRAM: Not a StarFive EEPROM data format - magic error"
144 mac initialize
145
1462. Set Star64 values
147
148::
149
150 ## Common values
151 mac vendor PINE64
152 mac pcb_revision c1
153 mac bom_revision A
154
155 ## Device-specific values
156 # Year 2023 week 10 production date, 8GB DRAM, optional eMMC, serial cdef01
157 mac product_id STAR64V1-2310-D008E000-00cdef01
158
159 # Last three bytes mac0: 0x7558 + serial number 0xcdef01
160 mac mac0_address 6c:cf:39:ce:64:59
161
162 # Last three bytes mac1: 0x7559 + serial number 0xcdef01
163 mac mac1_address 6c:cf:39:ce:64:5a
164
1653. Defeat write-protect pull-up resistor (if installed) and write to EEPROM
166
167::
168
169 mac write_eeprom
170
171Set Variables in U-Boot
172^^^^^^^^^^^^^^^^^^^^^^^
173
174.. note:: Changing just the serial number will not alter your MAC address
175
176The MAC addresses may be "set" as follows by writing as a custom config to SPI
177(Change the last 3 bytes of MAC addreses as appropriate):
178
179::
180
181 env set serial# STAR64V1-2310-D008E000-00cdef01
182 env set ethaddr 6c:cf:39:ce:64:59
183 env set eth1addr 6c:cf:39:ce:64:5a
184 env save
185 reset