Hi, I have Linux ported to a Custom Arm
platform. I have my own memory manager for my ARM device driver (its kinda requisite
for my target application) My memory manager obtains chucks of memory
from its own larger pool (a global array actually) and distributes it to my
application as and when required. I have declared a large array called local_mem
and defined it as follows:- Unsigned char local_mem[MEM_SIZE]
ATTRIB_SECTION(".rbuf"); Arm processor has an external SDRAM and
this memory comes from there. (Heap sits there I suppose) Now I have a specific DMA operation to be
done from an external FIFO to the local memory I have declared here. However,
all the addresses visible to my code are virtual and I need to supplement the
DMA master with the physical address. I am not sure how to obtain the physical
address for the virtual address. The global memory pool (or array) has an
address of 0xC281fb200 (virtual) while the SDRAM is a 4MB memory starting from
0x10000000. Could someone kindly throw some light on
as to how do I get the physical address corresponding to this address. Any tips
or pointers would also be of great help! Rgds Jitesh Shah ********************************************************************** This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify helpdesk@xxxxxxxxxxx **********************************************************************
|