Wolfgang Denk | adf20a1 | 2005-09-25 01:48:28 +0200 | [diff] [blame] | 1 | |
| 2 | U-Boot for ARM Integrator Development Platforms |
| 3 | |
| 4 | Peter Pearse, ARM Ltd. |
| 5 | peter.pearse@arm.com |
| 6 | www.arm.com |
| 7 | |
| 8 | Manuals available from :- |
| 9 | http://www.arm.com/products/DevTools/Hardware_Platforms.html |
| 10 | |
| 11 | Overview : |
| 12 | -------- |
| 13 | There are two Integrator variants - Integrator/AP and Integrator/CP. |
| 14 | Each may be fitted with a variety of core modules (CMs). |
Wolfgang Denk | c856ccc | 2005-09-25 02:00:47 +0200 | [diff] [blame] | 15 | Each CM consists of a ARM processor core and associated hardware e.g |
Wolfgang Denk | adf20a1 | 2005-09-25 01:48:28 +0200 | [diff] [blame] | 16 | FPGA implementing various controllers and/or register |
| 17 | SSRAM |
| 18 | SDRAM |
| 19 | RAM controllers |
| 20 | clock generators etc. |
Wolfgang Denk | 03f9ba3 | 2005-10-04 23:10:28 +0200 | [diff] [blame] | 21 | CMs may be fitted with varying amounts of SDRAM using a DIMM socket. |
Wolfgang Denk | adf20a1 | 2005-09-25 01:48:28 +0200 | [diff] [blame] | 22 | |
| 23 | Boot Methods : |
| 24 | ------------ |
| 25 | Integrator platforms can be configured to use U-Boot in at least three ways :- |
| 26 | a) Run ARM boot monitor, manually run U-Boot image from flash |
| 27 | b) Run ARM boot monitor, automatically run U-Boot image from flash |
| 28 | c) Run U-Boot image direct from flash. |
| 29 | |
Wolfgang Denk | c856ccc | 2005-09-25 02:00:47 +0200 | [diff] [blame] | 30 | In cases a) and b) the ARM boot monitor will have configured the CM and mapped |
Wolfgang Denk | adf20a1 | 2005-09-25 01:48:28 +0200 | [diff] [blame] | 31 | writeable memory to 0x00000000 in the Integrator address space. |
| 32 | U-Boot has to carry out minimal configration before standard code is run. |
| 33 | |
| 34 | In case c) it may be necessary for U-Boot to perform CM dependent initialization. |
| 35 | |
| 36 | Configuring U-Boot : |
Wolfgang Denk | c856ccc | 2005-09-25 02:00:47 +0200 | [diff] [blame] | 37 | ------------------ |
Wolfgang Denk | adf20a1 | 2005-09-25 01:48:28 +0200 | [diff] [blame] | 38 | The makefile contains targets for Integrator platforms of both types |
Bin Meng | ccd035a | 2018-11-22 11:26:26 +0100 | [diff] [blame] | 39 | fitted with all current variants of CM. |
Wolfgang Denk | adf20a1 | 2005-09-25 01:48:28 +0200 | [diff] [blame] | 40 | |
| 41 | There are also targets independent of CM. These may not be suitable for |
Wolfgang Denk | c856ccc | 2005-09-25 02:00:47 +0200 | [diff] [blame] | 42 | boot process c) above. They have been preserved for backward compatibility with |
Wolfgang Denk | adf20a1 | 2005-09-25 01:48:28 +0200 | [diff] [blame] | 43 | existing build processes. |
| 44 | |
| 45 | Code Hierarchy Applied : |
| 46 | ---------------------- |
Wolfgang Denk | c856ccc | 2005-09-25 02:00:47 +0200 | [diff] [blame] | 47 | Code specific to initialization of a particular ARM processor has been placed in |
Wolfgang Denk | adf20a1 | 2005-09-25 01:48:28 +0200 | [diff] [blame] | 48 | cpu/arm<>/start.S so that it may be used by other boards. |
| 49 | |
Wolfgang Denk | c856ccc | 2005-09-25 02:00:47 +0200 | [diff] [blame] | 50 | However, to avoid duplicating code through all processor files, a generic core |
Wolfgang Denk | adf20a1 | 2005-09-25 01:48:28 +0200 | [diff] [blame] | 51 | for ARM Integrator CMs has been added |
| 52 | |
Peter Tyser | f7c6737 | 2010-04-12 22:28:11 -0500 | [diff] [blame] | 53 | arch/arm/cpu/arm_intcm |
Wolfgang Denk | adf20a1 | 2005-09-25 01:48:28 +0200 | [diff] [blame] | 54 | |
| 55 | Otherwise. for example, the standard CM reset via the CM control register would |
| 56 | need placing in each CM processor file...... |
| 57 | |
| 58 | Code specific to the initialization of the CM, rather than the cpu, and initialization |
Wolfgang Denk | c856ccc | 2005-09-25 02:00:47 +0200 | [diff] [blame] | 59 | of the Integrator board itself, has been placed in |
Wolfgang Denk | adf20a1 | 2005-09-25 01:48:28 +0200 | [diff] [blame] | 60 | |
Wolfgang Denk | c856ccc | 2005-09-25 02:00:47 +0200 | [diff] [blame] | 61 | board/integrator<>/platform.S |
Wolfgang Denk | adf20a1 | 2005-09-25 01:48:28 +0200 | [diff] [blame] | 62 | board/integrator<>/integrator<>.c |
Wolfgang Denk | 7f88a5e | 2005-10-06 17:08:18 +0200 | [diff] [blame] | 63 | |
| 64 | Targets |
| 65 | ======= |
| 66 | The U-Boot make targets map to the available core modules as below. |
| 67 | |
| 68 | Integrator/AP is no longer available from ARM. |
| 69 | Core modules marked ** are also no longer available. |
| 70 | |
| 71 | ap720t_config ** CM720T |
| 72 | ap920t_config ** CM920T |
| 73 | ap926ejs_config Integrator Core Module for ARM926EJ-STM |
| 74 | ap946es_config Integrator Core Module for ARM946E-STM |
| 75 | cp920t_config ** CM920T |
| 76 | cp926ejs_config Integrator Core Module for ARM926EJ-STM |
| 77 | cp946es_config Integrator Core Module for ARM946E-STM |
| 78 | cp1136_config Integrator Core Module ARM1136JF-S TM |
| 79 | |
| 80 | The final groups of targets are for core modules where no explicit cpu |
| 81 | code has yet been added to U-Boot i.e. they all use the same U-Boot binary |
| 82 | using the generic "arm_intcm" core: |
| 83 | |
| 84 | ap966_config Integrator Core Module for ARM966E-S TM |
| 85 | ap922_config Integrator Core Module for ARM922T TM with ETM |
| 86 | ap922_XA10_config Integrator Core Module for ARM922T using Altera Excalibur |
Wolfgang Denk | a1be476 | 2008-05-20 16:00:29 +0200 | [diff] [blame] | 87 | ap7_config ** CM7TDMI |
Wolfgang Denk | 7f88a5e | 2005-10-06 17:08:18 +0200 | [diff] [blame] | 88 | integratorap_config |
| 89 | ap_config |
| 90 | |
| 91 | |
Wolfgang Denk | a1be476 | 2008-05-20 16:00:29 +0200 | [diff] [blame] | 92 | cp966_config Integrator Core Module for ARM966E-S TM |
Wolfgang Denk | 7f88a5e | 2005-10-06 17:08:18 +0200 | [diff] [blame] | 93 | cp922_config Integrator Core Module for ARM922T TM with ETM |
| 94 | cp922_XA10_config Integrator Core Module for ARM922T using Altera Excalibur |
| 95 | cp1026_config Integrator Core Module ARM1026EJ-S TM |
| 96 | integratorcp_config |
| 97 | cp_config |
| 98 | |
| 99 | The Makefile targets call board/integrator<>/split_by_variant.sh |
| 100 | to configure various defines in include/configs/integrator<>.h |
| 101 | to indicate the core module & core configuration and ensure that |
| 102 | board/integrator<>/u-boot.lds loads the cpu object first in the U-Boot image. |
| 103 | |
| 104 | ********************************* |
| 105 | Because of this mechanism |
| 106 | > make clean |
| 107 | must be run before each change in configuration |
| 108 | ********************************* |