The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"обработка прерывания в модуле ядра"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"обработка прерывания в модуле ядра"  
Сообщение от realsystem email(??) on 14-Авг-06, 08:42 
насколько быстрое прерывание возможно обработать в модуле ядра?(интересует 2мсек прерывание с шины PCI, возможно?)
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "обработка прерывания в модуле ядра"  
Сообщение от int_0d email on 14-Авг-06, 09:16 
>насколько быстрое прерывание возможно обработать в модуле ядра?(интересует 2мсек прерывание с шины
>PCI, возможно?)


да, вполне возможно даже на ядре без RT патчей. хотя, конечно, многое зависит от того,
что вы делаете в обработчике.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "обработка прерывания в модуле ядра"  
Сообщение от realsystem email(ok) on 14-Авг-06, 09:18 
>>насколько быстрое прерывание возможно обработать в модуле ядра?(интересует 2мсек прерывание с шины
>>PCI, возможно?)
>
>
>да, вполне возможно даже на ядре без RT патчей. хотя, конечно, многое
>зависит от того,
>что вы делаете в обработчике.

ну просто чтение/запись в регистры PCI железки.
кстати можешь дать рабочие ссылки на RT-патчи? хочется потестить

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "обработка прерывания в модуле ядра"  
Сообщение от int_0d email on 14-Авг-06, 10:07 

>ну просто чтение/запись в регистры PCI железки.
>кстати можешь дать рабочие ссылки на RT-патчи? хочется потестить

к сожалению не могу по причине отсутствия потребности в таковых
(в нашей конторе кошерна только montavista и использование всяких левых патчей
отнюдь не приветствуется)


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "обработка прерывания в модуле ядра"  
Сообщение от realsystem email(ok) on 14-Авг-06, 10:15 
>
>>ну просто чтение/запись в регистры PCI железки.
>>кстати можешь дать рабочие ссылки на RT-патчи? хочется потестить
>
>к сожалению не могу по причине отсутствия потребности в таковых
>(в нашей конторе кошерна только montavista и использование всяких левых патчей
>отнюдь не приветствуется)

понятно, есть какой нить скелетик как обработать 2мсек прерывание в модуле? я делаю как в книжках - по ioctl запросу от приложения делаю request_irq(с флагом SA_INTERRUPT), в обработчике читаю из регистра (при этом происходит аппаратный сброс прерывания), смотрю на осциллограф, виже сброс происходит только через раз, в чем дело?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "обработка прерывания в модуле ядра"  
Сообщение от int_0d email on 14-Авг-06, 10:26 
вы уверены, что запись в регистр не кешируется?
можно Ваш код в студию?


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

6. "обработка прерывания в модуле ядра"  
Сообщение от realsystem email(??) on 14-Авг-06, 10:47 
> вы уверены, что запись в регистр не кешируется?
> можно Ваш код в студию?


//        задание интревала 2 мсек срабатывания прерывания
        writeb(0x2, chip_cyclone_addr + 0x11);
//        включение генерирования прерывания
        writeb(0x1, chip_cyclone_addr + 0x10);
        iRet = request_irq(5, altera_interrupt, SA_INTERRUPT, "altera", (void *)altera_interrupt);

теперь обработчк:
    int tmp = 0, i, handled = 0;
        
    count_irq++;
//считывание - для определение срабатывания прерывания, т.е. если 1-ый бит 10-го регистра равен "1", то прерывание сработало
    tmp = readb(chip_cyclone_addr + 0x10);
    if (tmp & _B_01)
    {
    count_real_irq++;
//крутим цикл, чтобы просто потянуть время после обнаружения срабатывания прерывания, этот цикл чётко видно на осцилографе, при увеличении длительности цикла, там верхняя черта растёт ;), но она обрабатывается не всегда, а как то через раз по моему
    for (i = 0; i < 1000; i++) tmp = readb(chip_cyclone_addr + 0x11);
//чтение - это сброс прерывания
    tmp = readb(chip_cyclone_addr + 0xCB420);
    handled = 1;
    }
    return IRQ_RETVAL(handled);

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

7. "обработка прерывания в модуле ядра"  
Сообщение от int_0d email on 14-Авг-06, 11:01 
гм, не пробовали выводить count_real_irq хотя бы раз в секунду?
Ваша затея с циклом доверия как-то не внушает

Вопросы не по делу:

1) Вы повесили Altera на PCI?
2) делаете SHDSL модем или что-то вроде?


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

8. "обработка прерывания в модуле ядра"  
Сообщение от realsystem email(??) on 14-Авг-06, 11:03 
>гм, не пробовали выводить count_real_irq хотя бы раз в секунду?
выводили, не всегда совпадает с осцилограммой
>Ваша затея с циклом доверия как-то не внушает
а как можно проверить? что посоветуете?
>
>Вопросы не по делу:
>
>1) Вы повесили Altera на PCI?
>2) делаете SHDSL модем или что-то вроде?

всё правильно ;)

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

9. "обработка прерывания в модуле ядра"  
Сообщение от int_0d email on 14-Авг-06, 11:11 
не совсем понял, что значит не всегда совпадает - есть правильное число прерываний
или нет?


2) Вы случайно не в Питере?

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

10. "обработка прерывания в модуле ядра"  
Сообщение от realsystem email(??) on 14-Авг-06, 11:14 
>не совсем понял, что значит не всегда совпадает - есть правильное число
>прерываний
>или нет?
самих прерываний - есть, а вот их обработок меньше ;)

>
>2) Вы случайно не в Питере?

в Саратове ;)

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

11. "обработка прерывания в модуле ядра"  
Сообщение от int_0d email on 14-Авг-06, 11:22 
у меня был похожий проект - 8 линейный SHDSL модем (правда на основе собственной
платы - клона IXDP425 с небольшими ништяками)

Если будут интересные вопросы - добро пожаловать в аську 273-083-900

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру