blob: 253b37c41cd68a806c13a4ee7dce3c0d18af4894 [file] [log] [blame]
Tianrui Wei8a44fe62021-07-01 12:54:19 +08001.. SPDX-License-Identifier: GPL-2.0+
2
3Openpiton RISC-V SoC
4====================
5
6OpenPiton RISC-V SoC
7--------------------
8OpenPiton is an open source, manycore processor and research platform. It is a
9tiled manycore framework scalable from one to 1/2 billion cores. It supports a
10number of ISAs including RISC-V with its P-Mesh cache coherence protocol and
11networks on chip. It is highly configurable in both core and uncore components.
12OpenPiton has been verified in both ASIC and multiple Xilinx FPGA prototypes
13running full-stack Debian linux.
14
15RISC-V Standard Bootflow
16-------------------------
17Currently, OpenPiton implements RISC-V standard bootflow in the following steps
18mover.S -> u-boot-spl -> opensbi -> u-boot -> Linux
19This board supports S-mode u-boot as well as M-mode SPL
20
21Building OpenPition
22---------------------
23If you'd like to build OpenPiton, please go to OpenPiton github repo
24(at https://github.com/PrincetonUniversity/openpiton) to build from the latest
25changes
26
27Building Images
28---------------------------
29
30SPL
31---
32
331. Add the RISC-V toolchain to your PATH.
342. Setup ARCH & cross compilation environment variable:
35
36.. code-block:: none
37
38 export CROSS_COMPILE=<riscv64 toolchain prefix>
39 export ARCH=riscv
40
413. make openpiton_riscv64_spl_defconfig
424. make
43
44U-Boot
45------
46
471. Add the RISC-V toolchain to your PATH.
482. Setup ARCH & cross compilation environment variable:
49
50.. code-block:: none
51
52 export CROSS_COMPILE=<riscv64 toolchain prefix>
53 export ARCH=riscv
54
553. make openpiton_riscv64_defconfig
564. make
57
58
59opensbi
60-------
61
621. Add the RISC-V toolchain to your PATH.
632. Setup ARCH & cross compilation environment variable:
64
65.. code-block:: none
66
67 export CROSS_COMPILE=<riscv64 toolchain prefix>
68 export ARCH=riscv
69
703. Go to OpenSBI directory
714. make PLATFORM=fpga/openpiton FW_PAYLOAD_PATH=<path to u-boot-nodtb.bin>
72
73
74Using fw_payload.bin with linux
75-------------------------------
76Put the generated fw_payload.bin into the /boot directory on the root filesystem,
77plug in the SD card, then flash the bitstream. Linux will boot automatically.
78
79Booting
80-------
81Once you plugin the sdcard and power up, you should see the U-Boot prompt.
82
83Sample Dual-core Debian boot log from OpenPiton
84-----------------------------------------------
85
86.. code-block:: none
87
88 Trying to boot from MMC1
89
90 OpenSBI v0.9-5-gd06cb61
91 ____ _____ ____ _____
92 / __ \ / ____| _ \_ _|
93 | | | |_ __ ___ _ __ | (___ | |_) || |
94 | | | | '_ \ / _ \ '_ \ \___ \| _ < | |
95 | |__| | |_) | __/ | | |____) | |_) || |_
96 \____/| .__/ \___|_| |_|_____/|____/_____|
97 | |
98 |_|
99
100 Platform Name : OPENPITON RISC-V
101 Platform Features : timer,mfdeleg
102 Platform HART Count : 3
103 Firmware Base : 0x80000000
104 Firmware Size : 104 KB
105 Runtime SBI Version : 0.2
106
107 Domain0 Name : root
108 Domain0 Boot HART : 0
109 Domain0 HARTs : 0*,1*,2*
110 Domain0 Region00 : 0x0000000080000000-0x000000008001ffff ()
111 Domain0 Region01 : 0x0000000000000000-0xffffffffffffffff (R,W,X)
112 Domain0 Next Address : 0x0000000080200000
113 Domain0 Next Arg1 : 0x0000000082200000
114 Domain0 Next Mode : S-mode
115 Domain0 SysReset : yes
116
117 Boot HART ID : 0
118 Boot HART Domain : root
119 Boot HART ISA : rv64imafdcsu
120 Boot HART Features : scounteren,mcounteren
121 Boot HART PMP Count : 0
122 Boot HART PMP Granularity : 0
123 Boot HART PMP Address Bits: 0
124 Boot HART MHPM Count : 0
125 Boot HART MHPM Count : 0
126 Boot HART MIDELEG : 0x0000000000000222
127 Boot HART MEDELEG : 0x000000000000b109
128
129
130 U-Boot 2021.01+ (Jun 12 2021 - 10:31:34 +0800)
131
132 DRAM: 1 GiB
133 MMC: sdhci@f000000000: 0 (eMMC)
134 In: uart@fff0c2c000
135 Out: uart@fff0c2c000
136 Err: uart@fff0c2c000
137 Hit any key to stop autoboot: 0
138 6492992 bytes read in 5310 ms (1.2 MiB/s)
139 ## Flattened Device Tree blob at 86000000
140 Booting using the fdt blob at 0x86000000
141 Loading Device Tree to 00000000bfffa000, end 00000000bffff007 ... OK
142
143 Starting kernel ...
144
145 [ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
146 [ 0.000000] Linux version 5.6.0-rc4-gb9d34f7e294d-dirty
147 [ 0.000000] earlycon: sbi0 at I/O port 0x0 (options '')
148 [ 0.000000] printk: bootconsole [sbi0] enabled
149 [ 0.000000] Zone ranges:
150 [ 0.000000] DMA32 [mem 0x0000000080200000-0x00000000bfffffff]
151 [ 0.000000] Normal empty
152 [ 0.000000] Movable zone start for each node
153 [ 0.000000] Early memory node ranges
154 [ 0.000000] node 0: [mem 0x0000000080200000-0x00000000bfffffff]
155 [ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x00000000bfffffff]
156 [ 0.000000] On node 0 totalpages: 261632
157 [ 0.000000] DMA32 zone: 4088 pages used for memmap
158 [ 0.000000] DMA32 zone: 0 pages reserved
159 [ 0.000000] DMA32 zone: 261632 pages, LIFO batch:63
160 [ 0.000000] software IO TLB: mapped [mem 0xbaffa000-0xbeffa000] (64MB)
161 [ 0.000000] SBI specification v0.2 detected
162 [ 0.000000] SBI implementation ID=0x1 Version=0x9
163 [ 0.000000] SBI v0.2 TIME extension detected
164 [ 0.000000] SBI v0.2 IPI extension detected
165 [ 0.000000] SBI v0.2 RFENCE extension detected
166 [ 0.000000] SBI v0.2 HSM extension detected
167 [ 0.000000] elf_hwcap is 0x112d
168 [ 0.000000] percpu: Embedded 16 pages/cpu s25368 r8192 d31976 u65536
169 [ 0.000000] pcpu-alloc: s25368 r8192 d31976 u65536 alloc=16*4096
170 [ 0.000000] pcpu-alloc: [0] 0
171 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 257544
172 [ 0.000000] Kernel command line: earlycon=sbi root=/dev/piton_sd1
173 [ 0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
174 [ 0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
175 [ 0.000000] Sorting __ex_table...
176 [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
177 [ 0.000000] Memory: 956252K/1046528K available (4357K kernel code, 286K rwdata, 1200K rodata, 168K init, 311K bss, 90276K re)
178 [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
179 [ 0.000000] rcu: Hierarchical RCU implementation.
180 [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=1.
181 [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
182 [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
183 [ 0.000000] NR_IRQS: 0, nr_irqs: 0, preallocated irqs: 0
184 [ 0.000000] plic: mapped 2 interrupts with 1 handlers for 2 contexts.
185 [ 0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [0]
186 [ 0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1ec037a6a, max_idle_ns: 7052723236599 ns
187 [ 0.000138] sched_clock: 64 bits at 520kHz, resolution 1919ns, wraps every 4398046510738ns
188 [ 0.009429] printk: console [hvc0] enabled
189 [ 0.009429] printk: console [hvc0] enabled
190 [ 0.017850] printk: bootconsole [sbi0] disabled
191 [ 0.017850] printk: bootconsole [sbi0] disabled
192 [ 0.028029] Calibrating delay loop (skipped), value calculated using timer frequency.. 1.04 BogoMIPS (lpj=5208)
193 [ 0.038753] pid_max: default: 32768 minimum: 301
194 [ 0.050248] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
195 [ 0.058661] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
196 [ 0.069359] *** VALIDATE tmpfs ***
197 [ 0.089093] *** VALIDATE proc ***
198 [ 0.101135] *** VALIDATE cgroup ***
199 [ 0.105019] *** VALIDATE cgroup2 ***
200 [ 0.144310] rcu: Hierarchical SRCU implementation.
201 [ 0.162836] smp: Bringing up secondary CPUs ...
202 [ 0.167736] smp: Brought up 1 node, 1 CPU
203 [ 0.185982] devtmpfs: initialized
204 [ 0.216237] random: get_random_u32 called from bucket_table_alloc.isra.25+0x4e/0x15c with crng_init=0
205 [ 0.236026] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
206 [ 0.246916] futex hash table entries: 256 (order: 2, 16384 bytes, linear)
207 [ 0.266994] NET: Registered protocol family 16
208 [ 0.763362] clocksource: Switched to clocksource riscv_clocksource
209 [ 0.770122] *** VALIDATE bpf ***
210 [ 0.782837] *** VALIDATE ramfs ***
211 [ 0.829997] NET: Registered protocol family 2
212 [ 0.853577] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes, linear)
213 [ 0.864085] TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear)
214 [ 0.875373] TCP bind hash table entries: 8192 (order: 5, 131072 bytes, linear)
215 [ 0.887958] TCP: Hash tables configured (established 8192 bind 8192)
216 [ 0.902149] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
217 [ 0.909904] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
218 [ 0.924809] NET: Registered protocol family 1
219 [ 0.948605] RPC: Registered named UNIX socket transport module.
220 [ 0.956003] RPC: Registered udp transport module.
221 [ 0.961565] RPC: Registered tcp transport module.
222 [ 0.966432] RPC: Registered tcp NFSv4.1 backchannel transport module.
223 [ 0.987180] Initialise system trusted keyrings
224 [ 0.998953] workingset: timestamp_bits=46 max_order=18 bucket_order=0
225 [ 1.323977] *** VALIDATE nfs ***
226 [ 1.328520] *** VALIDATE nfs4 ***
227 [ 1.334422] NFS: Registering the id_resolver key type
228 [ 1.340148] Key type id_resolver registered
229 [ 1.345280] Key type id_legacy registered
230 [ 1.349820] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
231 [ 1.357610] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
232 [ 1.866909] Key type asymmetric registered
233 [ 1.872460] Asymmetric key parser 'x509' registered
234 [ 1.878750] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
235 [ 1.887480] io scheduler mq-deadline registered
236 [ 1.892864] io scheduler kyber registered
237 [ 3.905595] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
238 [ 3.954332] fff0c2c000.uart: ttyS0 at MMIO 0xfff0c2c000 (irq = 1, base_baud = 4166687) is a 16550
239 [ 4.254794] loop: module loaded
240 [ 4.258269] piton_sd:v1.0 Apr 26, 2019
241 [ 4.258269]
242 [ 4.265170] gpt partition table header:
243 [ 4.265283] signature: 5452415020494645
244 [ 4.269258] revision: 10000
245 [ 4.273746] size: 5c
246 [ 4.276659] crc_header: 26b42404
247 [ 4.278911] reserved: 0
248 [ 4.282730] current lba: 1
249 [ 4.285311] backup lda: 3b723ff
250 [ 4.288093] partition entries lba: 2
251 [ 4.291835] number partition entries: 80
252 [ 4.295529] size partition entries: 80
253 [ 9.473253] piton_sd: piton_sd1
254 [ 10.099676] libphy: Fixed MDIO Bus: probed
255 [ 10.148782] NET: Registered protocol family 10
256 [ 10.183418] Segment Routing with IPv6
257 [ 10.189384] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
258 [ 10.214449] NET: Registered protocol family 17
259 [ 10.227413] Key type dns_resolver registered
260 [ 10.240561] Loading compiled-in X.509 certificates
261 [ 10.465264] EXT4-fs (piton_sd1): mounted filesystem with ordered data mode. Opts: (null)
262 [ 10.475922] VFS: Mounted root (ext4 filesystem) readonly on device 254:1.
263 [ 10.551865] devtmpfs: mounted
264 [ 10.562744] Freeing unused kernel memory: 168K
265 [ 10.567450] This architecture does not have kernel memory protection.
266 [ 10.574688] Run /sbin/init as init process
267 [ 10.578916] with arguments:
268 [ 10.582489] /sbin/init
269 [ 10.585312] with environment:
270 [ 10.588518] HOME=/
271 [ 10.591459] TERM=linux
272 [ 18.154373] systemd[1]: System time before build time, advancing clock.
273 [ 18.565415] systemd[1]: systemd 238 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIB)
274 [ 18.596359] systemd[1]: Detected architecture riscv64.
275
276 Welcome to Debian GNU/Linux buster/sid!
277
278 [ 18.797150] systemd[1]: Set hostname to <openpiton>.
279 [ 31.609244] random: systemd: uninitialized urandom read (16 bytes read)
280 [ 31.630366] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
281 [ OK ] Listening on /dev/initctl Compatibility Named Pipe.
282 [ 31.674820] random: systemd: uninitialized urandom read (16 bytes read)
283 [ 31.806800] systemd[1]: Created slice system-serial\x2dgetty.slice.
284 [ OK ] Created slice system-serial\x2dgetty.slice.
285 [ 31.839855] random: systemd: uninitialized urandom read (16 bytes read)
286 [ 31.850670] systemd[1]: Reached target Slices.
287 [ OK ] Reached target Slices.
288 [ 32.128005] systemd[1]: Reached target Swap.
289 [ OK ] Reached target Swap.
290 [ 32.180337] systemd[1]: Listening on Journal Socket.
291 [ OK ] Listening on Journal Socket.
292 [ 32.416448] systemd[1]: Mounting Kernel Debug File System...
293 Mounting Kernel Debug File System...
294 [ 32.937934] systemd[1]: Starting Remount Root and Kernel File Systems...
295 Starting Remount Root and Kernel File Systems...
296 [ 33.117472] urandom_read: 4 callbacks suppressed
297 [ 33.117645] random: systemd: uninitialized urandom read (16 bytes read)
298 [ 33.214868] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
299 [ OK ] Started Forward Password Requests to Wall Directory Watch.
300 [ 33.366745] random: systemd: uninitialized urandom read (16 bytes read)
301 [ 33.453262] systemd[1]: Listening on Journal Socket (/dev/log).
302 [ OK ] Listening on Journal Socket (/dev/log).
303 [ 33.627020] random: systemd: uninitialized urandom read (16 bytes read)
304 [ 34.029973] systemd[1]: Starting Load Kernel Modules...
305 Starting Load Kernel Modules...
306 [ OK ] Created slice system-getty.slice.
307 [ OK ] Started Dispatch Password Requests to Console Directory Watch.
308 [ OK ] Reached target Local Encrypted Volumes.
309 [ OK ] Reached target Paths.
310 [ OK ] Reached target Remote File Systems.
311 [ OK ] Listening on udev Kernel Socket.
312 [ OK ] Listening on udev Control Socket.
313 [ OK ] Reached target Sockets.
314 Starting udev Coldplug all Devices...
315 Starting Journal Service...
316 [ 37.108761] systemd[1]: Starting Create Static Device Nodes in /dev...
317 Starting Create Static Device Nodes in /dev...
318 [ 37.941929] systemd[1]: Mounted Kernel Debug File System.
319 [ OK ] Mounted Kernel Debug File System.
320 [ 38.463855] systemd[1]: Started Remount Root and Kernel File Systems.
321 [ OK ] Started Remount Root and Kernel File Systems.
322 [ 39.614728] systemd[1]: Started Load Kernel Modules.
323 [ OK ] Started Load Kernel Modules.
324 [ 40.794332] systemd[1]: Starting Apply Kernel Variables...
325 Starting Apply Kernel Variables...
326 [ 41.928338] systemd[1]: Starting Load/Save Random Seed...
327 Starting Load/Save Random Seed...
328 [ 43.494757] systemd[1]: Started Create Static Device Nodes in /dev.
329 [ OK ] Started Create Static Device Nodes in /dev.
330 [ 44.795372] systemd[1]: Starting udev Kernel Device Manager...
331 Starting udev Kernel Device Manager...
332 [ 45.043065] systemd[1]: Reached target Local File Systems (Pre).
333 [ OK ] Reached target Local File Systems (Pre).
334 [ 45.224716] systemd[1]: Reached target Local File Systems.
335 [ OK ] Reached target Local File Systems.
336 [ 46.036491] systemd[1]: Started Apply Kernel Variables.
337 [ OK ] Started Apply Kernel Variables.
338 [ 46.947879] systemd[1]: Started Load/Save Random Seed.
339 [ OK ] Started Load/Save Random Seed.
340 [ 47.910242] systemd[1]: Starting Raise network interfaces...
341 Starting Raise network interfaces...
342 [ 48.119915] systemd[1]: Started Journal Service.
343 [ OK ] Started Journal Service.
344 Starting Flush Journal to Persistent Storage...
345 [ OK ] Started udev Kernel Device Manager.
346 [ 55.369915] systemd-journald[88]: Received request to flush runtime journal from PID 1
347 [ OK ] Started Flush Journal to Persistent Storage.
348 Starting Create Volatile Files and Directories...
349 [ OK ] Started Raise network interfaces.
350 [ OK ] Reached target Network.
351 [FAILED] Failed to start Create Volatile Files and Directories.
352 See 'systemctl status systemd-tmpfiles-setup.service' for details.
353 Starting Update UTMP about System Boot/Shutdown...
354 [FAILED] Failed to start Network Time Synchronization.
355 See 'systemctl status systemd-timesyncd.service' for details.
356 [ OK ] Reached target System Time Synchronized.
357 [ OK ] Stopped Network Time Synchronization.
358 [ OK ] Started udev Coldplug all Devices.
359 [ OK ] Found device /dev/hvc0.
360 [ OK ] Reached target System Initialization.
361 [ OK ] Reached target Basic System.
362 [ OK ] Started Regular background program processing daemon.
363 [ OK ] Started Daily Cleanup of Temporary Directories.
364 Starting Permit User Sessions...
365 [ OK ] Started Daily apt download activities.
366 [ OK ] Started Daily apt upgrade and clean activities.
367 [ OK ] Reached target Timers.
368 [ OK ] Started Permit User Sessions.
369 [ OK ] Started Serial Getty on hvc0.
370 [ OK ] Reached target Login Prompts.
371 [ OK ] Reached target Multi-User System.
372 [ OK ] Reached target Graphical Interface.
373
374 Debian GNU/Linux buster/sid openpiton hvc0
375
376 openpiton login: