Hello.
I am looking for sample source code to understand how to program the MMU-500 SMMU.
The MMU-500 Technical Reference Manual (DDI0517F) does not contain any code samples.
Our processor is arm A53, and we are running bare metal (no OS).
The MMU-500 TRM does mention another document called the "Technical Reference Manual Supplement".
Technical Reference Manual SupplementThis supplement describes how to initialize the MMU-500, and how theMMU-500 generates final memory attributes.The TRM Supplement is a confidential book that is only available to licensees.
Does this document contain initialization code samples? We are not a licensee.
thx,
bob
Search for this document: DAI0527A (baremetal_boot_code_for_ARMv8_A_processors).The Armv8 programmers guide also gives some useful information too: DEN0024A
Hello,
Thank you for the reply.
I already have both of these documents.
However they do not discuss or contain any samples for the MMU-500.
What about chapter 5.3.2 in the baremetal doc? It contains the full setup
Chapter 5.3.2 is for the Processor MMU - not the MMU-500 which is the System MMU.
My bad, I mixed it up.
Not much to find, but in the SMMUv2 TRM I found this:2.7.1 Translation table formatThe SMMU translation table formats and translation process are generally the same as those in described in the ARM ® Architecture Reference Manual, ARMv8, for ARMv8-A architecture profile, for the AArch32 and AArch64 translation regimes. The AArch32 formats and processes are compatible with those for ARMv7, as described in the ARM ® Architecture Reference Manual, ARMv7-A and ARMv7-R edition. Stage 2 translation table format describes an SMMU extension to those formats.
So at least a hint.
I contacted ARM and they informed me I will need access to the MMU-500 Technical Supplement.
That's the document I mentioned in the original post, so it looks like it is needed.
I will need to work with our folks who handle IP, as this document is not public.
The ARM contact also provided some sample code separately which I need to review.
So overall it looks like the TRM Supplement document and sample code provided by ARM are the best answer.
Thanks again for the help. I am marking this ticket closed.