|
Частота прерываний под Linux'ом, реально достижимая |
|
|
|
 |
Ответов
|
Jul 31 2012, 12:49
|
Участник

Группа: Участник
Сообщений: 56
Регистрация: 16-04-11
Пользователь №: 64 408

|
Зависит от времени переключения контекста. Можете попробовать замерить его обрабатывая прерывания от аппаратного таймера. Чем меньше время переключения, тем более частые прерывания можно обрабатывать. Но система будет скорее всего виснуть. 100 КГц это примерно каждые 10 мкс, а ваш процессор выполняет максимум 400 инструкций за 1 мкс, тоесть у вас между прерываниями будет выполнено максимум 4000 инструкций. А вообще Линукс как-то не очень предназначен для работы в жёстком реальном времени с чётко определённым временем реакции. Для этой задачи лучше использовать отдельный процессор или ПЛИС.
Сообщение отредактировал Lyubimov - Jul 31 2012, 12:57
|
|
|
|
|
Aug 1 2012, 10:24
|
Частый гость
 
Группа: Участник
Сообщений: 181
Регистрация: 26-07-10
Пользователь №: 58 606

|
Цитата(Alexashka @ Jul 31 2012, 16:48)  Вообщем, да  Я то думал, там карусель для простых задач, а прерывания выполняются с минимальными задержками, но выходит не совсем так. Макс.частота с которой удалось отрабатывать прерывания в Linux - 16кГц, без оного - 820кГц. Фигня какаято  Интересно, а Вы представляете себе механизм обработки irq под ОС Linux, т.е. какие процедуры выполняет CPU и почему в итоге мы имеем время реакции порядка 60 мкс? Сохранение и восстановление контекста задачи должно занимать не более 5мкс. Что делает ARM все остальное время, где об этом достаточно подробно и на пальцах расписано? Спасибо.
|
|
|
|
|
Aug 1 2012, 14:12
|

Практикующий маг
     
Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576

