В моем файле компоновщика script я определил два символа
define symbol _region_RAM_start__     = 0xC0000000;
define symbol _region_RAM_end__       = 0xC00fffff; 
а затем я экспортировал их, как показано ниже
export symbol _region_RAM_start__;
export symbol _region_RAM_end__;
Из кода приложения я пытаюсь получить доступ к этим символам
extern const unsigned int _region_RAM_start__;
extern const unsigned int _region_RAM_end__;
....
int GetRAMSize()
{
    int size = 0;
    unsigned int address_1 = _region_RAM_start__;
    unsigned int address_2 = _region_RAM_end__;
    size = address_2 - address_1 + 1U;
    return size;
}
Теперь я ожидал, что возвращаемое значение будет 0x00100000, однако все, что я получаю, равно 0. Поэтому, когда я обратился к отладчику, я заметил, что _region_RAM_start__ и _region_RAM_end__ имеют значения 0xC0000000 и 0xC00fffff соответственно, но адрес_1 и address_2 имеют значение 0.
Оптимизация компилятора установлена на "Нет". Это уже давно подтачивало меня. Есть ли что-то очень очевидное, что я здесь отсутствует (кроме того, что я не должен делать это в первую очередь)?
Решение Благодаря н.м. для ответа
  unsigned int address_1 = (unsigned int) (&_region_RAM_start__);
В противном случае адреса_1 и address_2 оба содержат значения мусора (т.е. значения, доступные по адресу 0xC0000000 и 0xC00fffff, но мусор с точки зрения этого кода)
