IAR ARM Place const symbols in flash
Your code only tells the compiler to place variables _value1, _value2 and _value3 in the segment starting at 0x0003F800. It is not safe to assume they will always get the address in order, especially if alignment comes into play.

If you need to force the compiler to store a variable at a given address, you should say so explicitly:

#pragma location=0x3F800
__root const uint8_t _value1[16] = {...};
#pragma location=0x3F810
__root const uint8_t _value2[16] = {...};
#pragma location=0x3F820
__root const uint8_t _value3[16] = {...};


You could also put your EWRAM variables in a structure which you would then place with #pragma pack. This would guarantee the order of variables inside the structure as well as the alignment, so you could effectively rely on offsets of individual fields being constant.