|
Цитата(skyv @ Aug 1 2012, 14:24)  Интересно, а Вы представляете себе механизм обработки irq под ОС Linux, т.е. какие процедуры выполняет CPU и почему в итоге мы имеем время реакции порядка 60 мкс? Сохранение и восстановление контекста задачи должно занимать не более 5мкс. Что делает ARM все остальное время, где об этом достаточно подробно и на пальцах расписано? Спасибо. Мне тоже интересно  Дело в том что под Linux проект делал другой человек, и ему была поставлена конкретная задача -определить время реакции ОС на прерывание. Я конечно могу попросить у него исходники, но в них надо будет разбираться. А поскольку особой нужны в ОС не стоит, я решил от нее отказаться. Сам программист ответить почему такие задержки не может, а у меня просто нет времени разбираться что там да как. Хотя конечно интересно) Цитата(_Артём_ @ Aug 1 2012, 17:03)  Листинг покажите?
В АРМ они чуть ли не одной командой запихиваются. Наверно имелось ввиду не команд а тактов, хотя тактов уходит гораздо больше. Там командо-то одна, но выполняется дюже долго. Вот сегодня к примеру смотрел сколько уходит времени у проца (AT91SAM9G45) с момента возникновения прерывания до входа в него и выставления единицы на ножке - около 850нс. Это при его 400МГц тактовой. Не мало вообщемто, ассемблерный код вызова IRQ - стандартный для ARM'ов (как мне показалось, особо не вчитывался) оптимизация максимальная, IAR 6.30. Когдато для SAM7 пробовал я уменьшить это время используя FIQ и самописный код, который сохранял только несколько РОНов (4 вроде) и отказавшись от вложенных прерываний. Для самого прерывания это тоже не есть гуд -в само прерывание входим быстро, а в нем приходится делать лишние телодвижения изза малого кол-ва свободных РОН. Короче время входа в прерывание уменьшилось раза в 2, точнее могу посмотреть записи, но все равно меня не впечатлило, остался осадочек. Вообщем согласен с rudy_b. В датащитах и презентациях все очень красиво и вкусно, только почемуто в реальном коде это не реализовано, -там все гораздо гораздо хуже...
|
|
|
|
Сообщений в этой теме
Alexashka Частота прерываний под Linux'ом Jul 27 2012, 11:01     Alexashka Цитата(aaarrr @ Aug 1 2012, 18:33) Тактов... Aug 1 2012, 23:05    rudy_b Цитата(Ruslan1 @ Aug 1 2012, 15:55) Укажи... Aug 2 2012, 01:23     demiurg_spb 2ТС: А вы RT-path накладывали при сборке Linux... Aug 2 2012, 06:14  rudy_b Цитата(Alexashka @ Jul 31 2012, 16:48) ..... Aug 1 2012, 12:38   Ruslan1 Цитата(rudy_b @ Aug 1 2012, 15:38) Ага, и... Aug 1 2012, 12:55   _Артём_ Цитата(rudy_b @ Aug 1 2012, 15:38) Если п... Aug 1 2012, 13:03 Alexashka Померял: 10 NOP'ов из внутренней SRAM выполняю... Aug 3 2012, 12:14 aaarrr Цитата(Alexashka @ Aug 3 2012, 16:14) Пом... Aug 3 2012, 12:40  Alexashka Цитата(aaarrr @ Aug 3 2012, 16:40) Естест... Aug 6 2012, 19:29   aaarrr Цитата(Alexashka @ Aug 6 2012, 23:29) Мне... Aug 6 2012, 20:52 _Pasha Цитата(Alexashka @ Aug 3 2012, 15:14) 10 ... Aug 3 2012, 14:16  aaarrr Цитата(_Pasha @ Aug 3 2012, 18:16) Надо б... Aug 3 2012, 14:42 Alexashka Нашел интересную ссылочку, может кому пригодится..... Aug 8 2012, 18:32 rudy_b Ага, это весьма похоже на правду. Т.е. задержка от... Aug 9 2012, 12:58  demiurg_spb Ну почему-же? Вполне себе реалтайм, просто кому-то... Aug 9 2012, 13:37   Ruslan1 Извиняюсь, но мне кажется, что иногда (по моим наб... Aug 9 2012, 19:04    rudy_b С одной стороны - так, с другой - не так. Ежели уж... Aug 10 2012, 19:08     R.A.K. Цитата(rudy_b @ Aug 10 2012, 23:08) С одн... Aug 10 2012, 19:46      rudy_b Цитата(R.A.K. @ Aug 10 2012, 22:46) ...Ре... Aug 10 2012, 20:58       R.A.K. Цитата(rudy_b @ Aug 11 2012, 00:58) Да и ... Aug 10 2012, 21:23        rudy_b Цитата(R.A.K. @ Aug 11 2012, 00:23) Так о... Aug 11 2012, 14:25 jks Разница между мягким и жестким реалтаймом не в джи... Aug 11 2012, 12:33 TigerSHARC Господа, я надеюсь действующая полемика не относит... Aug 11 2012, 12:43 Alexashka Цитата(TigerSHARC @ Aug 11 2012, 16:43) Г... Aug 11 2012, 23:13  TigerSHARC Цитата(Alexashka @ Aug 12 2012, 03:13) Ес... Aug 12 2012, 07:03   Alexashka Цитата(TigerSHARC @ Aug 12 2012, 11:03) З... Aug 12 2012, 18:44    Dubov По-моему тоже можно непарится насчёт буфера и дела... Aug 13 2012, 04:59     aaarrr Цитата(Dubov @ Aug 13 2012, 08:59) По-мое... Aug 13 2012, 07:27      TigerSHARC Цитата(aaarrr @ Aug 13 2012, 10:27) Сотни... Aug 13 2012, 19:36       aaarrr Цитата(TigerSHARC @ Aug 13 2012, 23:36) м... Aug 13 2012, 19:45       Alexashka Цитата(TigerSHARC @ Aug 13 2012, 23:36) П... Aug 13 2012, 22:46        sasamy Цитата(Alexashka @ Aug 14 2012, 02:46) А ... Aug 16 2012, 18:31         TigerSHARC Цитата(sasamy @ Aug 16 2012, 21:31) делае... Aug 17 2012, 05:52          sasamy Цитата(TigerSHARC @ Aug 17 2012, 09:52) п... Aug 17 2012, 06:29 TigerSHARC Скачайте ванильное ядро Linux. Папка /drivers/stag... Aug 14 2012, 05:50 Alexashka Цитата(TigerSHARC @ Aug 14 2012, 09:50) С... Aug 15 2012, 19:35 TigerSHARC Ничем не отличаются, те же самые прерывания.
А гд... Aug 16 2012, 07:29 Alexashka Цитата(TigerSHARC @ Aug 16 2012, 11:29) В... Aug 16 2012, 15:45 TigerSHARC Посмотрите вот этот аппарат: uake.ru
Работает по L... Aug 16 2012, 17:35 TigerSHARC to sasamy:
Интересный подход. Но если инженеры AD ... Aug 17 2012, 13:03 sasamy Цитата(TigerSHARC @ Aug 17 2012, 17:03) 1... Aug 17 2012, 13:34  Alexashka Цитата(sasamy @ Aug 17 2012, 17:34) 2) да... Aug 17 2012, 14:16   sasamy Цитата(Alexashka @ Aug 17 2012, 18:16) Ту... Aug 17 2012, 15:27    Alexashka Цитата(sasamy @ Aug 17 2012, 19:27) Делае... Aug 17 2012, 19:20     sasamy Цитата(Alexashka @ Aug 17 2012, 23:20) Т.... Aug 17 2012, 21:01 TigerSHARC sasamy предложил красивое решение, но если взять п... Aug 17 2012, 20:18 TigerSHARC Получается PDC настраивается один раз во время ини... Aug 18 2012, 06:06 sasamy Цитата(TigerSHARC @ Aug 18 2012, 10:06) B... Aug 19 2012, 21:34
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|