expflash 0 March 20, 2008 Posted March 20, 2008 · Report post Приветствую! Пишу программу для MicroBlaze. Прога обрабатывает прерывания от нескольких внешних устройств, а в остальное время бездействует. Оказалось критичным время реакции, но увеличивать частоту нехочется. Все дело в следующем void __interrupt_handler () __attribute__ ((interrupt_handler)); extern MB_InterruptVectorTableEntry MB_InterruptVectorTable; void __interrupt_handler(void) { /* The compiler saves all volatiles and the MSR */ MB_InterruptVectorTable.Handler(MB_InterruptVectorTable.CallBackRef); /* The compiler restores all volatiles and MSR, and returns from interrupt */ } Тупо убрать атрибут не получается, при перекомпиляции файл microblaze_interrupt_handler.c генерится заново. Подскажите, как обойти? Quote Share this post Link to post Share on other sites More sharing options...
tolik1 0 March 20, 2008 Posted March 20, 2008 · Report post Сам пользую РРС (механизм обработки прерываний немного разный), но думаю что никак. Упаковка в стек осуществляется самим ядром процессора (а не процедурой обработки прерывания). Если хотите повысить время реакции, то есть 2 пути: 1) Увеличивать такт. частоту 2) Пытаться реализовывать функции обработки на логике Quote Share this post Link to post Share on other sites More sharing options...
expflash 0 March 20, 2008 Posted March 20, 2008 · Report post Но в мануале на МВ отдельно написано, что для функций обработки прерывания в прототипе нужно добавлять атрибут __attribute__ ((interrupt_handler)) или __attribute__((save_volatiles)) и тогда компилятор добавляет инструкции записи в стек. Я так понял что этого можно и не делать. Но здесь функция обработки прерывания вызывается опосредованно через __interrupt_handler (). Quote Share this post Link to post Share on other sites More sharing options...
expflash 0 March 26, 2008 Posted March 26, 2008 (edited) · Report post Отбой! Похоже действительно нельзя. Если извернуться и убрать все атрибуты, при компиляции проекта всеравно выскакивает ошибка: нехватает атрибута interrupt_hendler. Edited March 26, 2008 by expflash Quote Share this post Link to post Share on other sites More sharing options...