diff options
| author | Frédéric Desbiens <[email protected]> | 2026-08-15 17:02:01 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-08-15 17:02:01 -0400 |
| commit | 1296cf1740e592338ea5203190b8761eb4b80fbf (patch) | |
| tree | 3b3f9c070537dbbec5d2ce341cbc76660a2ca12c /common_modules/module_manager | |
| parent | 358e7a9ea537dff49d970c8b684eef229f40bc53 (diff) | |
Corrected the S32Z280 data SRAM map against the Reference Manual and the part (#621)
The RTU has 1 MB of data SRAM in three contiguous banks, and this port
described it wrongly in both directions.
DRAM0 0x31780000 256 KB full core speed
DRAM1 0x317C0000 256 KB full core speed
DRAM2 0x31800000 512 KB half core speed
DRAM1 was not declared at all, so 256 KB of full-speed memory went unused
and the linker's DATA region stopped at 256 KB. DRAM2 was declared as
2 MB when it is 512 KB, which mattered more: the MPU mapped 1.5 MB past
the end of the bank, and that range aliases back onto its base. Anything
placed above 0x31880000 would have shared storage with the bottom of the
region silently -- no fault, two objects at one address. Nothing was
placed there yet, so this was a trap rather than a live defect.
Sources: S32Z2 Reference Manual Rev. 5, section 6.3.6 and Table 13, and
the board. Writing distinct values to all three banks and reading them
back shows 1 MB of independent storage, and the first word past DRAM2
returns the value written to its base, which is what fixes the size.
Note that NXP's own debugger memory map, s32z2e2_memory_regions.py in
S32 Design Studio, calls the last bank 2 MB. The Reference Manual and the
silicon agree it is 512 KB.
Also corrected the description of these banks throughout. They are all
RTU-local; the earlier comments treated locality as the thing that
distinguishes them, when the actual difference is clock speed. That is
why the cache benchmark uses DRAM2 -- caching a bank that already runs at
core speed shows nothing, which is a real effect the old wording
explained with the wrong cause.
Verified on the S32Z280-594EVB: builds clean, and the boot probes pass
six of six with the MPU, GIC, interrupts, caches and both protection
faults exercised.
Assisted-by: Claude Code (Opus 5) <[email protected]>
Diffstat (limited to 'common_modules/module_manager')
0 files changed, 0 insertions, 0 deletions
