|
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 5 2017, 09:05
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Цитата Если же прерывания не фрагменты задач, а нечто другое, то какой принцип планирования применить к обработчикам прерываний. Интересный вопрос. Вот, допустим, у меня есть два CAN интерфейса, по которым в любой момент могут быть приняты данные, которые нужны одной или нескольким задачам, выполняющимся по RMS. То есть есть новые данные или их нету, задача все равно выполнится в нужное время. Таким образом задача обработчика прерывания приемника CAN - это всего лишь вытащить данные из приемного буфера и обновить нужные переменные, которые используются в задачах. Тут есть несколько подводных камней. Если чтение из буфера и обновление переменных сделать высокоприоритетной задачей или сразу в прерывании от CAN, то может случиться так, что это произойдет во время выполнения задачи, которая использует эти переменные. У меня это решено так, что каждая задача читает свои входные переменные только один раз вначале цикла и дальше работает только с внутренними переменными. Тогда обновление входных переменных во время исполнения этой задачи не приведет к непредсказуемым результатам. Либо как бы второй вариант - делаем обработчик буфера самым низкоприоритетным процессом, тогда он не сможет прервать выпоняющуюся задачу и испортить ей данные. Но тогда, если оставшегося времени не хватит, чтобы обработать весь входной буфер, получим ой.
|
|
|
|
|
Nov 5 2017, 13:39
|

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

|
Цитата(syoma @ Nov 5 2017, 11:05)  Тут есть несколько подводных камней. Если чтение из буфера и обновление переменных сделать высокоприоритетной задачей или сразу в прерывании от CAN, то может случиться так, что это произойдет во время выполнения задачи, которая использует эти переменные. Тут вы сделали себе логичекую ловушку. Если вы утверждаете, что обработчик пакетов CAN работает у вас в реальном времени, то вам не надо ничего читать в прерывании. В прерывании только взводите флаг наличия пакета. Читаете пакет и выполняет действия связанные с ним в единой задаче активизирующейся по флагу. Нет необходимости в промежуточной буферизации. Буферизация, а лучше ковееризация - верный признак отсутствия реального времени. Обработчик CAN следовательно не работает у вас в реальном времени. Итого имеем ситуацию - есть ISR который не задача, и есть задача которая не realtime.
|
|
|
|
Сообщений в этой теме
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 Студент заборстроительного А какие проблемы-то? (я к вопросу темы)
Фоновый по... Nov 3 2017, 03:51 mantech Цитата(Студент заборстроительного @ Nov 3 201... Nov 3 2017, 07:11  syoma Цитата(mantech @ Nov 3 2017, 09:11) Кто м... Nov 3 2017, 10:55  Студент заборстроительного Цитата(mantech @ Nov 3 2017, 10:11) Кто м... Nov 3 2017, 15:21   AlexandrY Цитата(Студент заборстроительного @ Nov 3 201... Nov 3 2017, 17:03    Студент заборстроительного Цитата(AlexandrY @ Nov 3 2017, 20:03) Это... Nov 3 2017, 17:20   mantech Цитата(Студент заборстроительного @ Nov 3 201... Nov 3 2017, 17:39    Студент заборстроительного Цитата(mantech @ Nov 3 2017, 20:39) Сразу... Nov 4 2017, 08:17     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 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 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
|
|
|