Blame view

doc/README.mpc85xx 5.87 KB
d41ce506b   Eric Lee   Initial Release, ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
  External Debug Support
  ----------------------
  
  Freescale's e500v1 and e500v2 cores (used in mpc85xx chips) have some
  restrictions on external debugging (JTAG).  In particular, for the debugger to
  be able to receive control after a single step or breakpoint:
  	- MSR[DE] must be set
  	- A valid opcode must be fetchable, through the MMU, from the debug
  	  exception vector (IVPR + IVOR15).
  
  To maximize the time during which this requirement is met, U-Boot sets MSR[DE]
  immediately on entry and keeps it set. It also uses a temporary TLB to keep a
  mapping to a valid opcode at the debug exception vector, even if we normally
  don't support exception vectors being used that early, and that's not the area
  where U-Boot currently executes from.
  
  Note that there may still be some small windows where debugging will not work,
  such as in between updating IVPR and IVOR15.
  
  Config Switches:
  ----------------
  
  Please refer README section "MPC85xx External Debug Support"
  
  Major Config Switches during various boot Modes
  ----------------------------------------------
  
  NOR boot
  		!defined(CONFIG_SYS_RAMBOOT) && !defined(CONFIG_SPL)
  NOR boot Secure
  		!defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SECURE_BOOT)
  RAMBOOT(SD, SPI & NAND boot)
  		 defined(CONFIG_SYS_RAMBOOT)
  RAMBOOT Secure (SD, SPI & NAND)
  		 defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SECURE_BOOT)
  NAND SPL BOOT
  		 defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_NAND_SPL)
  
  
  TLB Entries during u-boot execution
  -----------------------------------
  
  Note: Sequence number is in order of execution
  
  A) defined(CONFIG_SYS_RAMBOOT) i.e. SD, SPI, NAND RAMBOOT & NAND_SPL boot
  
     1) TLB entry to overcome e500 v1/v2 debug restriction
         Location	  : Label "_start_e500"
         TLB Entry  : CONFIG_SYS_PPC_E500_DEBUG_TLB
         EPN -->RPN : CONFIG_SYS_MONITOR_BASE --> CONFIG_SYS_MONITOR_BASE
         Properties : 256K, AS0, I, IPROT
  
     2) TLB entry for working in AS1
         Location	  : Label "create_init_ram_area"
         TLB Entry  : 15
         EPN -->RPN : CONFIG_SYS_MONITOR_BASE --> CONFIG_SYS_MONITOR_BASE
         Properties : 1M, AS1, I, G, IPROT
  
     3) TLB entry for the stack during AS1
         Location	  : Lable "create_init_ram_area"
         TLB Entry  : 14
         EPN -->RPN : CONFIG_SYS_INIT_RAM_ADDR --> CONFIG_SYS_INIT_RAM_ADDR
         Properties : 16K, AS1, IPROT
  
     4) TLB entry for CCSRBAR during AS1 execution
         Location	  : cpu_init_early_f
         TLB Entry  : 13
         EPN -->RPN : CONFIG_SYS_CCSRBAR --> CONFIG_SYS_CCSRBAR
         Properties : 1M, AS1, I, G
  
     5) Invalidate unproctected TLB Entries
         Location	  : cpu_init_early_f
         Invalidated: 13
  
     6) Create TLB entries as per boards/freescale/<board>/tlb.c
         Location	  : cpu_init_early_f --> init_tlbs()
         Properties : ..., AS0, ...
        Please note It can overwrites previous TLB Entries.
  
     7) Disable TLB Entries of AS1
         Location	  : cpu_init_f --> disable_tlb()
         Disable	  : 15, 14
  
     8) Update Flash's TLB entry
         Location	  : Board_init_r
         TLB entry  : Search from TLB entries
         EPN -->RPN : CONFIG_SYS_FLASH_BASE --> CONFIG_SYS_FLASH_BASE_PHYS
         Properties : Board specific size, AS0, I, G, IPROT
  
  
  B) !defined(CONFIG_SYS_RAMBOOT) i.e. NOR boot
  
     1) TLB entry to overcome e500 v1/v2 debug restriction
         Location	  : Label "_start_e500"
         TLB Entry  : CONFIG_SYS_PPC_E500_DEBUG_TLB
  #if defined(CONFIG_SECURE_BOOT)
         EPN -->RPN : CONFIG_SYS_MONITOR_BASE --> CONFIG_SYS_PBI_FLASH_WINDOW
         Properties : 1M, AS1, I, G, IPROT
  #else
         EPN -->RPN : CONFIG_SYS_MONITOR_BASE & 0xffc00000 --> 0xffc00000
         Properties : 4M, AS0, I, G, IPROT
  #endif
  
     2) TLB entry for working in AS1
         Location	  : Label "create_init_ram_area"
         TLB Entry  : 15
  #if defined(CONFIG_SECURE_BOOT)
         EPN -->RPN : CONFIG_SYS_MONITOR_BASE --> CONFIG_SYS_PBI_FLASH_WINDOW
         Properties : 1M, AS1, I, G, IPROT
  #else
         EPN -->RPN : CONFIG_SYS_MONITOR_BASE & 0xffc00000 --> 0xffc00000
         Properties : 4M, AS1, I, G, IPROT
  #endif
  
     3) TLB entry for the stack during AS1
         Location	  : Lable "create_init_ram_area"
         TLB Entry  : 14
         EPN -->RPN : CONFIG_SYS_INIT_RAM_ADDR --> CONFIG_SYS_INIT_RAM_ADDR
         Properties : 16K, AS1, IPROT
  
     4) TLB entry for CCSRBAR during AS1 execution
         Location	  : cpu_init_early_f
         TLB Entry  : 13
         EPN -->RPN : CONFIG_SYS_CCSRBAR --> CONFIG_SYS_CCSRBAR
         Properties : 1M, AS1, I, G
  
     5) TLB entry for Errata workaround CONFIG_SYS_FSL_ERRATUM_IFC_A003399
         Location	  : cpu_init_early_f
         TLB Entry  : 9
         EPN -->RPN : SRAM_BASE_ADDR --> SRAM_BASE_ADDR
         Properties : 1M, AS1, I
  
     6) CONFIG_SYS_FSL_ERRATUM_IFC_A003399 Adjust flash's phys addr
         Location	  : cpu_init_early_f --> setup_ifc
         TLB Entry  : Get Flash TLB
         EPN -->RPN : Adjusted flash_phys --> Adjusted flash_phys
         Properties : 4M, AS1, I, G, IPROT
  
     7) CONFIG_SYS_FSL_ERRATUM_IFC_A003399: E500 v1,v2 debug restriction
         Location	  : cpu_init_early_f --> setup_ifc
         TLB Entry  : CONFIG_SYS_PPC_E500_DEBUG_TLB
         EPN -->RPN : Adjusted flash_phys --> Adjusted flash_phys
         Properties : 4M, AS0, I, G, IPROT
  
     8) Invalidate unproctected TLB Entries
         Location	  : cpu_init_early_f
         Invalidated: 13, 9
  
     9) Create TLB entries as per boards/freescale/<board>/tlb.c
         Location	  : cpu_init_early_f --> init_tlbs()
         Properties : ..., AS0, ...
        Note: It can overwrites previous TLB Entries
  
     10) Disable TLB Entries of AS1
         Location	  : cpu_init_f --> disable_tlb()
         Disable	  : 15, 14
  
     11) Create DDR's TLB entriy
         Location	  : Board_init_f -> dram_init
         TLB entry  : Search free TLB entry
  
     12) Update Flash's TLB entry
         Location	  : Board_init_r
         TLB entry  : Search from TLB entries
         EPN -->RPN : CONFIG_SYS_FLASH_BASE --> CONFIG_SYS_FLASH_BASE_PHYS
         Properties : Board specific size, AS0, I, G, IPROT