|  |  | 
|  | 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 | 
|  |  | 
|  | 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 | 
|  | ********************************* |