aboutsummaryrefslogtreecommitdiff
path: root/doc/README.srio-boot-corenet
blob: 56b094c9a27db4289d6444784025706b6bbd783b (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
------------------------------
SRIO Boot on Corenet Platforms
------------------------------

For some PowerPC processors with SRIO interface, boot location can be configured
to SRIO by RCW. The processor booting from SRIO can do without flash for u-boot
image, ucode and ENV. All the images can be fetched from another processor's
memory space by SRIO link connected between them.

This document describes the processes based on an example implemented on P4080DS
platforms and a RCW example with boot from SRIO configuration.

Environment of the SRIO boot:
	a) Master and slave can be SOCs in one board or SOCs in separate boards.
	b) They are connected with SRIO links, whether 1x or 4x, and directly or
	   through switch system.
	c) Only Master has NorFlash for booting, and all the Master's and Slave's
	   U-Boot images, UCodes will be stored in this flash.
	d) Slave has its own EEPROM for RCW and PBI.
	e) Slave's RCW should configure the SerDes for SRIO boot port, set the boot
	   location to SRIO, and holdoff all the cores if needed.

	----------        -----------             -----------
	|		  |       |         |             |         |
	|		  |       |         |             |         |
	| NorFlash|<----->| Master  |    SRIO     |  Slave  |<---->[EEPROM]
	|		  |       |         |<===========>|         |
	|		  |       |         |             |         |
	----------        -----------             -----------

The example based on P4080DS platform:
	Two P4080DS platforms can be used to implement the boot from SRIO. Their SRIO
	ports 0 will be connected directly and will be used for the boot from SRIO.

	1. Slave's RCW example for boot from SRIO port 0 and core 0 not in holdoff.
		00000000: aa55 aa55 010e 0100 0c58 0000 0000 0000
		00000010: 1818 1818 0000 8888 7440 4000 0000 2000
		00000020: f400 0000 0100 0000 0000 0000 0000 0000
		00000030: 0000 0000 0083 0000 0000 0000 0000 0000
		00000040: 0000 0000 0000 0000 0813 8040 698b 93fe

	2. Slave's RCW example for boot from SRIO port 0 and all cores in holdoff.
		00000000: aa55 aa55 010e 0100 0c58 0000 0000 0000
		00000010: 1818 1818 0000 8888 7440 4000 0000 2000
		00000020: f440 0000 0100 0000 0000 0000 0000 0000
		00000030: 0000 0000 0083 0000 0000 0000 0000 0000
		00000040: 0000 0000 0000 0000 0813 8040 063c 778f

	3. Sequence in Step by Step.
		a) Update RCW for slave with boot from SRIO port 0 configuration.
		b) Program slave's U-Boot image, UCode, and ENV parameters into master's
		   NorFlash.
		c) Start up master and it will boot up normally from its NorFlash.
		   Then, it will finish necessary configurations for slave's boot from
		   SRIO port 0.
		d) Master will set inbound SRIO windows covered slave's U-Boot image stored
		   in master's NorFlash.
		e) Master will set an inbound SRIO window covered slave's UCode stored in
		   master's NorFlash.
		f) Master will set an inbound SRIO window covered slave's ENV stored in
		   master's NorFlash.
		g) If need to release slave's core, master will set outbound SRIO windows
		   in order to configure slave's registers for the core's releasing.
		h) If all cores of slave in holdoff, slave should be powered on before all
		   the above master's steps, and wait to be released by master. If not all
		   cores in holdoff, that means core 0 will start up normally, slave should
		   be powered on after all the above master's steps. In the startup phase
		   of the slave from SRIO, it will finish some necessary configurations.
		i) Slave will set a specific TLB entry for the boot process.
		j) Slave will set a LAW entry with the TargetID SRIO port 0 for the boot.
		k) Slave will set a specific TLB entry in order to fetch UCode and ENV
		   from master.
		l) Slave will set a LAW entry with the TargetID SRIO port 0 for UCode and ENV.

How to use this feature:
	To use this feature, you need to focus three points.

	1. Slave's RCW with SRIO boot configurations, and all cores in holdoff
	   configurations if needed.
	   Please refer to the examples given above.

	2. U-Boot image's compilation.
		For master, U-Boot image should be generated specifically by

				make xxxx_SRIOBOOT_MASTER_config.

		For example, master U-Boot image used on P4080DS should be compiled with

				make P4080DS_SRIOBOOT_MASTER_config.

		For slave, U-Boot image should be generated specifically by

				make xxxx_SRIOBOOT_SLAVE_config.

		For example, slave U-Boot image used on P4080DS should be compiled with

				make P4080DS_SRIOBOOT_SLAVE_config.

	3. Necessary modifications based on a specific environment.
		For a specific environment, the SRIO port for boot, the addresses of the
		slave's U-Boot image, UCode, ENV stored in master's NorFlash, and any other
		configurations can be modified in the file:
					include/configs/corenet_ds.h.