Цитата(arttab @ Apr 24 2007, 08:01)

Уточню проблему:
есть основная программа на устройство. Так же должен быть bootloader (пока нет, но будет общим на серию разных приборов. подключаться к проекту в виде образа).
Так сделайте в этом образе фиксированные точки входа в эти функции или разместите эти функции в зарезервированных сегментах при компиляции образа, а в приложении объявите их как внешние:
Код
Bootloader, .s90:
RSEG SYNTH_INIT : CODE:ROOT(1)
PUBLIC SynthInit
EXTERN SynthInitHandler
SynthInit // SynthInit entry point
RJMP SynthInitHandler
// ****************************************************************
RSEG GET_SERIAL : CODE:ROOT(1)
PUBLIC SerialNo
SerialNo
LDI R16,0xFF // will be overwritten by AVReAl
LDI R17,0xFF
RET
Bootloader, .xcl:
-Z(CODE)GET_SERIAL=1826-1FFF
-Z(CODE)SYNTH_INIT=1826-1FFF
BootLoader, .map:
SYNTH_INIT
Relative segment, address: CODE 0000182E - 0000182F (0x2 bytes), align: 1
Segment part 1. ROOT.
ENTRY ADDRESS REF BY
===== ======= ======
SynthInit 0000182E main (Application)
-------------------------------------------------------------------------
GET_SERIAL
Relative segment, address: CODE 00001826 - 0000182B (0x6 bytes), align: 1
Segment part 2. ROOT.
ENTRY ADDRESS REF BY
===== ======= ======
SerialNo 00001826 main (Application)
Application, .h:
extern void SynthInit (uint16_t FrequencyCoeff);
extern uint16_t SerialNo(void);
Application, .xcl:
-DSerialNo=0x1826
-DSynthInit=0x182E
PS
IgorKossak: Дуплетом бьем