Цитата(Student2 @ Nov 3 2009, 12:43)

Программа сейчас работает, но возникла вот такая проблема поддержки и структурной чистотой - адрес установлен в линкере и он не виден из компилятора.
Почему? Преркрасно виден. Вы же получали адрес функции Application(). Вы можете этот адрес привести к любому нужному типу:
Код
extern void Application();
__C_task void main(void)
{
....
Application();
uint16_t Size_Area = (uint16_t)Application;
....
}
Цитата(Student2 @ Nov 3 2009, 12:43)

__root __flash uint16_t MARKER @ (SIZE_AREA-2) = 0x434C;
Вам надо в скрипте линкера создать новый сегмент для этих данных и заставить линкер правильно расположить его:
Код
-DApplication=200
-Z(CODE)MARKER_seg#0-(Application-1)
Код
#pragma segment = "MARKER_seg"
#pragma location = "MARKER_seg"
__root __flash uint16_t MARKER = 0x434C;
примерно так.