Проблема не в самом загрузчике (зашивает все правильно), а в запуске им основной программы.
Запуск делаю следующим образом:
Код
#define APPLICATION_START_ADDRESS (*((unsigned long __far*)0xFFFFE0L))
__nosavereg
void __far StartApplication(void)
{
// останавливаю CAN
clear_CPU_operation_detection();
CSR = 0x81;
while (!CSR_HALT)
clear_CPU_operation_detection();
// останавливаю PLL
CKSCR_MCS = 1;
while (!CKSCR_MCS) clear_CPU_operation_detection();
// прыжок на вектор сброса основной программы
((void __far (*)(void))APPLICATION_START_ADDRESS)();
}
__nosavereg
void __far StartApplication(void)
{
// останавливаю CAN
clear_CPU_operation_detection();
CSR = 0x81;
while (!CSR_HALT)
clear_CPU_operation_detection();
// останавливаю PLL
CKSCR_MCS = 1;
while (!CKSCR_MCS) clear_CPU_operation_detection();
// прыжок на вектор сброса основной программы
((void __far (*)(void))APPLICATION_START_ADDRESS)();
}
В реальности запуск основной программы получается только со второго раза.
Т.е. включаю питание, жду исхода таймаута ... запуска не происходит.
Выключаю, через секунду включаю питание, жду таймаута - девайс запускается.
Если зашивать только основную программу, то таких проблем нету.
Подскажите где что я упустил.