How should DMA-inaccessible TCM be handled on AMD Versal RPU (SDHC / MMC)? #101321
Unanswered
takumiando
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello Zephyr community,
I’m working on enabling the SD/MMC stack on AMD Versal RPU (Cortex-R5F) and I would like to ask for guidance on the correct upstream approach for handling DMA buffers on this platform.
Background / Hardware constraints
On Versal RPU, the memory map has a special characteristic:
This is not a cache-coherency issue; it is a hard accessibility limitation of the SDHC DMA master.
Problem observed in Zephyr
In the current Zephyr SD/MMC stack:
.bss/.datastruct sd_data(driver private state)card->card_buffer[])I was able to confirm this by printing buffer addresses; failing DMA transfers consistently used TCM addresses.
What works so far
For experimentation, I managed to make the SD/MMC tests pass by:
.ocm_data)However, this raises design questions.
The design dilemma
From a system perspective:
On the other hand:
Questions to the community
Any guidance on how this should be addressed in an upstream-friendly way would be greatly appreciated.
Thanks in advance,
Beta Was this translation helpful? Give feedback.
All reactions