Re: copying code from ROM to RAM
This is different issue, and the question is much too generic to answer here since we don't know your design requirements and constraints (memory map, OS, field updatability, ...)
Many designs implement a bootloader that copies code from flash to ram and execute there. Sometimes the bootloader is "built-in" the final app; more often, it is a separate firmware executable. Some bootloaders are very simple: initialize PLL, cache, SDRAM, copy flash to SDRAM, jump. Others are much more elaborate with downloaders (serial or Ethernet), file system support, scripting, etc. I suggest you research open-source bootloaders such as Redboot and U-Boot.
Marc