|  | 
 | 		U-Boot for ARM Integrator Development Platforms | 
 |  | 
 | 			Peter Pearse, ARM Ltd. | 
 | 			peter.pearse@arm.com | 
 | 			     www.arm.com | 
 |  | 
 | Manuals available from :- | 
 | http://www.arm.com/products/DevTools/Hardware_Platforms.html | 
 |  | 
 | Overview : | 
 | -------- | 
 | There are two Integrator variants - Integrator/AP and Integrator/CP. | 
 | Each may be fitted with a variety of core modules (CMs). | 
 | Each CM consists of a ARM processor core and associated hardware e.g | 
 | 	FPGA implementing various controllers and/or register | 
 | 	SSRAM | 
 | 	SDRAM | 
 | 	RAM controllers | 
 | 	clock generators etc. | 
 | CMs may be fitted with varying amounts of SDRAM using a DIMM socket. | 
 |  | 
 | Boot Methods : | 
 | ------------ | 
 | Integrator platforms can be configured to use U-Boot in at least three ways :- | 
 | a) Run ARM boot monitor, manually run U-Boot image from flash | 
 | b) Run ARM boot monitor, automatically run U-Boot image from flash | 
 | c) Run U-Boot image direct from flash. | 
 |  | 
 | In cases a) and b) the ARM boot monitor will have configured the CM and mapped | 
 | writeable memory to 0x00000000 in the Integrator address space. | 
 | U-Boot has to carry out minimal configration before standard code is run. | 
 |  | 
 | In case c) it may be necessary for U-Boot to perform CM dependent initialization. | 
 |  | 
 | Configuring U-Boot : | 
 | ------------------ | 
 | 	The makefile contains targets for Integrator platforms of both types | 
 | fitted with all current variants of CM. If these targets are to be used with | 
 | boot process c) above then CONFIG_INIT_CRITICAL may need to be defined to ensure | 
 | that the CM is correctly configured. | 
 |  | 
 | 	There are also targets independent of CM. These may not be suitable for | 
 | boot process c) above. They have been preserved for backward compatibility with | 
 | existing build processes. | 
 |  | 
 | Code Hierarchy Applied : | 
 | ---------------------- | 
 | Code specific to initialization of a particular ARM processor has been placed in | 
 | cpu/arm<>/start.S so that it may be used by other boards. | 
 |  | 
 | However, to avoid duplicating code through all processor files, a generic core | 
 | for ARM Integrator CMs has been added | 
 |  | 
 | 	arch/arm/cpu/arm_intcm | 
 |  | 
 | Otherwise. for example,  the standard CM reset via the CM control register would | 
 | need placing in each CM processor file...... | 
 |  | 
 | Code specific to the initialization of the CM, rather than the cpu, and initialization | 
 | of the Integrator board itself, has been placed in | 
 |  | 
 | 	board/integrator<>/platform.S | 
 | 	board/integrator<>/integrator<>.c | 
 |  | 
 | Targets | 
 | ======= | 
 | The U-Boot make targets map to the available core modules as below. | 
 |  | 
 | Integrator/AP is no longer available from ARM. | 
 | Core modules marked ** are also no longer available. | 
 |  | 
 | ap720t_config		** CM720T | 
 | ap920t_config		** CM920T | 
 | ap926ejs_config	Integrator Core Module for ARM926EJ-STM | 
 | ap946es_config		Integrator Core Module for ARM946E-STM | 
 | cp920t_config		** CM920T | 
 | cp926ejs_config	Integrator Core Module for ARM926EJ-STM | 
 | cp946es_config		Integrator Core Module for ARM946E-STM | 
 | cp1136_config		Integrator Core Module ARM1136JF-S  TM | 
 |  | 
 | The final groups of targets are for core modules where no explicit cpu | 
 | code has yet been added to U-Boot i.e. they all use the same U-Boot binary | 
 | using the generic "arm_intcm" core: | 
 |  | 
 | ap966_config			Integrator Core Module for ARM966E-S TM | 
 | ap922_config			Integrator Core Module for ARM922T TM with ETM | 
 | ap922_XA10_config		Integrator Core Module for ARM922T using Altera Excalibur | 
 | ap7_config			** CM7TDMI | 
 | integratorap_config | 
 | ap_config | 
 |  | 
 |  | 
 | cp966_config			Integrator Core Module for ARM966E-S TM | 
 | cp922_config			Integrator Core Module for ARM922T TM with ETM | 
 | cp922_XA10_config		Integrator Core Module for ARM922T using Altera Excalibur | 
 | cp1026_config			Integrator Core Module ARM1026EJ-S TM | 
 | integratorcp_config | 
 | cp_config | 
 |  | 
 | The Makefile targets call board/integrator<>/split_by_variant.sh | 
 | to configure various defines in include/configs/integrator<>.h | 
 | to indicate the core module & core configuration and ensure that | 
 | board/integrator<>/u-boot.lds loads the cpu object first in the U-Boot image. | 
 |  | 
 | ********************************* | 
 | Because of this mechanism | 
 | > make clean | 
 | must be run before each change in configuration | 
 | ********************************* |