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

 
 
> Real-time и не-real-time - в одном флаконе или раздельно?
syoma
сообщение Oct 26 2017, 09:41
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Привет. Собственно вопрос из области начинающих по архитектуре процессорной системы. Делаем новый проект и возник вопрос.
С одной стороны есть программа, работающая в жестком реальном времени с коммуникацией, через CAN, SPI и RS485. Это основная функция системы.
С другой стороны есть куча других интерфейсов - SD card, Ethernet, USB и прочих, которые служат для вспомогательных функций - записи логов, параметрирования, обновления ПО, удаленного доступа через WEB и bluetooth, терминалки и т.д.

Если все это реализовывать на одном процессоре, то получается, что надо использовать RTOS, что требует определенных программистских навыков и не нравится то, что это уменьшает защиту системы от внешних хакерских атак. Если из-за Ethernetа зависнет основная программа - это будет очень-очень плохо. Т.е. в результате увеличиваем затраты на разработку, делаем сложную программу, но уменьшаем стоимость железа.
Поэтому у меня настрой такой, что основной процессор должен выполнять только основную real-time программу и все. При этом ему не нужна операционная система вообще, так как нужные интерфейсы реализуются как функции ввода/вывода - это уже реализовано и проверено.
А для всего остального поставить отдельный процессор или даже платку, на которой будет крутиться обыкновенный Linux со всеми нужными драйверами. И с основным процессором эта плата будет общаться только через CAN. В этом случае практически все функции будут уже реализованы в самом ядре и программисту надо будет сделать очень мало и хоть на питоне или джаве. То есть затраты на разработку будут гораздо меньше, имеем барьер от хакерских атак - если этот процессор зависнет, система будет прекрасно работать дальше, но увеличиваем стоимость железа.

Как думаете это нормальный подход сегодня?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Студент заборстр...
сообщение Nov 3 2017, 03:51
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 317
Регистрация: 16-09-17
Пользователь №: 99 334



А какие проблемы-то? (я к вопросу темы)
Фоновый поток не реалтайм, а приоритетные потоки - реалтайм.
Тут нет никакой проблемы.
А проблема в том, чтобы при наличии вытесняющей многозадачности низкоприоритетным потокам тоже гарантировать пусть и бОльшее, чем высокоприоритетным потокам, но ГАРАНТИРОВАННОЕ время реакции.

Это проблема хоть и сложней, но вполне решаема.
Я в разработанной мной RTOS её решил
Go to the top of the page
 
+Quote Post
mantech
сообщение Nov 3 2017, 07:11
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Студент заборстроительного @ Nov 3 2017, 06:51) *
А проблема в том, чтобы при наличии вытесняющей многозадачности низкоприоритетным потокам тоже гарантировать пусть и бОльшее, чем высокоприоритетным потокам, но ГАРАНТИРОВАННОЕ время реакции.


Кто мешает делать критичные ко времени задачи на прерываниях? Никогда проблем с этим не было...
Go to the top of the page
 
+Quote Post
Студент заборстр...
сообщение Nov 3 2017, 15:21
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 317
Регистрация: 16-09-17
Пользователь №: 99 334



Цитата(mantech @ Nov 3 2017, 10:11) *
Кто мешает делать критичные ко времени задачи на прерываниях? Никогда проблем с этим не было...

Если поток прерываний слишком большой, он "забьёт" более низкоприоритетные, но все равно реал-таймовые задачи.

Я пошёл по пути гарантированного тайм-слота для задач с приоритетами класса 2

Цитата(AlexandrY @ Nov 3 2017, 11:19) *
С ваши подходом можно и Windows 10 считать RTOS.

С цитированием по внимательней будьте.
Я так понял, это Вы к вот этому:
Цитата
Понятие "реальное время" перпендикулярно тому, через сколько времени ртось среагирует на событие.

Если ртось УСПЕВАЕТ ВОВРЕМЯ среагировать и обработать евент за ДЕТЕРМИНИРОВАННОЕ время и это время устраивает заказчика, значит это ртось. Даже если время реакции сотни милисекунд

