armmemory-addressvirtual-address-spaceflash-memoryaddress-space

Address spaces for ROM's and finding out the virtual address of certain files


Thanks for reading this question.

I am very new to arm and computer architectures in general so sorry if this is a basic question.

I have spent plenty of time reading and learning about the MMU and the virtual to physical address translation. I have also learn't about address spaces. Just to be sure all the io peripherals such as Ethernet and USB have there own addresses as well as the external RAM and ROM's right? So i wanted to know the address values specifically so i read this PDF document, here: http://infocenter.arm.com/help/topic/com.arm.doc.den0001c/DEN0001C_principles_of_arm_memory_maps.pdf , but it is very confusing. I cant clearly see where it says the exact address space for the ROM and the address space i have found doesn't add up to 128GB for example on some arm phones.

Can you help me make sense of all this? Am i getting this all wrong? And how do i find out the exact addresses for all the peripherals, RAMs and ROM's so i can do some Load and Store functions for these addresses in my codes. Also how do you find out the Virtual address of certain files and documents if i was going to mess around coding one of my old phones. So for eample address 0x00BA FFFF to 0x0AFF FFFF was for a certain audio file. I learn a lot though exploring in this way.

Thanks again,

Will Smith


Solution

  • ARM makes processor cores they do not make chips. They have or have had a few peripherals you could by but the chip vendors generally have their own. Point being, even if they have the same core, chips from different chip vendors do not have the same memory map, much less peripherals, etc. I didnt read your link (bad idea to put links like that in questions or answers as the link content is not controlled by stackoverflow and can disappear, ruining the question or answer) completely but that example memory map at the end is just one example. The chip and sometimes system vendor documentation is required to get a complete physical address map of the world for that one chip or system. Dont try to re-use that map anywhere else. The information is available just have to ask or dig for it, sometimes protected by an NDA which you may or may not be able to get. Also note there may be more than one bus on the core, and no doubt there is more than one bus outside the core in the system so there are multiple physical address spaces. And then you have the mmu which from an address space perspective just translates some to many of the upper bits of the physical address to a virtual address and in that mode the processor/code operates on the virtual address. (all applications that run on an operating system like linux could for example be compiled to run at address 0x8000, the mmu allows that to happen so that all applications think they have the same space but none of their physical addresses collide)