Can I Relocate Code on ARM Microcontroller?
The ARM instruction set is fully relocatable, though it is possible to create code that isn't by referencing absolute addresses (eg. to relative positioned data). It is one of the major design features of the instruction set since the very first versions in the late 80's.

Another consideration is memory protection, this entirely depends on the hardware platform. On some hardware platforms not all address ranges can be used to execute code, these ranges can only be used for data (or memory mapped I/O). Refer to the datasheet of your chip(set).