Hi Robbie, I believe that the "physical" address that is specified by the elf file is actually the physical location within the file. Given a capability to a frame, there is a system call for obtaining the physical address. System call code is automatically generated, so you will need to look in the build or stage directories: stage/arm/zynq7000/include/interfaces/sel4_client.h:306:seL4_ARM_Page_GetAddress(seL4_ARM_Page service) The best way to handle DMA is to allocate and map a frame, then use the GetAddress call to determine the physical address of the underlying memory. - Alex On Thu, 2015-12-03 at 14:59 -0500, Robert VanVossen wrote:
Hello,
I am attempting to integrate the Xilinx drivers, provided through their SDK, with seL4 on the Zynq7000. In the root thread, I created a virtual mapping for the SD Card peripheral, and I pass that virtual address into the driver, so that it is reading and writing to it.
The controller has a built-in DMA that gets used for data transfer. I created a buffer in the root thread's virtual space to pass to the DMA, but it needs a physical address. I calculated the virtual/physical offset from the physical and virtual addresses for the application that are given by the elfloader, but that didn't seem to be the correct mapping.
Is there a good way to get that mapping, either from within the application itself or from the kernel before hand?
Thanks, Robbie VanVossen DornerWorks
_______________________________________________ Devel mailing list Devel@sel4.systems https://sel4.systems/lists/listinfo/devel
________________________________ The information in this e-mail may be confidential and subject to legal professional privilege and/or copyright. National ICT Australia Limited accepts no liability for any damage caused by this email or its attachments.