Каково различие между FIQ и системой прерывания IRQ?

Учитывая

import more_itertools as mit


iterable = ["A", "WORD", "B" , "C" , "WORD" , "D"]
pred = lambda x: x == "WORD"

Код

list(mit.split_before(iterable, pred))
# [['A'], ['WORD', 'B', 'C'], ['WORD', 'D']]

more_itertools является сторонней библиотекой устанавливается через > pip install more_itertools.

См. Также split_at и split_after .

69
задан manav m-n 8 January 2013 в 10:07
поделиться

6 ответов

Особенность современных процессоров ARM (и некоторых других).

Из патента:

Метод выполнения быстрого прерывание в процессоре цифровых данных иметь возможность обрабатывать больше предусмотрено более одного прерывания. Когда запрос быстрого прерывания получен установлен флаг и счетчик программы и регистры кода состояния хранится в стеке. В конце прерывание процедуры обслуживания возврат из инструкций прерывания извлекает регистр кода состояния, который содержит статус цифрового обработчик данных и проверяет, чтобы увидеть установлен флаг или нет. Если флаг установлен, это означает, что быстрое прерывание было обслужено и поэтому только счетчик программ unstacked.

Другими словами, FIQ - это просто запрос прерывания с более высоким приоритетом, который получает приоритет путем отключения IRQ и других обработчиков FIQ во время обслуживания запроса. Следовательно, никакие другие прерывания не могут возникать во время обработки активного прерывания FIQ.

59
ответ дан 24 November 2019 в 13:32
поделиться

FIQ имеет более высокий приоритет и может быть введен во время обработки другого IRQ. Наиболее важные ресурсы обрабатываются FIQ, остальные обрабатываются IRQ.

3
ответ дан 24 November 2019 в 13:32
поделиться

Это может быть неправильно. Все, что я знаю, это то, что FIQ означает быстрый запрос прерывания, а IRQ - запрос прерывания. Судя по этим названиям, я предполагаю, что FIQ будет обработан (брошен?) Быстрее, чем IRQ. Вероятно, это как-то связано с конструкцией процессора, где FIQ прерывает процесс быстрее, чем IRQ. Прошу прощения, если я ошибаюсь, но обычно я занимаюсь программированием более высокого уровня, сейчас я просто предполагаю.

-5
ответ дан 24 November 2019 в 13:32
поделиться

Я считаю, что это то, что вы ищете:

http://newsgroups.derkeiler.com/Archive/Comp/comp.sys.arm/2005-09/msg00084.html

По сути, FIQ будет иметь наивысший приоритет с несколькими источниками IRQ с более низким приоритетом.

1
ответ дан 24 November 2019 в 13:32
поделиться

Хаос уже дал хороший ответ, но еще не рассмотренный дополнительный момент заключается в том, что FIQ находится в конце векторной таблицы, и поэтому обычно / традиционно просто запускают процедуру прямо здесь, тогда как вектор IRQ обычно является именно таким. (т.е. прыжок в другое место). Избегание этой дополнительной ветки сразу после полного тайника и переключения контекста - небольшое увеличение скорости.

6
ответ дан 24 November 2019 в 13:32
поделиться

другая причина в том, что в случае FIQ требуется меньшее количество регистров для вставки в стек, режим FIQ имеет регистры от R8 до R14_fiq

4
ответ дан 24 November 2019 в 13:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: