|
Реальное время в Linux user space, Сколько оно нереально? |
|
|
|
 |
Ответов
|
Jun 22 2006, 07:17
|
Группа: Новичок
Сообщений: 6
Регистрация: 19-12-05
Пользователь №: 12 389

|
Вообще, по моему скромному мнению, следует внести опрос портов IO в kernel space с последующей записью в файл устройства. А далее из user space жрать из этого файла устройство все, что надо. Если есть беспокойство по поводу того, что ядро не даст нужного приоритета для kernel module, есть один вариант (я как-то его реализовывал, но придумал не сам). Если надо, потом попробую описать.
|
|
|
|
|
Jun 22 2006, 18:22
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892

|
Цитата(Harbour @ Jun 22 2006, 20:00)  Нет, не надо - user space realtime это уже давно прошедший этап в RTAI. Я помню про RTAI - с Вашей подачи познакомился с этим чудом с полгода назад. Но он есть далеко не для всех процов! Для "народного" AT91RM9200 нету. Для PXA270 свободного не видел. Вот тут хотят 300 евро, причем за image - непонятно, как там насчет GPL и исходников... http://www.vollmann.ch/en/colibri/shop.html#pro_supportДля Cirrus EP93xxx RTAI есть - но не тянет меня на эти процы по ряду причин. Цитата(bigirbis @ Jun 22 2006, 14:06)  В принципе, ничего сложного. Могу порекомендовать переводную книгу по этой теме: http://www.nclug.ru/wiki/index.php?page=knz_ldd2 (Linux Device Drivers 2nd edition) Если надо - приаттачу простой код Спасибо за желание помочь - это очень приятно. LDD2, LDD3 у меня есть, с "техническим" английким проблем не испытываю. Есть даже переведенная книжка Померанца по программированию kernel module. Но как-то стремно нырять в этот омут. Цитата(bigirbis @ Jun 22 2006, 14:06)  Тогда все нужно описывать в kernel space и уповать, что проца хватит (в должном объеме) и на эту нитку тоже... Судя по постановке задачи, жрущих процессорное время в 3 горла процессов нет, да и активируются они редко. Тогда: 1) если не очень принципиальны редкие задержки - разделить код на User и Kernel Space 2) если очень принципиально - все в kernel space. Я хотел вариант lite написать в user space (при помощи всяких внешних аппаратных ухищрений доведя допустимую девиацию до 100 мс), а затем, по мере набора опыта, перетащить полностью или целиком в kernel space.
|
|
|
|
|
Jun 23 2006, 09:06
|

Местами Гуру
    
Группа: Validating
Сообщений: 1 103
Регистрация: 5-12-04
Пользователь №: 1 323

