Стандарт AUTOSAR Classic Platform определяет важные сервисы как часть Basic Software (BSW), которая выполняется в среде выполнения AUTOSAR (RTE). Примеры включают услуги, предоставляемые Diagnostic Event Manager (Dem), Function Inhibition Manager (FiM) и NVRAM Manager (NvM). В AUTOSAR RTE компоненты программного обеспечения AUTOSAR обычно получают доступ к службам BSW с помощью связи клиент-сервер или отправитель-получатель.
Для поддержки моделирования компонентов и служб AUTOSAR на уровне системы, AUTOSAR Blockset предоставляет библиотеку блоков AUTOSAR Basic Software. Библиотека содержит предварительно сконфигурированные блоки для моделирования вызовов компонентов сервисов AUTOSAR BSW и ссылочных реализаций сервисов BSW. Для получения информации об использовании блоков для моделирования вызовов клиентов к сервисным интерфейсам AUTOSAR BSW, смотрите Модель AUTOSAR Basic Software Service Calls.
Пример live скрипта симуляции сервисов AUTOSAR BSW см. в примере Simulate AUTOSAR Basic Software Services и Run-Time Environment.
Вот пример настройки вызовов клиентов к интерфейсам услуг NvM в программном компоненте AUTOSAR.
Откройте модель, которая сконфигурирована для генерации кода AUTOSAR. Используя браузер библиотек или вводя имена блоков в окне модели, добавьте блоки NvM к модели. Этот пример добавляет блоки NvMAdminCaller и NvMServiceCaller к копии примера модели с возможностью записи autosar_swc
.
Откройте каждый блок и исследуйте параметры, особенно Operation. Если вы выбираете другую операцию и кликаете Apply, программа обновляет входные и выходные входы блоков так, чтобы они совпадали с аргументами выбранной операции.
Этот пример меняет Operation для блока NvMServiceCaller на GetDataIndex
на ReadBlock
. (Для примера использования readBlock
в реализации датчика положения дросселя см. Пример Simulate AUTOSAR Basic Software Services и Run-Time Environment.)
Для некоторых операций NvM, таких как ReadBlock
и WriteBlock
диалоговое окно параметров блоков отображает параметр спецификации аргумента. Параметр задает тип данных и информацию о размерности для данных, которые будут считываться или записываться операцией, установленной на uint8(1)
по умолчанию.
Чтобы задать многомерный тип данных, можно использовать синтаксис массива, такой как int8([1 1; 1 1])
.
Чтобы задать структурированный тип данных, можно создать Simulink.Parameter
объект данных, введите его с помощью a Simulink.Bus
Объект и ссылка на имя параметра.
Откройте редактор Отображения. Как обновить Simulink® Для отображения модели в AUTOSAR с изменениями на вызывающие абоненты функции Simulink нажмите кнопку Update. Программное обеспечение создает интерфейсы, операции и порты клиента AUTOSAR и сопоставляет каждого вызывающего абонента функции Simulink с клиентским портом и операцией AUTOSAR.
Например, для блока NvMServiceCaller в этом примере, для которого ReadBlock
операция выбрана:
Программное обеспечение создает интерфейс C-S NvMService
, и под NvMService
, его поддерживаемые операции. Для каждой операции аргументы имеют свойства только для чтения. Вот аргументы для NvMService
операция ReadBlock
отображается в словаре AUTOSAR.
Программа создает клиентский порт с именем по умолчанию NvMService
. В отличие от C-S-интерфейса, операции и имен аргумента, имя порта клиента может быть настроено. Порт клиента сопоставлен с NvMService
интерфейс.
Редактор Отображения сопоставляет NvMService
блок вызывающего абонента функции на клиентский порт AUTOSAR NvMService
и операция AUTOSAR ReadBlock
.
Опционально создайте модель и исследуйте сгенерированный код C и ARXML.
На шаге диалога блоков, если вы выбрали операцию ReadBlock
для блока NvMServiceCaller генерация кода требует добавления блоков хранилища данных к модели. Соедините первый выходной порт блока с блоком записи хранилища данных и добавьте блок памяти хранилища данных. Для обоих блоков задайте имя хранилища данных A. Для примера:
Код С включает клиентские вызовы услуг BSW, например:
/* FunctionCaller: '<Root>/NvMServiceCaller' */ Rte_Call_NvMService_ReadBlock(&rtDW.A); ... /* FunctionCaller: '<Root>/NvMAdminCaller' */ Rte_Call_NvMAdmin_SetBlockProtection(false);
Сгенерированные файлы включения RTE определяют точки вызова операции сервера, такие как Rte_Call_NvMService_ReadBlock
.
Код ARXML определяет сервисные операции BSW, вызываемые компонентом, как серверные точки вызова, например:
<SERVER-CALL-POINTS> ... <ASYNCHRONOUS-SERVER-CALL-POINT UUID="..."> <SHORT-NAME>SC_NvMService_ReadBlock</SHORT-NAME> <OPERATION-IREF> <CONTEXT-R-PORT-REF DEST="R-PORT-PROTOTYPE"> /Company/Powertrain/Components/ASWC/NvMService </CONTEXT-R-PORT-REF> <TARGET-REQUIRED-OPERATION-REF DEST="CLIENT-SERVER-OPERATION"> /AUTOSAR/Services/NvM/NvMService/ReadBlock </TARGET-REQUIRED-OPERATION-REF> </OPERATION-IREF> <TIMEOUT>1</TIMEOUT> </ASYNCHRONOUS-SERVER-CALL-POINT> </SERVER-CALL-POINTS>
Чтобы симулировать модель компонента, создайте содержащую композицию, систему или тестовую обвязку модель. В содержащую модель вставьте ссылочные реализации ReadBlock NvM
и SetBlockProtection
сервисные операции.
Библиотека блоков AUTOSAR Basic Software предоставляет блок NVRAM Service Component, который обеспечивает эталонные реализации сервисных операций NvM. Можно вручную вставить блок в содержащую его композицию, систему или модель тестовой обвязки или автоматически вставить блок, создав Test™ модели тестовой обвязки Simulink.
Для получения дополнительной информации смотрите Настройте Основные реализации программного обеспечения AUTOSAR для симуляции и Моделируйте Основные службы программного обеспечения AUTOSAR и окружение выполнения.
NvMAdminCaller | NvMServiceCaller | NVRAM Service Component