реклама на сайте
подробности

 
 
> __interrupt_handler, Как отключить сохранение в стек при обработке?
expflash
сообщение Mar 20 2008, 07:25
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 97
Регистрация: 6-02-08
Из: Казань
Пользователь №: 34 802



Приветствую! Пишу программу для 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 генерится заново.
Подскажите, как обойти?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
tolik1
сообщение Mar 20 2008, 09:32
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 199
Регистрация: 2-03-05
Из: МОСКВА
Пользователь №: 3 016



Сам пользую РРС (механизм обработки прерываний немного разный), но думаю что никак. Упаковка в стек осуществляется самим ядром процессора (а не процедурой обработки прерывания). Если хотите повысить время реакции, то есть 2 пути:
1) Увеличивать такт. частоту
2) Пытаться реализовывать функции обработки на логике
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 14:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01373 секунд с 7
ELECTRONIX ©2004-2016