The RealView ARM C Compiler supports placing a variable at a given memory address using the variable attribute at(address):
at(address)
int var __attribute_
extern const uint8_t dev_serial[12]; asm(".equ dev_serial, 0x1FFFF7E8"); /* or asm("dev_serial = 0x1FFFF7E8"); */ ... for (i = 0 ; i < sizeof(dev_serial); i++) printf((char *)"%02x ", dev_serial[i]);