Are the instructions fetched from RAM or ROM in an ARM micro-controller?
ARM cores are actually what is called modified Harvard architecture.  In this case, ROM and RAM sit in the same address space, so an ARM processor can execute code out of either or access either as data.  In the modified Harvard architecture, the processing core is directly connected to two separate instruction and data caches.  This allows for high performance due to being able to access instructions and data simultaneously.  At a high level the combined address space makes the whole system act like a Von Neumann architecture.  

The structure of the address space is determined by the physical connections between the processing core itself and any memories and peripherals.  For the most part the layout of the address space will be fixed with particular ranges corresponding to memory-mapped peripherals, mask ROM, Flash, RAM, etc.  However, there may be some ability to remap certain sections of address space or to configure peripherals or external memories to sit in specific regions of the address space.