Здравствуйте! Может кто подскажет:
Есть написанный бутлоадер (с USB host). Он после обновления запускает User-приложение с адреса 0х4000.
В User-приложении установлены директивы REMAP RAM_MODE RAM_INTVEC SIZE_INT_INFO (исходя из описания в LPC2400.s)
Работает отладка (когда устанавливаю точку останова на 0х4000)
Приложение работает - инициализируется железо, запускается задача (единственная) и эта задача работает, до тех пор пока не появится tn_task_sleep.
А как только появится - эта единственная задача останавливается (очевидно средствами ОС) но сколько бы я не ждал - работу не продолжает.
Если пошагово смотреть, в этом режиме ожидания продолжает работу только tn_idle_task_func(void * par) в котором наматывается счетчик tn_idle_count++;
Вообщем получается что задача не выходит из режима ожидания.
Я понимаю что с моей постановкой (jump с bootloader + REMAP....) может быть что угодно, но интересуют возможные проблемы.
Может кто глубоко вникал в TNKernel и знает - в чем может быть причина.
Если без tn_task_sleep все работает, то я могу быть уверен что переход с бутлоадера произошел корректно, таблица векторов прерываний успешно перенесена во внутренний RAM и занимает там 64 байта. прочая область RAM доступна с адреса 0x40000040. Пошаговая отладка показывает что User-приложение запускается и остается в режиме Supervisor - что и требуется TNKernel.
Но что тогда может быть не так?
Добавлено:Отбой. Детская ошибка в стартапе.
irq_handler_address DCD tn_cpu_irq_isr
fiq_handler_address DCD tn_cpu_
irq_isr
Сообщение отредактировал yurmala - Sep 9 2011, 10:19