mirror of
				https://source.denx.de/u-boot/u-boot.git
				synced 2025-11-03 18:01:41 +01:00 
			
		
		
		
	1. Misalignment will be found in the doc/README.srio-pcie-boot-corenet file when the tabs are set to 8 characters. And the standard for u-boot should be 8 character tabs! So this issue should be amended. 2. Add a NOTE for the ENV parameters of the Slave. Signed-off-by: Liu Gang <Gang.Liu@freescale.com> Signed-off-by: Andy Fleming <afleming@freescale.com>
		
			
				
	
	
		
			119 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
---------------------------------------
 | 
						|
SRIO and PCIE Boot on Corenet Platforms
 | 
						|
---------------------------------------
 | 
						|
 | 
						|
For some PowerPC processors with SRIO or PCIE interface, boot location can be
 | 
						|
configured to SRIO or PCIE by RCW. The processor booting from SRIO or PCIE 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 or PCIE 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 or PCIE configuration.
 | 
						|
 | 
						|
Environment of the SRIO or PCIE boot:
 | 
						|
	a) Master and slave can be SOCs in one board or SOCs in separate boards.
 | 
						|
	b) They are connected with SRIO or PCIE links, whether 1x, 2x 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 or PCIE boot port, set
 | 
						|
	   the boot location to SRIO or PCIE, and holdoff all the cores.
 | 
						|
 | 
						|
	-----------       -----------             -----------
 | 
						|
	|         |       |         |             |         |
 | 
						|
	|         |       |         |             |         |
 | 
						|
	| NorFlash|<----->| Master  |SRIO or PCIE |  Slave  |<---->[EEPROM]
 | 
						|
	|         |       |         |<===========>|         |
 | 
						|
	|         |       |         |             |         |
 | 
						|
	-----------       -----------             -----------
 | 
						|
 | 
						|
The example based on P4080DS platform:
 | 
						|
	Two P4080DS platforms can be used to implement the boot from SRIO or PCIE.
 | 
						|
	Their SRIO or PCIE ports 1 will be connected directly and will be used for
 | 
						|
	the boot from SRIO or PCIE.
 | 
						|
 | 
						|
	1. Slave's RCW example for boot from SRIO port 1 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
 | 
						|
 | 
						|
	2. Slave's RCW example for boot from PCIE port 1 and all cores in holdoff.
 | 
						|
		00000000: aa55 aa55 010e 0100 0c58 0000 0000 0000
 | 
						|
		00000010: 1818 1818 0000 8888 1440 4000 0000 2000
 | 
						|
		00000020: f040 0000 0100 0000 0020 0000 0000 0000
 | 
						|
		00000030: 0000 0000 0083 0000 0000 0000 0000 0000
 | 
						|
		00000040: 0000 0000 0000 0000 0813 8040 547e ffc9
 | 
						|
 | 
						|
	3. Sequence in Step by Step.
 | 
						|
		a) Update RCW for slave with boot from SRIO or PCIE port 1 configuration.
 | 
						|
		b) Program slave's U-Boot image, UCode, and ENV parameters into master's
 | 
						|
		   NorFlash.
 | 
						|
		c) Set environment variable "bootmaster" to "SRIO1" or "PCIE1" and save
 | 
						|
		   environment for master.
 | 
						|
					setenv bootmaster SRIO1
 | 
						|
				or
 | 
						|
					setenv bootmaster PCIE1
 | 
						|
					saveenv
 | 
						|
		d) Restart up master and it will boot up normally from its NorFlash.
 | 
						|
		   Then, it will finish necessary configurations for slave's boot from
 | 
						|
		   SRIO or PCIE port 1.
 | 
						|
		e) Master will set inbound SRIO or PCIE windows covered slave's U-Boot
 | 
						|
		   image stored in master's NorFlash.
 | 
						|
		f) Master will set an inbound SRIO or PCIE window covered slave's UCode
 | 
						|
		   and ENV stored in master's NorFlash.
 | 
						|
		g) Master will set outbound SRIO or PCIE  windows in order to configure
 | 
						|
		   slave's registers for the core's releasing.
 | 
						|
		h) Since 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. In the
 | 
						|
		   startup phase of the slave from SRIO or PCIE, 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 or PCIE port 1 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 or PCIE port 1 for
 | 
						|
		   UCode and ENV.
 | 
						|
 | 
						|
How to use this feature:
 | 
						|
	To use this feature, you need to focus those points.
 | 
						|
 | 
						|
	1. Slave's RCW with SRIO or PCIE boot configurations, and all cores in holdoff
 | 
						|
	   configurations.
 | 
						|
	   Please refer to the examples given above.
 | 
						|
 | 
						|
	2. U-Boot image's compilation.
 | 
						|
	   For master, U-Boot image should be generated normally.
 | 
						|
 | 
						|
	   For example, master U-Boot image used on P4080DS should be compiled with
 | 
						|
 | 
						|
				make P4080DS_config.
 | 
						|
 | 
						|
	   For slave, U-Boot image should be generated specifically by
 | 
						|
 | 
						|
				make xxxx_SRIO_PCIE_BOOT_config.
 | 
						|
 | 
						|
	   For example, slave U-Boot image used on P4080DS should be compiled with
 | 
						|
 | 
						|
				make P4080DS_SRIO_PCIE_BOOT_config.
 | 
						|
 | 
						|
	3. Necessary modifications based on a specific environment.
 | 
						|
	   For a specific environment, 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.
 | 
						|
 | 
						|
	4. Set and save the environment variable "bootmaster" with "SRIO1", "SRIO2"
 | 
						|
	   or "PCIE1", "PCIE2", "PCIE3" for master, and then restart it in order to
 | 
						|
	   perform the role as a master for boot from SRIO or PCIE.
 | 
						|
 | 
						|
NOTE: When the Slave's ENV parameters are stored in Master's NorFlash,
 | 
						|
      it can fetch them through PCIE or SRIO interface. But the ENV
 | 
						|
      parameters can not be modified by "saveenv" or other commands under
 | 
						|
      the Slave's u-boot environment, because the Slave can not erase,
 | 
						|
      write Master's NorFlash by PCIE or SRIO link.
 |