К примеру если цикл ПЛК 0.5 секунды то нафига успевать среагировать и обрабатывать евент за микросекунды?

А не к тому, что процитировали

Изучив десятки RTOS, теорию их построения и перепробовав различные варианты построения RTOS я в конце концов вообще я отказался от использования прерываний.
Посколько с ними трудно динамически менять приоритет прерываний как тебе заблагорассудится и жесткий реалтайм для всех потоков трудно реализовать.
Точнее у меня работал только одно прерывание. Таймерное.
Все остальные прерывания работали по механизму поллинга их флагов.
Да получился большой оверхед. В том смысле, что процессор почти 70% времени проводил в таймерном прерывании.

Ну и что?
Проблему решил просто: взял проц с более высокой (на 500% выше чем нужно для моих задач) тактовой. И что? сейчас процессоры стоят дешевле грязи. А вот софт к ним стоит огого. Поэтому лучше купить проц подороже, но сэкономить на софте

Зато реализация RTOS получилась очень простой, красивой и надёжной. И жесткий реалтайм получился ГАРАНТИРОВАННЫМ при вытесняющей многозадачности

Более того.
У меня не только была реализована вытесняющая многозадачность. Но и отсутствие зависания даже самых низкоприоритетных потоков.
Посколько классу низкоприоритетных потоков все равно гарантировался тайм-слот

Проблема дедлоков тоже была решена за счет выбора архитектуры построения RTOS

Таким образом у моей RTOS был только один "минус": 70% времени процессора занимал микродиспетчер, находившийся в таймерном прерывании. Т.е. на диспетчеризацию уходило 70% процессорного времени, а на выполнение "полезной работы" - всего 30%. Но с этим можно смириться. Выбрав более мощный проц

Сообщение отредактировал Студент заборстроительного - Nov 3 2017, 15:24
Go to the top of the page
 
+Quote Post
mantech
сообщение Nov 3 2017, 17:39
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Студент заборстроительного @ Nov 3 2017, 18:21) *
Если поток прерываний слишком большой, он "забьёт" более низкоприоритетные, но все равно реал-таймовые задачи.

Я пошёл по пути гарантированного тайм-слота для задач с приоритетами класса 2


Сразу вижу противоречие. Т.е. если возьмем один и тот же процессор, и если у него не хватает быстродействия для обработки прерываний, и он забьет остальные прерывания, то это означает одно - неправильный выбор быстродействия проца, т.к. в этом случае ваша ОС просто пропустит это событие, находясь в другой задаче или в блоке переключения контекста.
Go to the top of the page
 
+Quote Post
Студент заборстр...
сообщение Nov 4 2017, 08:17
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 317
Регистрация: 16-09-17
Пользователь №: 99 334



Цитата(mantech @ Nov 3 2017, 20:39) *
Сразу вижу противоречие. Т.е. если возьмем один и тот же процессор, и если у него не хватает быстродействия для обработки прерываний, и он забьет остальные прерывания, то это означает одно - неправильный выбор быстродействия проца, т.к. в этом случае ваша ОС просто пропустит это событие, находясь в другой задаче или в блоке переключения контекста.

Поэтому я и пошёл по пути запрета всех прерываний кроме таймерного.
А другие прерывания опрашивал по механизму поллинга.
Я же писал: у меня проц больше 70% времени сидит в обработчике таймерного прерывания, а на "полезную работу" доступно менее 30% процессорного времени.

Кто-то скажет: это же не рационально, глупо, криво и т.п.
А я скажу: процессорное время стоит на ПОРЯДКИ дешевле, чем труд программиста.
И это мизерная цена за простоту и прозрачность кода и обеспечение жесткой реалтаймовости при вытесняющей многозадачности и многопоточности

Цитата(syoma @ Nov 3 2017, 21:17) *
хотя он, возможно, не самый эффективный по загрузке процессора - до 70%

