|
IRQ+FIQ, возможность "одновременного" существования IRQ и FIQ |
|
|
|
Oct 3 2012, 10:43
|
Группа: Участник
Сообщений: 12
Регистрация: 23-07-12
Пользователь №: 72 873

|
Доброго всем дня.
Поясните пожалуйста, возможно ли что прерывание FIQ возникнет во время обработки IRQ (или наоборот)? Для каждого прерывания свой режим, и биты в статусных режимах так стоят, что во время IRQ режима - FIQ разрешен, и наоборот, во время FIQ - IRQ разрешен.
Также заметил что SWI только IRQ запрещает... FIQ опять возможен?
|
|
|
|
|
 |
Ответов
|
Oct 5 2012, 16:53
|
Местный
  
Группа: Свой
Сообщений: 209
Регистрация: 6-01-12
Пользователь №: 69 197

|
Цитата(SII @ Oct 3 2012, 19:44)  В мануалах всё чётко прописано. FIQ запрещается автоматически только самим же FIQ, а значит, может произойти при выполнении любого другого обработчика (если программист, конечно, ручками FIQ не запретил). смотрите файл-скрипт запуска на асме там для каждого режима выставляется флаг I и F у вас какой контроллер?
--------------------
|
|
|
|
|
Oct 8 2012, 08:09
|
Группа: Участник
Сообщений: 12
Регистрация: 23-07-12
Пользователь №: 72 873

|
Цитата(SyncLair @ Oct 5 2012, 19:53)  смотрите файл-скрипт запуска на асме там для каждого режима выставляется флаг I и F у вас какой контроллер? контроллер - ARM926EJ под отладчиком можно видеть что IRQ и SWI ставят 1 в бит I (т.е. зпрещают IRQ) и если FIQ разрешены, то их бит F=0, а стало быть FIQ может быть... Наверное биты I и F и дают ответ на мой вопрос. Ежели я внутри IRQ обнулю I, то вложенные прерывания тут как тут  Сейчас в IRQ я ручками запрещаю FIQ на время обработчика IRQ (после разрешаю)... Пришлось сделать так, что только одно прерывание существует единовремменно, покуда имеется разделяемый ресурс который используется в основной программе, а также в IRQ и FIQ...
|
|
|
|
|
Oct 11 2012, 03:13
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414

|
Цитата(jcxz @ Oct 11 2012, 06:21)  Получается что FIQ вам не нужен. Зачем тогда его используете? Сделайте все прерывания через IRQ У себя я сначала тоже было сделал поддержку и FIQ, и IRQ, а потом понял, что на практике пользы от FIQ никакой, а лишний код и всё прочее требует. Поэтому и отказался от него. Ну а поскольку сам по себе из воздуха он не возникает, то и заботиться о его запрещении не требуется: можно считать, что его просто нет. (Правда, не исключаю, что в природе существуют микроконтроллеры, где на него что-нибудь завязано, но пока не встречался).
|
|
|
|
|
Oct 11 2012, 05:22
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748

|
Цитата(SII @ Oct 11 2012, 07:13)  У себя я сначала тоже было сделал поддержку и FIQ, и IRQ, а потом понял, что на практике пользы от FIQ никакой, а лишний код и всё прочее требует. Не совсем так. Основной смысл FIQ - это быстрый вызов прерываний. Так как никаких pending битов в ARM7 нет, а на обработку nested interrupts нужно время, можно не уложиться во временные пределы. Плюсом у FIQ свой банк верхних регистров, поэтому не нужно сохранять контекст, а можно сразу приступать к обработке. Другое использование - если nested interrupts не реализованы (а кодить тут, если с приоритетами, сильно больше, чем просто подключить FIQ), чтобы не дожидаться завершения прерывания, можно использовать FIQ.
|
|
|
|
Сообщений в этой теме
E_V_S IRQ+FIQ Oct 3 2012, 10:43 kovigor Цитата(E_V_S @ Oct 3 2012, 13:43) Пояснит... Oct 3 2012, 11:29 E_V_S Цитата(kovigor @ Oct 3 2012, 14:29) Почем... Oct 3 2012, 11:37 chernenko В этой части ARM7TDMI и ARM926EJ одинаковы? Oct 3 2012, 11:46   SyncLair Цитата(E_V_S @ Oct 8 2012, 12:09) контрол... Oct 8 2012, 11:49    E_V_S Цитата(SyncLair @ Oct 8 2012, 14:49) Для ... Oct 8 2012, 13:26   MBR Цитата(E_V_S @ Oct 8 2012, 12:09) Наверно... Oct 10 2012, 05:23 theBMV На то он и FIQ Oct 5 2012, 08:17 SII Не путайте архитектуру и ядро. ARM7 -- это семейст... Oct 8 2012, 14:36 SII Да всё это понятно, но, если скорость обработки на... Oct 11 2012, 06:40 MBR Цитата(SII @ Oct 11 2012, 10:40) Да всё э... Oct 11 2012, 07:50
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|