|
Цитата(Evgeny_CD @ Jun 22 2006, 21:22)  Цитата(Harbour @ Jun 22 2006, 20:00)  Нет, не надо - user space realtime это уже давно прошедший этап в RTAI. Я помню про RTAI - с Вашей подачи познакомился с этим чудом с полгода назад. Но он есть далеко не для всех процов! Для "народного" AT91RM9200 нету. Для PXA270 свободного не видел. Вот тут хотят 300 евро, причем за image - непонятно, как там насчет GPL и исходников... http://www.vollmann.ch/en/colibri/shop.html#pro_supportДля Cirrus EP93xxx RTAI есть - но не тянет меня на эти процы по ряду причин. Цитата(bigirbis @ Jun 22 2006, 14:06)  В принципе, ничего сложного. Могу порекомендовать переводную книгу по этой теме: http://www.nclug.ru/wiki/index.php?page=knz_ldd2 (Linux Device Drivers 2nd edition) Если надо - приаттачу простой код Спасибо за желание помочь - это очень приятно. LDD2, LDD3 у меня есть, с "техническим" английким проблем не испытываю. Есть даже переведенная книжка Померанца по программированию kernel module. Но как-то стремно нырять в этот омут. Цитата(bigirbis @ Jun 22 2006, 14:06)  Тогда все нужно описывать в kernel space и уповать, что проца хватит (в должном объеме) и на эту нитку тоже... Судя по постановке задачи, жрущих процессорное время в 3 горла процессов нет, да и активируются они редко. Тогда: 1) если не очень принципиальны редкие задержки - разделить код на User и Kernel Space 2) если очень принципиально - все в kernel space. Я хотел вариант lite написать в user space (при помощи всяких внешних аппаратных ухищрений доведя допустимую девиацию до 100 мс), а затем, по мере набора опыта, перетащить полностью или целиком в kernel space. Какой arm значения не имеет - клавное что архитектура поддерживается ядром, заточить ядро под новый камень (их в за год с десяток появляется) дело одно-двух дней. Такой древний камень как AT91RM9200 работает под linux'ом давно, RTAI его держит, по памяти, с 2005 года. Если требования к задаче довольно строги - перенос в kernel space особого рояля не играет. Цитата(Olej @ Jun 23 2006, 11:18)  Цитата(Evgeny_CD @ Jun 22 2006, 21:22)  Я хотел вариант lite написать в user space (при помощи всяких внешних аппаратных ухищрений доведя допустимую девиацию до 100 мс), а затем, по мере набора опыта, перетащить полностью или целиком в kernel space.
Я бы так и делал, и, может оказаться, не только в lite, но и в конечном варианте... Я не скажу наверняка, как это будет в Linux (я это не проверял), но в QNX - разумно распорядившись приоритетами, можно гарантировать, что время начала операции будет плавать между 2-4 ticksize ... но всё, что касается диспетчеризации, вытеснения + деталей отработки службы времени (а там всё совсем не очевидно) - это всё регламентируется моделями POSIX, а одна и другая ОС в той или иной мере пытаются следовать POSIX. Мне кажется, что при ticksize=10мс. вы должны определённо вписаться в 100мс. интервал, если обезопаситься от всех неожиданностей + разумно распорядиться приоритетами + использовать только статические приоритеты при RR диспетчеризации (это те, кторые RT - об этом хорошо растолковывается в такой книжке "Ядро LINUX с комментариями" ... или как-то так - нет под рукой). Потом результат можно легко проверить на адекватность ... и у вас ещё остаётся возможность переопределить в ядре ticksize в сторону уменьшения. P.S. в конечном счёте, если это серьёзная нужда и не лень повозиться, я готов специально найти, вырезать и выслать из книжки: http://www.books.ru/shop/books/357604- раздельчик, где специально ставилась задача синхронизации с наименьшей дисперсией интервала, с проверкой результата (это под QNX, но GCC - может быть "в лоб" перенесено в LINUX и проверено) ... это не совсем то, но очень близкие вещи - может на что-то натолкнуть. А кстати как QNX, атмеловские кристаллы держит ? P.S. Вот линка на текущий порт linux на атмеловское чудо: http://maxim.org.za/AT91RM9200/2.6/
|
|
|
|
Сообщений в этой теме
Evgeny_CD Реальное время в Linux user space Jun 21 2006, 08:51 makc Тут еще вопрос в том, с какой частотой будет вызыв... Jun 21 2006, 08:55 Evgeny_CD Цитата(makc @ Jun 21 2006, 12:55) Тут еще... Jun 21 2006, 09:01  makc Цитата(Evgeny_CD @ Jun 21 2006, 13:01) Ци... Jun 21 2006, 09:13   Evgeny_CD Цитата(makc @ Jun 21 2006, 13:13) Это мож... Jun 21 2006, 09:17 Olej Цитата(makc @ Jun 21 2006, 11:55) Тут еще... Jun 22 2006, 08:03 COMA Задам свой вопрос.
Если написать демон или драйвер... Jun 21 2006, 09:19 Harbour Ни фига не гарантируется, вот навскидку несколько ... Jun 21 2006, 21:52 Evgeny_CD Цитата(Harbour @ Jun 22 2006, 01:52) - сп... Jun 21 2006, 22:07 makc Цитата(bigirbis @ Jun 22 2006, 11:17) Есл... Jun 22 2006, 07:28  bigirbis Цитата(makc @ Jun 22 2006, 11:28) Цитата(... Jun 22 2006, 07:39  bigirbis Цитата(Evgeny_CD @ Jun 22 2006, 13:26) Ци... Jun 22 2006, 10:06    Olej Цитата(Evgeny_CD @ Jun 22 2006, 21:22) Я ... Jun 23 2006, 08:18     Evgeny_CD Цитата(Olej @ Jun 23 2006, 12:18) P.S. в ... Jun 23 2006, 08:25 Olej Цитата(bigirbis @ Jun 22 2006, 10:17) Воо... Jun 22 2006, 09:32 Olej Цитата(Evgeny_CD @ Jun 21 2006, 11:51) Ас... Jun 22 2006, 09:07 Илья Игоревич Решение есть. Появилось совсем недавно, в виде пат... Aug 8 2006, 13:47 Harbour Это так называемые RT патчи от Молнара - к реалтай... Aug 8 2006, 17:26 Илья Игоревич Ой-Ой-Ой. Отписал не в ту тему, прошу меня извинит... Aug 8 2006, 22:18 Harbour Если переключение/и т.д. будет зависеть от ядра - ... Aug 9 2006, 05:53 haker_fox Прошу прощение за поднятие старой темы. Но для мен... Feb 26 2013, 02:28 alx2 Правильно.
Во-первых, sleep(100) отправит процесс ... Feb 26 2013, 04:06  haker_fox QUOTE (alx2 @ Feb 26 2013, 13:06) Правиль... Feb 26 2013, 09:36   sasamy ЦитатаRT патчи особо не интересуют, отношение поче... Feb 26 2013, 11:21    haker_fox QUOTE (sasamy @ Feb 26 2013, 20:21) ну а ... Feb 26 2013, 12:48 Enthusiast Используя программное таймерное прерывание "Л... Mar 2 2013, 17:35 haker_fox QUOTE (Enthusiast @ Mar 3 2013, 02:35) Ка... Mar 3 2013, 05:54
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|