-
Notifications
You must be signed in to change notification settings - Fork 161
feat(non-unified-mem): introduce support for non unified memory platforms #218
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
3b7f781 to
d467724
Compare
063a1b2 to
2f167aa
Compare
dbed9aa to
3b8f45e
Compare
3b8f45e to
d3eccd8
Compare
|
In the PR description, alongside the other modifications, I also suggest adding that it is now possible to setup memory permissions to reflect platform's memory restrictions (e.g., flash is read-only) |
d3eccd8 to
22f719f
Compare
658439b to
44db8da
Compare
374e494 to
9ad59e5
Compare
9ad59e5 to
474545c
Compare
3d1e91a to
53e6ea9
Compare
|
@danielRep please rebase on main and clean up commit history before proceeding |
Signed-off-by: Daniel Oliveira <[email protected]>
Signed-off-by: Daniel Oliveira <[email protected]>
Signed-off-by: Daniel Oliveira <[email protected]>
Signed-off-by: Daniel Oliveira <[email protected]>
These variables must be initialized in the boot.S of each arch. Both are global variables, therefore we removed the passing as argument of the load address throughout the internal APIs of Bao. Signed-off-by: Daniel Oliveira <[email protected]>
Signed-off-by: Daniel Oliveira <[email protected]>
04f6748 to
1a50d5c
Compare
|
@DavidMCerdeira @miguelafsilva5 please give another pass when possible |
@josecm I've given it another pass and rebased it to TC4. Everything is working and seems OK |
PR Description
This PR builds on top of PR #216 and adds support for platforms with non-unified memory architectures—i.e., platforms where code (e.g., flash) and data (e.g., SRAM) reside in separate memory regions. Previously, Bao only supported platforms with unified DRAM-based memory.
To support this architectural change, the following modifications were made:
load_addrargument from function calls withinmem.c, as it is now a constant global variable. Passing it explicitly no longer made sense in the context of non-unified memory platforms.Refactored LinkerScript
The following table details the difference between the memory layout of unified vs non-unified platforms. Unified platforms keep the same layout as expected while non-unified platforms split addresses between VMA and LMA addresses to cope with the typical separation of code and data memory architecture.
Unified Platforms
fvp-r-aarch32
qemu-aarch64-virt
Non-Unified Platform
tricore tc49