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