You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
> **Note:** The T2080 RDB DDR register values are placeholder stubs (all zeros
4022
+
> with TODO comments in `hal/nxp_t2080.h`). DDR initialization will not succeed
4023
+
> until you populate them from a U-Boot register dump. The NAII 68PPC2 and
4024
+
> CW VPX3-152 DDR configs are populated and tested.
4013
4025
4014
4026
Example configuration: [/config/examples/nxp-t2080.config](/config/examples/nxp-t2080.config).
4015
-
Stock layout is default; for NAII 68PPC2, uncomment the "# NAII 68PPC2:" lines and comment the stock lines.
4027
+
See [Board Selection](#board-selection) below for per-board setup.
4016
4028
4017
4029
### Design NXP T2080 PPC
4018
4030
4019
-
The QorIQ requires a Reset Configuration Word (RCW) to define the boot parameters, which resides at the start of the flash (0xE8000000).
4031
+
The QorIQ requires a Reset Configuration Word (RCW) to define the boot parameters, which resides at the start of the flash (`0xE8000000` for 128 MB boards, `0xF0000000` for the 256 MB CW VPX3-152).
4020
4032
4021
-
The flash boot entry point is `0xEFFFFFFC`, which is an offset jump to wolfBoot initialization boot code. Initially the PowerPC core enables only a 4KB region to execute from. The initialization code (`src/boot_ppc_start.S`) sets the required CCSR and TLB for memory addressing and jumps to wolfBoot `main()`.
4033
+
The flash boot entry point is the last 4 bytes of the NOR flash region (`0xEFFFFFFC` for 128 MB flash, `0xFFFFFFFC` for 256 MB flash), which is an offset jump to wolfBoot initialization boot code. Initially the PowerPC core enables only a 4KB region to execute from. The initialization code (`src/boot_ppc_start.S`) sets the required CCSR and TLB for memory addressing and jumps to wolfBoot `main()`.
4022
4034
4023
4035
#### Boot Sequence and Hardware Constraints
4024
4036
@@ -4041,7 +4053,7 @@ CPC SRAM is unreliable for stores on cold power-on — L1 dirty-line evictions
4041
4053
through CoreNet to CPC cause bus errors (silent CPU checkstop with `MSR[ME]=0`).
4042
4054
The fix (matching U-Boot) uses L1 locked D-cache as the initial 16KB stack:
4043
4055
`dcbz` allocates cache lines without bus reads, `dcbtls` locks them so they
4044
-
are never evicted. The locked lines at `L1_CACHE_ADDR` (0xF8E00000) are
4056
+
are never evicted. The locked lines at `L1_CACHE_ADDR` (`0xF8E00000`; `0xEE800000` on VPX3-152) are
4045
4057
entirely core-local. After DDR init in `hal_init()`, the stack relocates to
4046
4058
DDR and the CPC switches from SRAM to L3 cache mode.
4047
4059
@@ -4052,9 +4064,16 @@ boot, allowing L1 I-cache to cache instruction fetches while preventing
4052
4064
speculative prefetch to the IFC. C code switches to `MAS2_I | MAS2_G` during
4053
4065
flash write/erase (command mode), then `MAS2_M` for full caching afterward.
4054
4066
4067
+
**CCSRBAR Relocation (CW VPX3-152 only)**
4068
+
4069
+
The default CCSRBAR at `0xFE000000` (16 MB) falls within the VPX3-152's 256 MB
4070
+
flash VA range (`0xF0000000`–`0xFFFFFFFF`). The startup assembly relocates
4071
+
CCSRBAR to `0xEF000000` (just below flash). The CPC SRAM and L1 cache addresses
4072
+
are also relocated to `0xEE900000`/`0xEE800000` to avoid overlap.
4073
+
4055
4074
**RAMFUNCTION Constraints**
4056
4075
4057
-
The NAII 68PPC2 NOR flash (two S29GL01GS x8 in parallel, 16-bit bus) enters
4076
+
The NOR flash (two S29GL01GS x8 in parallel, 16-bit bus) enters
4058
4077
command mode bank-wide — instruction fetches during program/erase return status
4059
4078
data instead of code. All flash write/erase functions are marked `RAMFUNCTION`,
4060
4079
placed in `.ramcode`, copied to DDR, and remapped via TLB9. Key rules:
@@ -4094,30 +4113,38 @@ machine check (exceptions instead of checkstop), debug, and recoverable
4094
4113
interrupt enable. Branch prediction (BUCSR) is deferred to `hal_init()` after
4095
4114
DDR stack relocation.
4096
4115
4097
-
**UART Debug Checkpoints (`DEBUG_UART=1`)**
4116
+
### Building wolfBoot for NXP T2080 PPC
4117
+
4118
+
By default wolfBoot will use `powerpc-linux-gnu-` cross-compiler prefix. These tools can be installed with the Debian package `gcc-powerpc-linux-gnu` (`sudo apt install gcc-powerpc-linux-gnu`).
4119
+
4120
+
#### Board Selection
4098
4121
4099
-
Assembly startup emits characters to UART0 (0xFE11C500, 115200 baud):
By default wolfBoot will use `powerpc-linux-gnu-` cross-compiler prefix. These tools can be installed with the Debian package `gcc-powerpc-linux-gnu` (`sudo apt install gcc-powerpc-linux-gnu`).
4137
+
**NAII 68PPC2:**
4138
+
```
4139
+
cp ./config/examples/nxp-t2080.config .config
4140
+
```
4141
+
Then in `.config`, uncomment `CFLAGS_EXTRA+=-DBOARD_NAII_68PPC2`.
4142
+
4143
+
#### Build
4115
4144
4116
-
The `make` creates a `factory.bin` image that can be programmed at `0xE8080000`
4117
-
(For NAII 68PPC2, first edit `nxp-t2080.config` to uncomment the NAII 68PPC2 lines.)
4145
+
The `make` creates a `factory.bin` image that can be programmed to the application partition address.
This is an example for debugging the T2080 with CodeWarrior TAP, however we were not successful using it. The Lauterbach is what we ended up using to debug.
4313
+
> **Note:** CodeWarrior TAP debugging has not been validated for this target.
4314
+
> Lauterbach TRACE32 is the recommended debug probe. The following steps are
Copy file name to clipboardExpand all lines: hal/nxp_t2080.h
+6-1Lines changed: 6 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -395,7 +395,12 @@ enum ifc_amask_sizes {
395
395
#defineDDR_ERR_INT_EN_VAL 0x0000001D
396
396
#defineDDR_ERR_SBE_VAL 0x00010000
397
397
#else
398
-
/* T2080 RDB: DDR register values */
398
+
/* T2080 RDB DDR register values are not yet populated.
399
+
* To complete this, boot U-Boot on T2080 RDB and run the register dump
400
+
* commands below, then replace the 0x00000000 placeholders with actual values. */
401
+
#ifdefENABLE_DDR
402
+
#error "T2080 RDB DDR register values not populated. See TODO comments in nxp_t2080.h. Define BOARD_CW_VPX3152 or BOARD_NAII_68PPC2, or fill in DDR values from a U-Boot register dump."
403
+
#endif
399
404
/* TODO: Fill ALL values from Phase 1 U-Boot register dump:
0 commit comments