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