Да плевать на загрузку процессора. Он же железный, вот и пусть пашет.
Труд программиста стоит на порядки дороже чем процессорные такты.
Я когда-то болел болезнью: экономить каждый такт CPU, старался писать код так, чтобы экономить такты. А потом понял, что моё время бесценно, а процессорное стоит копейки.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Nov 5 2017, 03:25
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(Студент заборстроительного @ Nov 4 2017, 12:17) *
Поэтому я и пошёл по пути запрета всех прерываний кроме таймерного.
А другие прерывания опрашивал по механизму поллинга.
Я же писал: у меня проц больше 70% времени сидит в обработчике таймерного прерывания, а на "полезную работу" доступно менее 30% процессорного времени.

Кто-то скажет: это же не рационально, глупо, криво и т.п.
А я скажу: процессорное время стоит на ПОРЯДКИ дешевле, чем труд программиста.
И это мизерная цена за простоту и прозрачность кода и обеспечение жесткой реалтаймовости при вытесняющей многозадачности и многопоточности


Да плевать на загрузку процессора. Он же железный, вот и пусть пашет.
Труд программиста стоит на порядки дороже чем процессорные такты.
Я когда-то болел болезнью: экономить каждый такт CPU, старался писать код так, чтобы экономить такты. А потом понял, что моё время бесценно, а процессорное стоит копейки.


Фигасе!. Что за такое таймерное прерывание?
В двух словах как работает preemptive real-time операционная система. Ядро получает возможность переключить задачу при системном вызове и после обработки прерывания.
Прерывания читают из железа (и пишут в железо) и разрешает семафор достаточно высокоприоритетной задаче, которая как бы является продолжением прерывание, поскольку при выходе из прерывания обработка будет переключена на нее если исполнялясь низкоприоритетная задача, но прерывания уже не будет.
Еще раз. Бежала какая-то низкоприоритетная задача, когда возникло условие для прерывания. Скажем приняли пакет данных в регистры приемника. В прерывании эти регистры копируются в буфер, буфер ставится в очередь буферов и отпускается семафор обработчика принятого буфера. Все. Выходим из прерывания. Эта работа достаточно короткая и в прерывании больше продолжать не надо. Отпущеный семафор меняет условия для ядра и из прерывания вы выходите не в ту задачу, что исполнялясь, а в ту, которая ждала семафора, поскольку ей нечего было обрабатывать. Фактически вы продолжаете обрабатывать прием, но уже не в прерывании.
Закон. Прерывания надо предельно минимизировать. Обработчик таймера, который считает время, вообще должен инкрементировать счетчик и выйти. Ну еще пару таких же простых операций если очень нужно. И все.

Поллинг самое нехорошее решение для реал тайма.
Если писать правильно, то все будет эффективно и с маленькими затратами. Я пару лет назад пытался описать принципы написания програм реального времени, но отчего-то публика начала возмущаться моей нескромностью и топик в котором я начал описывать технику написания програм реального времени перенесли в тему общение. Как мне объяснили, что раз меня не спрашивают, то и нефиг соваться. Так что если вам интересно -- создайте тему. Скажем "Как писать программы реального времени?", а люди будут вам отвечать. Вот тогда у вас будет пища для принятия решений.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 5 2017, 08:43
Сообщение #8


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Tarbal @ Nov 5 2017, 05:25) *
Еще раз. Бежала какая-то низкоприоритетная задача, когда возникло условие для прерывания. Скажем приняли пакет данных в регистры приемника. В прерывании эти регистры копируются в буфер, буфер ставится в очередь буферов и отпускается семафор обработчика принятого буфера. Все. Выходим из прерывания. Эта работа достаточно короткая и в прерывании больше продолжать не надо. Отпущеный семафор меняет условия для ядра и из прерывания вы выходите не в ту задачу, что исполнялясь, а в ту, которая ждала семафора, поскольку ей нечего было обрабатывать. Фактически вы продолжаете обрабатывать прием, но уже не в прерывании.

