AUTOSAR: рекомендуется напрямую вызывать runnable из планировщика?
Я открываю для себя мир AUTOSAR.
Мой вопрос о коде:
Я понял, что исполняемые объекты SW-C вызываются из RTE с использованием API-интерфейсов RTE в соответствии с событиями (init, хронирование, получение данных). Можно ли напрямую вызывать исполняемый объект (как мы вызываем функцию) из планировщика, например, после синхронного события (например, в TopDeadCenter движка). Я думаю, что это "переопределит" RTE, опасно ли так действовать?
2 ответа
В общем, если вы хотите обойти то, что делает RTE, вы, вероятно, не разрабатываете вещи, как задумано Autosar.
Непосредственное обращение к исполняемым объектам SWC является довольно серьезным нарушением этой концепции. Runnables являются планируемыми объектами, предназначенными для планирования ОС косвенно через RTE. RunEable должен быть активирован RTE в ответ на RTEEvent или несколько таких событий.
Обход RTE нарушит гарантии параллелизма и повторного входа, которые предоставляет RTE, а также согласованность данных, которые RTE предоставляет в отношении любых данных, считываемых / записываемых исполняемым файлом.
Если вы хотите вызвать runnable в ответ на событие, и это событие обнаружено другим SWC, вы должны использовать связь клиент / сервер. Ваш исполняемый файл станет операцией на сервере и будет вызываться через точку вызова. В этом случае "связь клиент-сервер" - это то, что вы должны посмотреть в спецификации, чтобы понять это.
Это никогда не является хорошей идеей, чтобы обойти RTE, поскольку это гораздо больше, чем просто отправка вызовов.
Взгляните на многоуровневую структуру AUTOSAR Architecture; Ваше RunnableEntity (Приложение) и Планировщик BSW (Системные службы) находятся "на двух этажах". Так что не надо.:)