|
Real-time и не-real-time - в одном флаконе или раздельно? |
|
|
|
Oct 26 2017, 09:41
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Привет. Собственно вопрос из области начинающих по архитектуре процессорной системы. Делаем новый проект и возник вопрос. С одной стороны есть программа, работающая в жестком реальном времени с коммуникацией, через CAN, SPI и RS485. Это основная функция системы. С другой стороны есть куча других интерфейсов - SD card, Ethernet, USB и прочих, которые служат для вспомогательных функций - записи логов, параметрирования, обновления ПО, удаленного доступа через WEB и bluetooth, терминалки и т.д.
Если все это реализовывать на одном процессоре, то получается, что надо использовать RTOS, что требует определенных программистских навыков и не нравится то, что это уменьшает защиту системы от внешних хакерских атак. Если из-за Ethernetа зависнет основная программа - это будет очень-очень плохо. Т.е. в результате увеличиваем затраты на разработку, делаем сложную программу, но уменьшаем стоимость железа. Поэтому у меня настрой такой, что основной процессор должен выполнять только основную real-time программу и все. При этом ему не нужна операционная система вообще, так как нужные интерфейсы реализуются как функции ввода/вывода - это уже реализовано и проверено. А для всего остального поставить отдельный процессор или даже платку, на которой будет крутиться обыкновенный Linux со всеми нужными драйверами. И с основным процессором эта плата будет общаться только через CAN. В этом случае практически все функции будут уже реализованы в самом ядре и программисту надо будет сделать очень мало и хоть на питоне или джаве. То есть затраты на разработку будут гораздо меньше, имеем барьер от хакерских атак - если этот процессор зависнет, система будет прекрасно работать дальше, но увеличиваем стоимость железа.
Как думаете это нормальный подход сегодня?
|
|
|
|
|
 |
Ответов
|
Nov 3 2017, 15:21
|
Местный
  
Группа: Участник
Сообщений: 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
|
|
|
|
|
Nov 4 2017, 08:17
|
Местный
  
Группа: Участник
Сообщений: 317
Регистрация: 16-09-17
Пользователь №: 99 334

|
Цитата(mantech @ Nov 3 2017, 20:39)  Сразу вижу противоречие. Т.е. если возьмем один и тот же процессор, и если у него не хватает быстродействия для обработки прерываний, и он забьет остальные прерывания, то это означает одно - неправильный выбор быстродействия проца, т.к. в этом случае ваша ОС просто пропустит это событие, находясь в другой задаче или в блоке переключения контекста. Поэтому я и пошёл по пути запрета всех прерываний кроме таймерного. А другие прерывания опрашивал по механизму поллинга. Я же писал: у меня проц больше 70% времени сидит в обработчике таймерного прерывания, а на "полезную работу" доступно менее 30% процессорного времени. Кто-то скажет: это же не рационально, глупо, криво и т.п. А я скажу: процессорное время стоит на ПОРЯДКИ дешевле, чем труд программиста. И это мизерная цена за простоту и прозрачность кода и обеспечение жесткой реалтаймовости при вытесняющей многозадачности и многопоточности Цитата(syoma @ Nov 3 2017, 21:17)  хотя он, возможно, не самый эффективный по загрузке процессора - до 70% Да плевать на загрузку процессора. Он же железный, вот и пусть пашет. Труд программиста стоит на порядки дороже чем процессорные такты. Я когда-то болел болезнью: экономить каждый такт CPU, старался писать код так, чтобы экономить такты. А потом понял, что моё время бесценно, а процессорное стоит копейки.
|
|
|
|
|
Nov 5 2017, 09:17
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Студент заборстроительного @ Nov 4 2017, 11:17)  Да плевать на загрузку процессора. Он же железный, вот и пусть пашет. Труд программиста стоит на порядки дороже чем процессорные такты. Я когда-то болел болезнью: экономить каждый такт CPU, старался писать код так, чтобы экономить такты. А потом понял, что моё время бесценно, а процессорное стоит копейки. В таком режиме о энергосбережении можно забыть навсегда. В АВРках или простеньких АРМ, на частоте до 100МГц - это наверно и нафиг не нужно, но на частотах 500+ это очень заметно получается. На счет труда программиста - для себя не вижу никакой трудности использовать прерывания, нежели изврат с поллингом, но тут дело вкуса, конечно...
|
|
|
|
Сообщений в этой теме
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 4 201... Nov 5 2017, 03:25      Студент заборстроительного Цитата(Tarbal @ Nov 5 2017, 06:25) В двух... Nov 5 2017, 07:44      AlexandrY Цитата(Tarbal @ Nov 5 2017, 05:25) Еще ра... Nov 5 2017, 08:43      Студент заборстроительного Цитата(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 страниц
1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|