Так обработчики прерываний надо рассматривать как фрагменты задач если придерживаться концепции Rate-Monotonic Scheduling ?
Я вот это не понял.
Если смотреть на них, как на фрагменты задач, то тогда ваш подход прямо нарушает принцип монолитности.
Если же прерывания не фрагменты задач, а нечто другое, то какой принцип планирования применить к обработчикам прерываний.
И не будет ли он конфликтовать с Rate-Monotonic Scheduling?
Исходим из того что обработчики прерываний в высоконагруженной встраиваемой системе исчисляются десятками и занимают больше половины процессорного времени.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- syoma   Real-time и не-real-time - в одном флаконе или раздельно?   Oct 26 2017, 09:41
- - Kabdim   А RTOS у которой в кач-ве guestOS крутится тот же ...   Oct 26 2017, 10:36
- - k155la3   В промышленных контроллерах (PLC) практикуется ...   Oct 26 2017, 10:52
|- - AlexandrY   Цитата(k155la3 @ Oct 26 2017, 13:52) Собс...   Oct 26 2017, 12:24
|- - k155la3   Цитата(AlexandrY @ Oct 26 2017, 15:24) Да...   Oct 26 2017, 14:59
|- - AlexandrY   Цитата(k155la3 @ Oct 26 2017, 17:59) А ка...   Oct 26 2017, 17:08
|- - k155la3   Цитата(AlexandrY @ Oct 26 2017, 20:08) . ...   Oct 26 2017, 17:21
- - syoma   У нас как раз почти-промышленный контроллер - логи...   Oct 26 2017, 11:57
|- - Студент заборстроительного   Цитата(syoma @ Oct 26 2017, 14:57) У нас ...   Oct 28 2017, 17:56
|- - AlexandrY   Цитата(Студент заборстроительного @ Oct 28 20...   Oct 29 2017, 12:22
|- - mantech   Цитата(AlexandrY @ Oct 29 2017, 15:19) То...   Oct 29 2017, 12:25
||- - AlexandrY   Цитата(mantech @ Oct 29 2017, 14:25) Если...   Oct 29 2017, 12:27
|- - mantech   Цитата(AlexandrY @ Oct 29 2017, 15:22) Хм...   Oct 29 2017, 17:20
- - syoma   Ну вот с другой сторону смотрю на системы типа Twi...   Oct 26 2017, 12:44
|- - Lagman   Цитата(syoma @ Oct 26 2017, 15:44) что та...   Oct 26 2017, 13:39
|- - AlexandrY   Цитата(syoma @ Oct 26 2017, 15:44) Но там...   Oct 26 2017, 14:15
|- - syoma   Цитата(AlexandrY @ Oct 26 2017, 16:15) Ес...   Oct 26 2017, 14:38
- - syoma   ЦитатаОбслуживание цепей безопасности делают также...   Oct 27 2017, 07:50
|- - AlexandrY   Цитата(syoma @ Oct 27 2017, 10:50) Но тем...   Oct 27 2017, 08:26
|- - k155la3   Цитата(syoma @ Oct 27 2017, 10:50) . . . ...   Oct 27 2017, 10:17
- - syoma   ЦитатаПолучается большой черный ящик, с массой вхо...   Oct 27 2017, 15:20
|- - k155la3   Цитата(syoma @ Oct 27 2017, 18:20) . . . ...   Oct 27 2017, 15:47
|- - AlexandrY   Цитата(syoma @ Oct 27 2017, 18:20) Если д...   Oct 27 2017, 17:05
|- - mantech   Цитата(AlexandrY @ Oct 27 2017, 20:05) Да...   Oct 28 2017, 12:13
- - k155la3   У меня сейчас тоже проблема выбора OS или вообще б...   Oct 28 2017, 13:16
|- - AlexandrY   Цитата(k155la3 @ Oct 28 2017, 16:16) Дост...   Oct 28 2017, 14:03
||- - mantech   Цитата(AlexandrY @ Oct 28 2017, 17:03) В ...   Oct 28 2017, 15:41
|- - syoma   Цитата(k155la3 @ Oct 28 2017, 15:16) Собс...   Oct 28 2017, 14:04
|- - AlexandrY   Цитата(syoma @ Oct 28 2017, 17:04) так ка...   Oct 28 2017, 14:13
||- - syoma   Цитата(AlexandrY @ Oct 28 2017, 16:13) Эт...   Oct 28 2017, 15:42
|- - mantech   Цитата(syoma @ Oct 28 2017, 17:04) Допуст...   Oct 28 2017, 15:47
|- - k155la3   Цитата(syoma @ Oct 28 2017, 17:04) . . . ...   Oct 28 2017, 16:03
|- - mantech   Цитата(k155la3 @ Oct 28 2017, 19:03) Для ...   Oct 28 2017, 17:23
|- - k155la3   Цитата(mantech @ Oct 28 2017, 20:23) Шеде...   Oct 28 2017, 18:21
|- - mantech   Цитата(k155la3 @ Oct 28 2017, 21:21) Вы м...   Oct 28 2017, 18:28
- - syoma   ЦитатаВ любом нормально спроектированном софте не ...   Oct 29 2017, 09:35
|- - k155la3   >> В любом нормально спроектированном софте ...   Oct 30 2017, 21:21
|- - syoma   Цитата(k155la3 @ Oct 30 2017, 23:21) Можн...   Oct 31 2017, 10:52
|- - mantech   Цитата(k155la3 @ Oct 31 2017, 00:21) Можн...   Oct 31 2017, 14:10
- - syoma   ЦитатаХм, т.е. с одной стороны говорим - ой, какое...   Oct 29 2017, 19:33
|- - AlexandrY   Цитата(syoma @ Oct 29 2017, 21:33) Что зн...   Oct 30 2017, 06:46
|- - mantech   Цитата(AlexandrY @ Oct 30 2017, 09:46) Ру...   Oct 30 2017, 07:25
|- - gosha-z   Цитата(mantech @ Oct 30 2017, 10:25) Вы м...   Oct 30 2017, 07:34
|- - mantech   Цитата(gosha-z @ Oct 30 2017, 10:34)...   Oct 30 2017, 07:51
|- - gosha-z   Цитата(mantech @ Oct 30 2017, 10:51) Прав...   Oct 30 2017, 07:53
- - syoma   ЦитатаРушится обмен на всех шинах. Все слэйвы уход...   Oct 30 2017, 08:27
|- - AlexandrY   Цитата(syoma @ Oct 30 2017, 10:27) Можете...   Oct 30 2017, 08:53
- - Kabdim   Странно что никто еще не упомянул про формальную в...   Oct 31 2017, 08:21
|- - AlexandrY   Цитата(Kabdim @ Oct 31 2017, 10:21) Стран...   Oct 31 2017, 09:51
|- - Студент заборстроительного   Цитата(Kabdim @ Oct 31 2017, 11:21) Стран...   Oct 31 2017, 17:18
|- - AlexandrY   Цитата(Студент заборстроительного @ Oct 31 20...   Oct 31 2017, 19:31
- - Kabdim   Цитата(AlexandrY @ Oct 31 2017, 12:51) Са...   Oct 31 2017, 10:41
|- - AlexandrY   Цитата(Kabdim @ Oct 31 2017, 12:41) Вы не...   Oct 31 2017, 11:45
- - Kabdim   Если осилите HoL, то скорее всего вам не потребуют...   Oct 31 2017, 12:05
|- - AlexandrY   Цитата(Kabdim @ Oct 31 2017, 14:05) Если ...   Oct 31 2017, 12:27
- - Kabdim   Я даже готов с вами отчасти согласится о ненужност...   Oct 31 2017, 13:06
- - Kabdim   Ну хватит уже фантазировать о том что не осилили. ...   Nov 1 2017, 08:34
|- - AlexandrY   Цитата(Kabdim @ Nov 1 2017, 10:34) Ну хва...   Nov 1 2017, 08:53
- - Kabdim   Если бы вы прочитали первую ссылку, вас бы не приш...   Nov 1 2017, 09:04
|- - AlexandrY   Цитата(Kabdim @ Nov 1 2017, 11:04) Если б...   Nov 1 2017, 09:42
- - Kabdim   Так насчет вашего первого контраргумента что C код...   Nov 1 2017, 09:51
|- - AlexandrY   Цитата(Kabdim @ Nov 1 2017, 11:51) Так на...   Nov 1 2017, 10:40
|- - Kabdim   Цитата(AlexandrY @ Nov 1 2017, 13:40) По ...   Nov 1 2017, 10:55
- - syoma   Народ все это интересно, но может стоит обсуждать ...   Nov 1 2017, 10:59
|- - AlexandrY   Цитата(syoma @ Nov 1 2017, 12:59) Народ в...   Nov 1 2017, 11:07
||- - syoma   Цитата(mantech @ Nov 3 2017, 09:11) Кто м...   Nov 3 2017, 10:55
||- - AlexandrY   Цитата(Студент заборстроительного @ Nov 3 201...   Nov 3 2017, 17:03
|||- - Студент заборстроительного   Цитата(AlexandrY @ Nov 3 2017, 20:03) Это...   Nov 3 2017, 17:20
|||- - Студент заборстроительного   Цитата(Tarbal @ Nov 5 2017, 06:25) В двух...   Nov 5 2017, 07:44
||- - mantech   Цитата(Студент заборстроительного @ Nov 4 201...   Nov 5 2017, 09:17
||- - Студент заборстроительного   Цитата(mantech @ Nov 5 2017, 12:17) для с...   Nov 5 2017, 09:24
||- - mantech   Цитата(Студент заборстроительного @ Nov 5 201...   Nov 5 2017, 11:29
|- - AlexandrY   Цитата(Студент заборстроительного @ Nov 3 201...   Nov 3 2017, 08:19
|- - mantech   Цитата(AlexandrY @ Nov 3 2017, 11:19) У м...   Nov 3 2017, 08:57
|- - AlexandrY   Цитата(mantech @ Nov 3 2017, 10:57) Да ва...   Nov 3 2017, 09:32
- - Pavia   Для AlexandrY ЦитатаЭто не зависания оси, это пере...   Nov 3 2017, 14:39
- - syoma   Если говорить о многозадачности, то у меня будет R...   Nov 3 2017, 18:17
- - syoma   ЦитатаЕсли же прерывания не фрагменты задач, а неч...   Nov 5 2017, 09:05
|- - AlexandrY   Цитата(syoma @ Nov 5 2017, 11:05) Тут ест...   Nov 5 2017, 13:39
- - Rst7   Moderator: Уважаемые, настоятельно призываю верну...   Nov 6 2017, 09:23
- - syoma   ЦитатаТут вы сделали себе логичекую ловушку. Если ...   Nov 6 2017, 09:48
|- - AlexandrY   Цитата(syoma @ Nov 6 2017, 11:48) Не очен...   Nov 6 2017, 10:47
- - one_eight_seven   Цитатадопустили возможность прихода нового пакета ...   Nov 6 2017, 11:35
- - syoma   ЦитатаВы допустили возможность прихода нового паке...   Nov 6 2017, 11:38
|- - AlexandrY   Цитата(syoma @ Nov 6 2017, 13:38) Не, не....   Nov 6 2017, 13:51
|- - syoma   Цитата(AlexandrY @ Nov 6 2017, 16:51) Тог...   Nov 6 2017, 14:22
|- - Tarbal   Цитата(syoma @ Nov 6 2017, 18:22) Я собир...   Nov 7 2017, 04:18
|- - AlexandrY   Цитата(Tarbal @ Nov 7 2017, 06:18) Занима...   Nov 7 2017, 06:12
|- - Студент заборстроительного   Цитата(AlexandrY @ Nov 7 2017, 09:12) Она...   Nov 7 2017, 18:23
||- - AlexandrY   Цитата(Студент заборстроительного @ Nov 7 201...   Nov 7 2017, 20:29
|- - Tarbal   Цитата(AlexandrY @ Nov 7 2017, 10:12) Ссы...   Nov 8 2017, 00:37
- - syoma   Цитатапогибнут люди или угробится оборудование сто...   Nov 8 2017, 09:58
- - Tarbal   Цитата(syoma @ Nov 8 2017, 12:58) Все-так...   Nov 9 2017, 00:34
2 страниц V   1 2 >


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

 


RSS Текстовая версия Сейчас: 21st June 2025 - 20:41
Рейтинг@Mail.ru


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