Передаёт I-PDU по статической таблице маршрутизации без изменений между верхними и нижними коммуникационными модулями.
СОЗДАНО ИИне провереноМодель: claude-opus-5-5 · Усилие: high · Температура: не регулируется · Промпт: 3a20c4ee9a26ПроисхождениеОткрытые вопросы (1)
Причинный якорь: R20-11Действует с R20-11Заново синтезировано для этой версии спецификации.
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Передаёт I-PDU по статической таблице маршрутизации без изменений между верхними и нижними коммуникационными модулями.
PDU Router передаёт I-PDU между верхними модулями, такими как Com и DCM, коммуникационными интерфейсами и транспортными протоколами. При этом он лишь преобразует ID I-PDU вдоль сконфигурированных путей маршрутизации и не изменяет содержимое [SWS_PduR_00160]. В число его задач входят отправка, приём, TriggerTransmit, сегментированные передачи TP и шлюзы с опциональным буфером FIFO. Маршрутизация выполняется исключительно в состоянии PDUR_ONLINE после успешного вызова PduR_Init [SWS_PduR_00328]. Во время выполнения группы путей маршрутизации можно переключать с помощью PduR_EnableRouting и PduR_DisableRouting.
PDU Router передаёт I-PDU между верхними модулями, такими как Com и DCM, коммуникационными интерфейсами, такими как CanIf, FrIf и LinIf, а также транспортными протоколами. При этом он не изменяет I-PDU [SWS_PduR_00160] и маршрутизирует их только вдоль сконфигурированных путей маршрутизации [SWS_PduR_00162]. Его ключевой задачей является преобразование ID I-PDU как на тракте отправки, так и на трактах подтверждения и индикации [SWS_PduR_00766]. Интерфейсы являются обобщёнными; заполнители <Up>, <Lo> и <LoTp> определяются конфигурацией PduRBswModules[SWS_PduR_00504].
Контекстная диаграмма: PduR располагается между верхними модулями и модулями IF или TP; BswM переключает группы путей, ошибки передаются в DET. Источники: [SWS_PduR_00504], SWS PDU Router с. 16
PduR поддерживает только состояния PDUR_UNINIT и PDUR_ONLINE[SWS_PduR_00324]. Маршрутизация выполняется исключительно в PDUR_ONLINE[SWS_PduR_00328]. В это состояние он переходит с помощью PduR_Init(ConfigPtr)[SWS_PduR_00334]. До этого все функции, кроме PduR_Init и PduR_GetVersionInfo, сообщают об ошибке PDUR_E_UNINIT, если активна детекция ошибок [SWS_PduR_00119].
В процессе работы PduR выполняет следующие процессы:
Запросы на отправку он передаёт каждому целевому интерфейсу [SWS_PduR_00625].
Запросы TriggerTransmit он направляет верхнему уровню [SWS_PduR_00430].
При многоадресной передаче TP он запрашивает одни и те же данные для каждого получателя с помощью TP_CONFPENDING или TP_DATARETRY[SWS_PduR_00631][SWS_PduR_00632] и сообщает сводное подтверждение [SWS_PduR_00765].
В качестве шлюза он при необходимости буферизует данные в FIFO [SWS_PduR_00785]. Сегментированные TP-I-PDU он может пересылать на лету при превышении порога ровно одному получателю [SWS_PduR_00317][SWS_PduR_00708].
Во время выполнения PduR_EnableRouting и PduR_DisableRouting переключают целые группы путей маршрутизации [SWS_PduR_00615][SWS_PduR_00617], как правило, под управлением BswM. Вызовы на отключённом пути завершаются с E_NOT_OK[SWS_PduR_00717]. Ошибки разработки, такие как PDUR_E_PDU_ID_INVALID, PduR передаёт в DET [SWS_PduR_00100]. Потери в FIFO он сообщает как PDUR_E_PDU_INSTANCES_LOST[SWS_PduR_00670]. Собственная обработка ошибок на путях интерфейсов отсутствует; возвращаемые значения передаются источнику SWS PDU Router с. 46.
Роль и границы системы: передача I-PDU между верхними модулями, интерфейсами и транспортными протоколами
PDU Router (PduR) является центральным узлом маршрутизации классического коммуникационного стека. Он принимает I-PDU от модуля-источника и передаёт их без изменений и согласованно одному или нескольким целевым модулям [SWS_PduR_00160]. Маршрутизация осуществляется исключительно вдоль сконфигурированных путей маршрутизации [SWS_PduR_00162]. Путь однозначно определяется двумя параметрами: ID исходного I-PDU из конфигурации PduR и ID целевых I-PDU из конфигураций вызываемых целевых модулей [SWS_PduR_00161]. Поэтому ключевой задачей PduR является преобразование ID I-PDU. Оно действует как для тракта отправки, так и для трактов подтверждения и индикации [SWS_PduR_00766]. Каждый модуль выбирает свои дескрипторы (Handle ID) самостоятельно; конфигурация связывает их через «глобальный» PDU ECU Configuration Рис. 3.13 с. 192.
Выше PduR находятся такие модули, как Com и DCM. Ниже расположены коммуникационные интерфейсы, такие как CanIf, FrIf и LinIf, а также транспортные протоколы, такие как CanTp, FrTp и LinTp SWS PDU Router с. 24. Интерфейсы определены как обобщённые. Заполнители <Up>, <Lo> и <LoTp> заменяются через конфигурацию модуля, на которую ссылается PduRBswModules, а для CDD — через их apiServicePrefix[SWS_PduR_00504]SWS PDU Router Рис. 10.2 с. 95. Если нижний модуль поддерживает как TP, так и IF, добавляются инфиксы Tp и If[SWS_PduR_00800].
Если установлен PduRZeroCostOperation и все пути маршрутизации относятся к этапу Pre-Compile, соседние модули могут вызывать друг друга напрямую [SWS_PduR_00287]. Если хотя бы один путь не является Pre-Compile, генератор должен выдать ошибку [SWS_PduR_00619]SWS PDU Router с. 56. Неиспользуемые функции генератор должен оптимизировать и удалять, то есть TP, IF, шлюз и FIFO [SWS_PduR_00764].
Жизненный цикл: от PDUR_UNINIT через PduR_Init к PDUR_ONLINE
Она устанавливает сконфигурированные значения по умолчанию для буферов отправки [SWS_PduR_00308].
Она активирует группы путей маршрутизации в соответствии с параметром Enable-at-start [SWS_PduR_00709]. В более поздних редакциях этот параметр называется PduRIsEnabledAtInitSWS PDU Router с. 131.
До инициализации все функции, кроме PduR_Init и PduR_GetVersionInfo, возвращают ошибку PDUR_E_UNINIT, если активирован PduRDevErrorDetect[SWS_PduR_00119]. PduR_GetVersionInfo[SWS_PduR_00338] активируется через PduRVersionInfoApiSystem Template с. 656.
Данные Post-Build находятся в PduR_PBConfigType и реализованы в PduR_PBcfg.c [SWS_PduR_00241][SWS_PduR_00743]. Они однозначно идентифицируются через PduRConfigurationId[SWS_PduR_00281]. Этот идентификатор возвращает PduR_GetConfigurationId[SWS_PduR_00341][SWS_PduR_00280] как PduR_PBConfigIdType на основе uint16; блок управления может содержать несколько выбираемых конфигураций [SWS_PduR_00771]. Таблицы маршрутизации могут обновляться на этапе Post-Build [SWS_PduR_00295], однако только в неинициализированном состоянии [SWS_PduR_00296]. Потребность в памяти может возрасти с новой конфигурацией, поэтому её необходимо планировать на этапе проектирования SWS PDU Router с. 160.
Пути коммуникационных интерфейсов: Transmit, TriggerTransmit и подтверждения
Если верхний модуль вызывает PduR_<User:Up>Transmit[SWS_PduR_00406], PduR вызывает <Lo>_Transmit для каждого получателя [SWS_PduR_00625]. При этом он не буферизует данные [SWS_PduR_00629]. Для возвращаемого значения действует следующее:
При многоадресной передаче верхний уровень должен предоставлять одни и те же данные несколько раз. Запрос первого получателя направляется с TP_CONFPENDING верхнему уровню [SWS_PduR_00631], все последующие — с TP_DATARETRY[SWS_PduR_00632]. Верхний уровень получает после последнего подтверждения одно-единственное <Up>_TpTxConfirmation. Оно сообщает E_OK, если хотя бы один получатель сообщил E_OK[SWS_PduR_00765]SWS PDU Router Рис. 9.10 с. 83.
Приём TP начинается с PduR_<User:LoTp>StartOfReception[SWS_PduR_00507]. PduR перенаправляет его в <Up>_StartOfReception[SWS_PduR_00549] и возвращает его результат без изменений [SWS_PduR_00623]. После этого следуют две пересылки:
Работа в режиме шлюза: немедленная пересылка, буфер FIFO и передача TP на лету
Между коммуникационными интерфейсами PduR маршрутизирует 1:n [SWS_PduR_00436] и с немедленной пересылкой, то есть без собственного формирования скорости передачи [SWS_PduR_00437]. Шлюзование выполняется только IF↔IF или TP↔TP [SWS_PduR_00638]. Для передаваемой длины действует следующее:
Без буферизации PduR передаёт минимум из принятой длины и сконфигурированной целевой длины [SWS_PduR_00783].
С буферизацией он копирует максимум PduRPduMaxLength и отбрасывает остаток [SWS_PduR_00746].
Для шлюзов TP существует два метода. При прямом шлюзовании (Direct Gatewaying) <DstLoTp>_Transmit запускается в RxIndication с помощью E_OK[SWS_PduR_00551]. При шлюзовании на лету (On-the-fly Gatewaying) повторная отправка начинается уже тогда, когда достигнут PduRTpThreshold[SWS_PduR_00317]. В этом случае разрешена только одна цель [SWS_PduR_00708], а уже отправленные данные повторно не передаются [SWS_PduR_00707]SWS PDU Router с. 58. Буфер PduR выбирает по размеру:
Если сообщение помещается в PduRPduMaxLength, он использует выделенный буфер [SWS_PduR_00797].
В противном случае он динамически запрашивает буфер из PduRTxBuffer[SWS_PduR_00798].
С помощью TxConfirmation он освобождает буфер [SWS_PduR_00637]. Если I-PDU должен быть дополнительно принят локально, PduR вызывает <UpTp>_StartOfReception, <UpTp>_CopyRxData и <UpTp>_RxIndication именно в таком порядке [SWS_PduR_00789]. Для этого он должен буферизовать данные, поскольку DCM ничего не знает о шлюзе SWS PDU Router с. 112.
Группы путей маршрутизации: переключение маршрутизации во время выполнения
Группы путей маршрутизации объединяют пути по сетям или типам PDU. Их переключение обычно выполняется BswM SWS PDU Router с. 69. Для этого служат PduR_EnableRouting(id)[SWS_PduR_00615] и PduR_DisableRouting(id, initialize)[SWS_PduR_00617]; идентификатор имеет тип uint16[SWS_PduR_00654]. Активация вступает в силу немедленно [SWS_PduR_00715]. При деактивации действуют следующие правила:
initialize определяет, сбрасываются ли одиночные буферы в значение по умолчанию [SWS_PduR_00617].
FIFO остановленных путей очищаются, и PduR сообщает PDUR_E_PDU_INSTANCES_LOST[SWS_PduR_00663].
Руководство по управлению режимами (Mode Management Guide) рекомендует группы путей для I-PDU без группы Com-I-PDU, например для LdCom. Переключение выполняется по правилам BswM, например в зависимости от состояния частичной сети (Partial Network) Mode Management Guide с. 50. Действие BswM BswMPduRouterControl вызывает для этого PduR_EnableRouting или PduR_DisableRoutingSWS BSW Mode Manager с. 145. При маршрутизации n:1 на локальный модуль во время выполнения может быть активен максимум один путь System Template с. 736[SWS_PduR_00615].
Если RxIndication сообщает не E_OK, PduR останавливает обработку [SWS_PduR_00689].
Если при шлюзовании на лету не хватает места в буфере, он возвращает BUFREQ_E_NOT_OK и прерывает операцию [SWS_PduR_00687].
Если буфер вообще недоступен, он возвращает BUFREQ_E_OVFL[SWS_PduR_00799].
При сбое одной цели остальные продолжают работу [SWS_PduR_00803]. Если сбой происходит у всех целей, он останавливает принимающую сторону [SWS_PduR_00804].
Следующие разделы содержат утверждения этого руководства. Последовательности в главе 9 спецификации наглядно иллюстрируют их, например SWS PDU Router Рис. 9.5 с. 100.
Сгенерированное ИИ руководство на основе требований SWS PDU Router (R20-11) и соотнесённых разделов документов; нормативными являются исключительно требования, приведённые по ссылкам. Утверждения, обозначенные как интерпретация, просьба сверять со спецификацией.
PDU Router (PduR)
The PDU Router routes I-PDUs between communication interfaces, transport protocols, and upper layers without payload inspection.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 8eca52c90f1cПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Синхронная и нереентерабельная функция PduR_Init инициализирует маршрутизатор PDU [SWS_PduR_00334]. В качестве параметра она принимает с ConfigPtr указатель на конфигурацию Post-Build модуля (PduR_PBConfigType) и не возвращает значения [SWS_PduR_00334]. В рамках инициализации PduR_Init предварительно заполняет все буферы передачи PDU сконфигурированными стандартными значениями [SWS_PduR_00308].
Взаимодействие и требования к последовательности
После включения модуль сначала находится в состоянии PDUR_UNINIT[SWS_PduR_00325]. PduR_Init должна вызываться перед всеми другими функциями модуля, так как другие интерфейсы — за исключением PduR_GetVersionInfo — в неинициализированном состоянии сообщают об ошибке PDUR_E_UNINIT через DET, если активирован PduRDevErrorDetect[SWS_PduR_00119].
Обработка ошибок и параллелизм
Если PduR_Init вызывается в состоянии, отличном от PDUR_UNINIT, это расценивается как PDUR_E_UNINIT[SWS_PduR_00100]. При недействительном указателе конфигурации или передаче нулевого указателя срабатывают коды ошибок PDUR_E_INIT_FAILED или PDUR_E_PARAM_POINTER соответственно [SWS_PduR_00100]. Из-за отсутствия реентерабельности параллельный вызов процедуры инициализации не допускается [SWS_PduR_00334].
Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR R20-11.
Руководство разработчика реализации в подготовке (сложность I1)
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: e3aad02fdb37ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Синхронная функция PduR_EnableRouting (идентификатор службы 0xf3) служит для направленной активации определённой группы путей маршрутизации в PDU-маршрутизаторе ([SWS_PduR_00615]). В качестве единственного параметра она принимает идентификатор группы id типа PduR_RoutingPathGroupIdType, который адресует соответствующую группу путей маршрутизации в конфигурации PDU-маршрутизатора ([SWS_PduR_00615]). Вызов не имеет возвращаемого значения и доступен через заголовочный файл PduR.h ([SWS_PduR_00615]).
Для безошибочного применения решающее значение имеют состояния системы и пределы параметров: до вызова модуль PduR должен быть полностью инициализирован, так как выполнение в неинициализированном состоянии вызывает ошибку PDUR_E_UNINIT ([SWS_PduR_00100]). Если функции PduR_EnableRouting передаётся недопустимый идентификатор таблицы маршрутизации или группы путей, это приводит к ошибке PDUR_E_ROUTING_PATH_GROUP_ID_INVALID со значением ошибки 0x08 ([SWS_PduR_00100]).
Что касается параллелизма, интерфейс объявлен как реэнтрантный ([SWS_PduR_00615]), так что параллельные вызовы для управления группами путей в принципе допустимы. В общей системе функция служит для динамической разблокировки связей передачи данных; вероятно, служба обычно инициируется вышестоящими инстанциями, такими как менеджер режимов, для активации путей маршрутизации во время выполнения в зависимости от состояний системы или сети. Вопрос Q-365f4b81f59f3511 (открытый)
Автоматически сгенерированное указание по использованию на основе спецификации AUTOSAR Classic (релиз R20-11).
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 79b319e1f13bПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Синхронная функция PduR_DisableRouting служит для деактивации сконфигурированной группы путей маршрутизации ([SWS_PduR_00617]). Она выполнена как реэнтрантная и не имеет возвращаемого значения ([SWS_PduR_00617]).
Параметры и поведение
id (PduR_RoutingPathGroupIdType): идентификация деактивируемой группы путей маршрутизации, как она определена в конфигурации PDU-маршрутизатора ([SWS_PduR_00617]).
initialize (boolean): управляет поведением буферов при деактивации. При передаче true одинарные буферы инициализируются своим значением по умолчанию; при false одинарные буферы сохраняют своё текущее значение ([SWS_PduR_00617]).
Обработка ошибок и граничные условия
В случае ошибки, согласно таблице ошибок, определены специфические коды ошибок ([SWS_PduR_00100]):
Если функция вызывается без инициализации модуля, предусмотрен код ошибки PDUR_E_UNINIT (0x01) ([SWS_PduR_00100]).
Если в PduR_DisableRouting передаётся недопустимая таблица маршрутизации или ID группы, специфицирована ошибка PDUR_E_ROUTING_PATH_GROUP_ID_INVALID (0x08) ([SWS_PduR_00100]).
Функция доступна через заголовочный файл PduR.h ([SWS_PduR_00617]).
Это указание по использованию было сгенерировано автоматически на основе требований спецификации.
Identification of the post-build configuration currently used for routing I-PDUs. An ECU may contain several configurations (post-build selectable), each have unique Id.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 9763b14fa079Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Перечислимый тип PduR_StateType специфицирует согласно [SWS_PduR_00742] состояния маршрутизатора PDU. Тип данных предоставляется через заголовочный файл PduR.h и служит в маршрутизаторе PDU формальной типизированной основой для представления соответствующего состояния инициализации внутри модуля, а также для вызывающих компонентов.
Согласно требованию [SWS_PduR_00324] модуль маршрутизатора PDU имеет ровно два рабочих состояния, которые определяются значениями перечисления PduR_StateType. Диапазон значений, определенный согласно [SWS_PduR_00742], включает в себя следующие значения:
PDUR_UNINIT: обозначает состояние, в котором маршрутизатор PDU не инициализирован ([SWS_PduR_00742]).
PDUR_ONLINE: сигнализирует о том, что маршрутизатор PDU успешно инициализирован и готов к работе ([SWS_PduR_00742]).
В рамках взаимодействия требований спецификации PduR_StateType функционирует как обязательное определение внутренней и внешней модели состояний маршрутизатора PDU ([SWS_PduR_00324]). Поскольку диапазон значений согласно [SWS_PduR_00742] ограничен исключительно PDUR_UNINIT и PDUR_ONLINE, спецификация здесь строго разграничивает неинициализированное исходное состояние и состояние после успешной инициализации. Дополнительные промежуточные ступени, режимы частичной работы или специфические состояния ошибок в диапазоне значений PduR_StateType не предусмотрены.
Автоматически сгенерированное указание по использованию на основе спецификации AUTOSAR.
Руководство разработчика реализации в подготовке (сложность I1)
Request a governed re-review of this record. The record is not changed immediately.
Identification of the post-build configuration currently used for routing I-PDUs. An ECU may contain several configurations (post-build selectable), each have unique Id.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал