blob: 3118da9e06ef1a97d793c6a4ee2a70d7184c4536 [file] [log] [blame]
Niklaus Gigere62b4f62007-07-27 11:25:31 +02001HCU5 configuration details and startup sequence
2
3(C) Copyright 2007 Netstal Maschinen AG
4 Niklaus Giger (Niklaus.Giger@netstal.com)
5
6TODO:
7-----
8- Fix error: Waiting for PHY auto negotiation to complete..... TIMEOUT !
9 - Does not occur if both EMAC are connected
10- Fix RTS/CTS problem (HW?)
11 CONFIG_SERIAL_MULTI/CONFIG_SERIAL_SOFTWARE_FIFO hangs after
12 Switching to interrupt driven serial input mode
13- Make vxWorks start from u-boot. Possible reasons
14 - Does vxWorks need an entry for the Machine Check interrupt like this
15 tlbentry( 0x40000000, SZ_256M, 0, 1, AC_R|AC_W|AC_X|SA_G|SA_I ) ?
16
17Caveats:
18--------
19Errata CHIP_8: Incorrect Write to DDR SDRAM. (was not applied to sequoia.c)
20see hcu5.c.
21
22
23Memory Bank 0 -- Flash chip
24---------------------------
25
260xfff00000 - 0xffffffff
27
28The flash chip is really only 512Kbytes, but the high address bit of
29the 1Meg region is ignored, so the flash is replicated through the
30region. Thus, this is consistent with a flash base address 0xfff80000.
31
32The placement at the end is to be consistent with reset behavior,
33where the processor itself initially uses this bus to load the branch
34vector and start running.
35
36On-Chip Memory
37--------------
38
390xe0010000- 0xe0013fff CFG_OCM_BASE
40The 440EPx includes a 16K on-chip memory that can be placed however
41software chooses.
42
43Internal Peripherals
44--------------------
45
460xef600300 - 0xef6008ff
47
48These are scattered various peripherals internal to the PPC440EPX
49chip.
50
51Chip-Select 2: Flash Memory
52---------------------------
53
54Not used
55
56Chip-Select 3: CAN Interface
57----------------------------
580xc800000: 2 Intel 82527 CAN-Controller
59
60
61Chip-Select 4: IMC-bus standard
62-------------------------------
63
640xcc00000: Netstal specific IO-Bus
65
66
67Chip-Select 5: IMC-bus fast (inactive)
68--------------------------------------
69
700xce00000: Netstal specific IO-Bus (fast, but not yet used)
71
72
73Memory Bank 1 -- DDR2
74-------------------------------------
75
760x00000000 - 0xfffffff # Default 256 MB
77
78PCI ??
79
80USB ??
81Only USB_STORAGE is enabled to load vxWorks
82from a memory stick.
83
84System-LEDs ??? (Analog zu HCU4 ???)
85
86Startup sequence
87----------------
88
89(cpu/ppc4xx/resetvec.S)
90depending on configs option
91call _start_440 _start_pci oder _start
92
93(cpu/ppc4xx/start.S)
94
95_start_440:
96 initialize register like
97 CCR0
98 debug
99 setup interrupt vectors
100 configure cache regions
101 clear and setup TLB
102 enable internal RAM
103 jump start_ram
104 which in turn will jump to start
105_start:
106 Clear and set up some registers.
107 Debug setup
108 Setup the internal SRAM
109 Setup the stack in internal SRAM
110 setup stack pointer (r1)
111 setup GOT
112 call cpu_init_f /* run low-level CPU init code (from Flash) */
113
114 call cpu_init_f
115 board_init_f: (lib_ppc\board.c)
116 init_sequence defines a list of function to be called
117 board_early_init_f: (board/netstal/hcu5/hcu5.c)
118 We are using Bootstrap-Option A
119 if CPR0_ICFG_RLI_MASK == 0 then set some registers and reboot
120 Setup the GPIO pins
121 Setup the interrupt controller polarities, triggers, etc.
122 Ethernet, PCI, USB enable
123 setup BOOT FLASH (Chip timing)
124 init_baudrate,
125 serial_init
126 checkcpu
127 misc_init_f #ifdef
128 init_func_i2c #ifdef
129 post_init_f #ifdef
130 init_func_ram -> calls init_dram board/netstal/hcu5/sdram.c
131 (EYE function removed!!)
132 test_dram call
133
134 * Reserve memory at end of RAM for (top down in that order):
135 * - kernel log buffer
136 * - protected RAM
137 * - LCD framebuffer
138 * - monitor code
139 * - board info struct
140 Save local variables to board info struct
141 call relocate_code() does not return
142 relocate_code: (cpu/ppc4xx/start.S)
143-------------------------------------------------------
144From now on our copy is in RAM and we will run from there,
145 starting with board_init_r
146-------------------------------------------------------
147 board_init_r: (lib_ppc\board.c)
148 setup bd function pointers
149 trap_init
150 flash_init: (board/netstal/hcu5/flash.c)
151 /* setup for u-boot erase, update */
152 setup bd flash info
153 cpu_init_r: (cpu/ppc4xx/cpu_init.c)
154 peripheral chip select in using defines like
155 CFG_EBC_PB0A, CFG_EBC_PB0C from hcu5.h
156 mem_malloc_init
157 malloc_bin_reloc
158 spi_init (r or f)??? (CFG_ENV_IS_IN_EEPROM)
159 env_relocated
160 misc_init_r(bd): (board/netstal/hcu5.c)
161 ethaddr mit serial number ergänzen
162 Then we will somehow go into the command loop
163
164Most of the HW specific code for the HCU5 may be found in
165include/configs/hcu5.h
166board/netstal/hcu5/*
167cpu/ppc4xx/*
168lib_ppc/*
169include/ppc440.h
170
171Drivers for serial etc are found under drivers/
172
173Don't ask question if you did not look at the README !!
174Most CFG_* and CONFIG_* switches are mentioned/explained there.