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