// Вот упражнение для Keil,
// в нем все прекрасно рассмотрено про FIQ.
// Запусти в отладчике и все станет ясно.
К сожалению отладчик у меня не работает (не распаяли на устройстве из-за занятости отладочных выводов) а как адаптировать startup из архива к startup из CrossStudio я вряд ли соображу.
// Проще всего на месте
Код
ldr pc, [pc, #fiq_handler_address - . - 8] /* fiq handler */
// написать
Код
b fiq_handler /* fiq handler */
Ну да, только этот код в startup.s а обработчик в main.cpp и startup.s не видит то что написано в main.cpp.
Ну в общем хоть и корявое решение а все таки я его придумал, а именно
1. Подправить обработчик FIQ в startup чтобы он указывал на 15 прерывание
Код
// ldr pc, [pc, #fiq_handler_address - . - 8] /* fiq handler */
ldr pc, [pc, #-0xEE8] /* fiq handler */
2. Записать в VICVectAddr15 адрес процедурны обработки прерывания.
Правда при этом становится на одно векторное прерывание меньше, но в моем пректе это не критично.
Большое спасибо всем ответившим, если кто-то знает решение лучше буду только рад.