Можно ли определить один AUTOSAR Runnable для многих компонентов на задачу?

Вот сценарий...

Мне нужно для каждой задачи 2 разных runnables...

- First : to receive data at specific times at the beginning of the task.

- Second: to send data at specific times at the end of the task.

каждый из этих исполняемых модулей должен предоставлять данные для различных процессов компонентов в начале задачи (такой же, как неявный режим приема для интерфейса получателя отправителя, но с некоторой фильтрацией, которая не может быть достигнута с использованием атрибута фильтра), или отправлять данные только в определенное время в конце задач.

Теперь, как я могу справиться с этим? я должен определить эти runnables для компонента? или сделать связь между всеми компонентами проходящей через этот общий компонент, который должен обрабатывать синхронизацию отправки и получения?

Я новичок в AUTOSAR, поэтому, пожалуйста, дайте мне знать, что может быть лучшим решением для этого.

1 ответ

... сделать так, чтобы связь между всеми компонентами проходила через этот общий компонент, который должен обрабатывать синхронизацию отправки и получения?

Вот что я вижу много за последние годы. Многие разработчики, работающие с коммуникационными стеками, не понимают функций и фактически реализуют что-то в SWC, которое фактически доступно и выполняется с годами в ComStacks ... даже в стеке Vectors CANbedded (в IL (Interaction Layer)). Это делает SWC настолько зависимыми от связи, что вероятность изменений очень высока.

Обработка тайм-аута обрабатывается IL и AUTOSAR Com в соответствии с PduTiming SystemDescription/EcuExtract (и старыми файлами DBC), режимом передачи IPDU и свойствами передачи сигнала.

Режимы передачи IPDU: * NONE -> запускается не Com, а вручную Com_TriggerIPDUSend() * PERIODIC -> циклически запускается Com в соответствии с заданным периодом времени * DIRECT -> срабатывает при "событии" настроенных сигналов (TRIGGERED *)
* MIXED (PERIODIC + DIRECT) -> "EventPeriodic" .. это также включает в себя возможную MDT (минимальная задержка по времени)

Просто чтобы назвать некоторые значения свойств сигнала: * PENDING - в и IPDU TxMode MIXED это не вызывает событие, поэтому ожидает до следующего события передачи (или только со следующим циклом сообщения) * TRIGGERED - как бывший DBC "OnWrite" * TRIGGERED_ON_CHANGE - как бывший DBC "OnChange", поэтому только если значение изменилось по сравнению с последним значением

AUTOSAR Com также может контролировать получение IPDU в соответствии с настроенным периодом времени.

IpduGroups можно использовать для включения / выключения передачи IPDU и мониторинга IPDU RxDeadline (обработка тайм-аута).

Итак, в конце концов, большинству SWC на ​​самом деле не нужно заботиться о времени приема / передачи... они просто пишут / читают в / из своих портов, и все.

Еще одна полезная функция - обработка SignalGroup, которая снимает бремя поддержания синхронизации сложных данных (структур). Раньше кто-то, вероятно, блокировал прерывания до тех пор, пока все данные не будут обновлены в сообщении.

Защита E2E теперь может обрабатываться трансформаторами E2E.

Таким образом, SWC могут быть смоделированы на уровне VFB (виртуальной функциональной шины), а затем сопоставлены с ECU. Их соединения остаются прежними, но если SWC обмениваются данными только через Intra-ECU через RTE в том же ECU или через Inter-ECU через границы ECU через ComStack, это совершенно не имеет значения для SWC. SWC могут использовать dataReceivedEvents или dataReceiveErrorEvents для получения информации об ошибках приема или приема (например, Timeout) и dataSendCompletedEvent о завершении передачи. Или же они могут просто "опросить", проверив код возврата RTE вызовов Rte_Read/Write.

Вместе с возможностями RTE DataTransformations, Data/PortMapping и преобразований, будет гораздо проще иметь реконфигурируемое ПО без постоянной замены SWC.

Также будет легче перемещать SWC, независимо от того, перемещаете ли они их на другое ядро ​​на многоядерном процессоре (с MultiCore OS и MultiCore RTE) или перемещаете функции с датчиков на высокопроизводительный центральный ECU.

Отношения маршрутизации шлюза на уровне PDU даже не нуждаются в каких-либо SWC, это можно сделать путем настройки отношений маршрутизации PduR и обмена здесь конфигурацией POSTBUILD. Даже маршрутизация на основе сигналов в Com может быть выполнена следующим образом.

Другие вопросы по тегам