реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Возможна ли 1мС + 4 таймера под Linux ?, Если возможно, как выдержать 1 мС под Linux
Master
сообщение Dec 4 2007, 08:05
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 170
Регистрация: 26-05-05
Из: Москва
Пользователь №: 5 405



Всем большой привет!

Собственно, сабж + его описание.

А если данной возможности не существует, какую ось взять?

Поясню. Заказчик хочет получить возможность пользоваться 4мя таймерами и отсчитывать интервалы от 1мС до сотен секунд. Насчёт таймеров Заказчик не конкретизирует, аппаратные они будут или программные.

Конфигурация системы: Cirrus Logic EP9315 (ARM920T, 200 МГц), 64Мб ОЗУ, 8 Мб flash. В процессоре есть 4 аппаратных таймера, один из которых, соответственно, используется как системный.

Попробовали реализовать через userspace с использованием select, не получилось выдержать даже 10 мС.
Подскажите пожалуйста help.gif , в какую сторону копать.

Заранее спасибо!

P.S. Сильно ногами не пинайте, с Linux начал разбираться недавно.
Go to the top of the page
 
+Quote Post
Harbour
сообщение Dec 8 2007, 07:51
Сообщение #2


Местами Гуру
*****

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



обычно есть два варианта:

soft realtime: preempt-rt kernel + POSIX sched priorities или hrtimers (avaliable only for 2.6.x kernels)
hard realtime: xenomai (based on adeos infrastructure)

Плотно работаю с последним вариантом, как наиболее предсказуемым и продуманным (в плане API) по сравнению с остальными существующими в природе RT фреймворками. Также приятно что оно есть под x86 и прочие архитектуры (ia64/x86_64/arm/powerpc/blackfin/arm/mips/sh-4), что позволяет потренироваться на кошках пока делают очередную железяку.
Go to the top of the page
 
+Quote Post
Master
сообщение Dec 9 2007, 19:08
Сообщение #3


Частый гость
**

Группа: Новичок
Сообщений: 170
Регистрация: 26-05-05
Из: Москва
Пользователь №: 5 405



Цитата(Harbour @ Dec 8 2007, 10:51) *
обычно есть два варианта:

soft realtime: preempt-rt kernel + POSIX sched priorities или hrtimers (avaliable only for 2.6.x kernels)
hard realtime: xenomai (based on adeos infrastructure)

Плотно работаю с последним вариантом, как наиболее предсказуемым и продуманным (в плане API) по сравнению с остальными существующими в природе RT фреймворками. Также приятно что оно есть под x86 и прочие архитектуры (ia64/x86_64/arm/powerpc/blackfin/arm/mips/sh-4), что позволяет потренироваться на кошках пока делают очередную железяку.

Ух ты! yeah.gif Уже надежду потерял, что кто-нибудь ответит, а тут... да ещё сам Harbour! a14.gif
Как раз по первому пути решил сам пойти. В пятницу бодал Busybox 1.8.2 с nice на борту.
Попробовал запустить перебрасывание ноги на rt-kernel 2.6.23.9 - получилось около 700 нан за период, что порадовало, так как мне нужно уложиться в 1 мСек при... хм, вобщем, небольшой загрузке проца. Мацаю EP9315 с 64 Мб ОЗУ на 200МГц.

Хоть возможно и устроит меня первый способ, подскажите пожалуйста литературу по второму способу. Про hard realtime где-то в инете натыкался, но практически не щупал.
Go to the top of the page
 
+Quote Post
Harbour
сообщение Dec 10 2007, 07:44
Сообщение #4


Местами Гуру
*****

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



Маленькие задержки могут быть из-за недостаточных тестов на загрузку wink.gif
Хотя на embedded платформах замечены весьма достойные цифры и для soft-rt - в основном из-за простой и предсказуемой архитектуры и связей CPU<->периферия. Но лучше задать борде какой-нить серьезный irq-storm wink.gif
По второму варианту можно начать с www.xenomai.org , разделы FAQ, HowTo, Examples.
Go to the top of the page
 
+Quote Post
Master
сообщение Dec 10 2007, 13:01
Сообщение #5


Частый гость
**

Группа: Новичок
Сообщений: 170
Регистрация: 26-05-05
Из: Москва
Пользователь №: 5 405



Цитата(Harbour @ Dec 10 2007, 10:44) *
По второму варианту можно начать с www.xenomai.org , разделы FAQ, HowTo, Examples.
Спасибо.
Цитата(Harbour @ Dec 10 2007, 10:44) *
Маленькие задержки могут быть из-за недостаточных тестов на загрузку wink.gif
Да, конечно, 700 нан - это вообще без прикладных процессов.
Цитата
Хотя на embedded платформах замечены весьма достойные цифры и для soft-rt - в основном из-за простой и предсказуемой архитектуры и связей CPU<->периферия. Но лучше задать борде какой-нить серьезный irq-storm wink.gif
Пока пытаюсь хоть как-нибудь.
Попробовал select - он, как оказалось, отсчитывает с периодом 10мС sad.gif
Посоветуйте плиз, как выдержать милисекунду help.gif
Go to the top of the page
 
+Quote Post
Harbour
сообщение Dec 10 2007, 21:31
Сообщение #6


Местами Гуру
*****

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



Дык, похоже система hires не держит. Проверить систему на наличие подходящих таймеров (предварительно включив в ядре CONFIG_HIGH_RES_TIMERS=y) можно сделав 'cat /proc/timers_list | grep resolution' - должно выдать список таймеров и разрешение для них в 1 nsec. Далее можно проверить разрешение posix подсистемы таймеров, с помощью например такой фигни :
........
#include <unistd.h>
#include <time.h>

int main()
{
struct timespec clock_resolution;
int stat = clock_getres(CLOCK_REALTIME, &clock_resolution);
return printf("Clock resolution is %d seconds, %ld nanoseconds\n",
clock_resolution.tv_sec, clock_resolution.tv_nsec);
}
........
Должна выдать :

Clock resolution is 0 seconds, 1 nanoseconds

См. например http://mia.ece.uic.edu/~papers/WWW/books/posix4/DOCU_007.HTM

P.S. Статус hrtimers для ARM (судя по http://elinux.org/High_Resolution_Timers) неизвестен. Но в любом случае удачно написанный драйвер какой-нибудь подсистемы может свести на нет усилия при soft-rt approach. Adeos этим не страдает wink.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 03:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01376 секунд с 7
ELECTRONIX ©2004-2016