LINUX.ORG.RU

Обработка прерываний в linuxrt


0

0

Здравствуйте, Немного предыстории: Долго разбирался с rt патчем для убунты. Вроде настроил таймер, работает ровно, сигнал на ЦАП выдает без претензий на 1кГц. Теперь занялся приемом сигнала с АЦП. Алгоритм работы хочу устроить следующий: поочередное считывание информации с канала по прерыванию о завершении преобразования Где-то вычитал что в Линукс прерывания никак не достать из пространства ядра. Не знаю как с этим дело когда работаешь на RT-ядре, может быть из него можно вынуть прерывания в RT приложение работающее в user-space? Или нужно писать модуль только теперь не к ядру Линукс а к ядру linuxrt. Информации в инете найти не могу, может кто подскажет как нужно правильно делать. Если писать модуль, то как из него потом все время быстро перебрасывать информацию в rt прогу, которая будет все обрабатывать. Запутался я немного.

Обычно прерывание пробрасывается в userspace-прогу реализацией poll на спецфайле устройства. Можешь посмотреть драйвер rtc для примера.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Про Real-time патч везде сказано, что это мини-ядро, которое встраивается между аппаратной частью и ядром Линукс, запуская ядро Линукс как приложение с низким приоритетом. Все прерывания сперва попадают в РТ ядрышко а потом уже в ядро линукс Из этого я делаю вывод, что при написании модуля для этого мини-ядра возникнет столько гемора, сколько я не осилю в связи с отсутствием глубоких познаний о линукс впринципе. Посему спрошу, может кто-нибудь работал в этом патче и знает как там что делать?

drifter_lom
() автор топика
Ответ на: комментарий от drifter_lom

> Про Real-time патч везде сказано, что это мини-ядро, которое встраивается между аппаратной частью и ядром Линукс, запуская ядро Линукс как приложение с низким приоритетом

Эээ... похоже, мы о разном говорим. Что такое «realtime-патч» - патч -rt от Molnar и Gleixner, или RTLinux от Yodaiken?

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

Для RTLinux ты, вероятно, прав. Но для -rt написанием модулей практически не отличается.

tailgunner ★★★★★
()

А может ну их, эти прерывания, считывать по таймеру, да и все? Писать то у тебя нормально по таймеру получилось. Тогда можно из без модуля обойтись, в теории.

vga ★★
()
Ответ на: комментарий от vga

Я говорю про -rt патч А что означает практически не отличается? И если мне придется писать модуль ну и пускай, но тогда спрошу а как проще всего, а главное выдерживая принцип реального времени (т.е. для моей конкретной задачи все должно происходить с дискретой 1 мс без сбоев а то никакого толку от привода не будет) перебрасывать инфу из модуля в user приложение?

По поводу отказа от прерываний - это моя мечта, но есть 2 проблемы: 1) У АЦП есть время преобразования, если я отправлю запрос на преобразование и сразуже прочитаю не факт что что-нить получится. Делать какие-то искусственные задержки я не хочу, не красиво это и нестабильно 2) Если в этой конкретной задаче и получится избежать прерываний, то меня все равно не поймут коллеги с кафедры. Они под QNX сидят и их все устраивает, кроме того факта что QNX коммерческая ось, а если я скажу «вот ребята Линукс но смотрите вот здесь надо через ж сделать а здесь вот так выпендриться и все бут работать» меня не поймут.

drifter_lom
() автор топика
Ответ на: комментарий от drifter_lom

> для моей конкретной задачи все должно происходить с дискретой 1 мс без сбоев а то никакого толку от привода не будет

А зачем тебе вообще прерывания? Таймера не хватит?

tailgunner ★★★★★
()
Ответ на: комментарий от drifter_lom

Делать какие-то искусственные задержки я не хочу, не красиво это и нестабильно

Гм, а вот пульсаудио сейчас наоборот избавляется от прерывания и переходит на таймера, именно по причине стабильности, и представляет это как новую фичу. Я вот подозреваю, что они знают, что делают.

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

А ты на них забей, скажи, что они ничего не понимают.

vga ★★
()
Ответ на: комментарий от vga

> а вот пульсаудио сейчас наоборот избавляется от прерывания и переходит на таймера

Таймера - это те же прерывания, но код доставки их из ядра в userspace уже написан :)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Таймера - это те же прерывания, но код доставки их из ядра в userspace уже написан :)

Вот именно, и это плюс. Потому что кривые железяки и драйвера алсы - это одно, а таймер - это как-то понадежнее будет. Но правда пока оно только для проигрывания, а не для записи, как у ТС. http://0pointer.de/blog/projects/pulse-glitch-free.html

vga ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.