Генерация кода с заменяющей библиотекой кода AUTOSAR

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

Заменяющая библиотека кода для генерации кода AUTOSAR

Заменяющая библиотека AUTOSAR 4.0 кода позволяет вам настроить генератор кода, чтобы произвести код С, который практически ориентирован на стандарт AUTOSAR. Рассмотрите использование заменяющей библиотеки кода если:

  • Вы хотите использовать служебные программы, предоставленные в библиотеке.

  • У вас есть заменяющий код для служебных программ.

  • Заменяющий код следует соглашению о присвоении имен файла AUTOSAR, то есть, стандартные программы для любой данной спецификации находятся в одном заголовочном файле (например, Mfl.h или Mfx.h)

  • У вас есть настройка обвязки сборки, которая может скомпилировать и соединить библиотеку AUTOSAR со сгенерированным кодом. Для получения дополнительной информации о строительных нормах и правилах для AUTOSAR, смотрите Генерацию кода.

Примечание

MATLAB® и Simulink® индексация интерполяционной таблицы отличается от индексации MAP AUTOSAR. MATLAB проявляет подход линейной алгебры — строка (u1) и столбец (u2). AUTOSAR (и ASAM) проявляет подход Декартовой координаты — ось X (u2) и ось Y (u1), где u1 и u2 входные параметры с блоками двумерной интерполяционной таблицы Simulink. Из-за различия, заменяющее программное обеспечение кода транспонирует входные параметры для стандартных программ MAP AUTOSAR.

Для получения дополнительной информации о замене кода и заменяющих библиотеках кода, смотрите то, Что Замена Кода? (Embedded Coder) и Заменяющие Библиотеки Кода (Embedded Coder).

Найдите поддерживаемые библиотечные подпрограммы AUTOSAR

Чтобы исследовать библиотечные подпрограммы AUTOSAR, поддержанные заменяющей библиотекой кода AUTOSAR, используйте Code Replacement Viewer (Embedded Coder). Чтобы открыть средство просмотра, в командной строке, входят crviewer('AUTOSAR 4.0').

Для получения дополнительной информации смотрите, Выбирают Code Replacement Library (Embedded Coder).

Сконфигурируйте генератор кода, чтобы пользоваться заменяющей библиотекой кода

Чтобы сконфигурировать генератор кода, чтобы пользоваться заменяющей библиотекой кода AUTOSAR для вашей модели, откройте диалоговое окно Configuration Parameters. Выберите Code Generation> Interface> Code replacement libraries> AUTOSAR 4.0.

Для получения дополнительной информации о замене кода и заменяющих библиотеках кода, смотрите то, Что Замена Кода? (Embedded Coder) и Заменяющие Библиотеки Кода (Embedded Coder).

Верификация кода хоста библиотеки AUTOSAR 4.0

Чтобы помочь поддержать верификацию кода хоста MATLAB для моделей AUTOSAR, AUTOSAR Blockset обеспечивает реализации хостов IFX, IFL, MFX и стандартных программ MFL в библиотеке AUTOSAR 4.0. Реализации библиотеки хоста включают программное обеспечение в цикле (SIL) валидация для моделей, которые инициировали замены кода от библиотеки AUTOSAR 4.0.

Рассмотрите следующую модель AUTOSAR, которая содержит интерполяцию и математические блоки, которые были настроены, чтобы инициировать AUTOSAR IFX и стандартные замены кода MFX. В параметрах конфигурации модели Системный конечный файл (Simulink Coder) установлен в autosar.tlc и заменяющие библиотеки Кода (Embedded Coder) установлены в AUTOSAR 4.0.

Сконфигурируйте и запустите SIL симуляцию модели. SIL симуляция:

  1. Генерирует типовой кодекс. MathWorks® реализации библиотеки хоста используются в IFX, IFL, MFX и стандартных заменах кода MFL.

  2. Создает приложение SIL. Библиотека хоста соединяется с исполняемым файлом SIL.

  3. Запускает модель и производит симуляцию выход, на основе ваших настроек SIL.

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

set_param(modelname,'DisableAUTOSARRoutinesHostLibrary','on');

Заменяющие проверки библиотеки кода

Замена кода требует, чтобы комбинация типов для входа, точки останова, таблицы и выходных типов была совместима со спецификацией AUTOSAR. С плавающей точкой (IFL) замена только поддерживает один типы, в то время как фиксированная точка (IFX) замена поддерживает uint8, uint16, int8, int16 и сопоставленные фиксированные точки. При использовании этих стандартных блоков требования комбинации типа варьируются и осуществляются как требуется.

Заменяющий Пример Библиотеки AUTOSAR Кода для Замены Функции IFX/IFL

Code Replacement Viewer перечисляет интерполяцию с плавающей точкой AUTOSAR (IFL) и интерполяция фиксированной точки (IFX) библиотечные подпрограммы, которые можно сгенерировать в коде С интерполяционной таблицы. Для замены кода С интерполяционной таблицы с IFL или библиотечными подпрограммами IFX, AUTOSAR Blockset обеспечивает блоки интерполяционной таблицы, которые предварительно сконфигурированы для генерации кода AUTOSAR. Вы вставляете блок, такой как Curve или Map в вашей модели, затем открываете диалоговое окно блока и конфигурируете блок, чтобы сгенерировать определенную процедуру интерполяции, требуемую вашим проектом. Для получения дополнительной информации смотрите, Конфигурируют Интерполяционные таблицы для Измерения AUTOSAR и Калибровки.

То В этом примере показано, как заменить код, сгенерировало для блоков интерполяционной таблицы AUTOSAR с функциями, которые совместимы с библиотечными подпрограммами IFL AUTOSAR. Если вы хотите заменить код на библиотечные подпрограммы IFX, можно отредактировать диалоговые окна блока интерполяционной таблицы, чтобы изменить целенаправленную стандартную библиотеку.

  1. Создайте свою модель Simulink при помощи любого из этих блоков интерполяционной таблицы AUTOSAR: Prelookup, Curve Using Prelookup, Map Using Prelookup, Curve или Map. Например, вот блок Prelookup, соединенный с блоком Curve Using Prelookup.

    В качестве альтернативы можно открыть модель mAutosarLutObjs.slx в качестве примера AUTOSAR, который содержит отображенные блоки. Чтобы скопировать файл модели в вашу рабочую папку, введите эту команду MATLAB:

    copyfile(fullfile(matlabroot,'help/toolbox/autosar/examples/mAutosarLutObjs.slx'),'.')
  2. Откройте каждый блок интерполяционной таблицы и сконфигурируйте его, чтобы сгенерировать стандартную программу от заменяющей библиотеки кода (CRL) AUTOSAR 4.0. Когда вы изменяете настройки блока, диалоговое окно блока обновляет имя целенаправленной стандартной программы AUTOSAR.

    Для получения дополнительной информации о конфигурировании блоков в этом примере, смотрите, Конфигурируют Интерполяционные таблицы COM_AXIS при помощи Объектов Интерполяционной таблицы и Точки останова.

  3. Сконфигурируйте генератор кода, чтобы использовать AUTOSAR 4.0 CRL для вашей модели. В диалоговом окне Configuration Parameters выберите Code Generation> Interface> Code replacement libraries> AUTOSAR 4.0. В качестве альтернативы из командной строки или программно, использовать set_param установить CodeReplacementLibrary параметр к 'AUTOSAR 4.0'.

  4. Опционально, можно сконфигурировать модель, чтобы представить отчет генерации кода, который подводит итог, какие блоки инициировали замены кода. В диалоговом окне Configuration Parameters, в Code Generation> панель Report, выбирают опцию Summarize which blocks triggered code replacements. В качестве альтернативы из командной строки или программно, использовать set_param установить GenerateCodeReplacementReport параметр к 'on'.

  5. Создайте модель и рассмотрите сгенерированный код для ожидаемых замен кода. Например, ищите сгенерированный код стандартный префиксный Ifl.

Необходимые Настройки Свойства Алгоритма для Отображений Функции и Блока IFL/IFX

Функция IFL/IFX и Отображение БлокаПараметры свойства алгоритмаЗначение

Ifl_DPSearch

Предварительный поиск

Extrapolation method

ExtrapMethod

Clip

Index search method

IndexSearchMethod

Linear search или Binary search

Use last breakpoint for input at or above upper limit

UseLastBreakPoint

On

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Ifl_IpoCur

Интерполяция Используя предварительный поиск

Interpolation method

InterpMethod

Linear

Extrapolation method

ExtrapMethod

Clip

Valid index input may reach last index

ValidIndexMayReachLast

On

Remove protection against out-of-range index in generated code

RemoveProtectionIndex

Off

Integer rounding mode

RndMeth

Round или Zero

Ifl_IpoMap

Интерполяция Используя предварительный поиск

Interpolation method

InterpMethod

Linear

Extrapolation method

ExtrapMethod

Clip

Valid index input may reach last index

ValidIndexMayReachLast

On

Remove protection against out-of-range index in generated code

RemoveProtectionIndex

Off

Integer rounding mode

RndMeth

Round или Zero

Ifl_IntIpoCur

Интерполяционная таблица n-D

Interpolation method

InterpMethod

Linear

Extrapolation method

ExtrapMethod

Clip

Index search method

IndexSearchMethod

Linear search или Binary search

Use last table value for inputs at or above last breakpoint

UseLastTableValue

On

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Ifl_IntIpoMap

Интерполяционная таблица n-D

Interpolation method

InterpMethod

Linear

Extrapolation method

ExtrapMethod

Clip

Index search method

IndexSearchMethod

Linear search или Binary search

Use last table value for inputs at or above last breakpoint

UseLastTableValue

On

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Ifx_DPSearch

Предварительный поиск

Extrapolation method

ExtrapMethod

Clip

Index search method

IndexSearchMethod

Linear search или Binary search

Use last breakpoint for input at or above upper limit

UseLastBreakPoint

On

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Ifx_IpoCur

Интерполяция Используя предварительный поиск

Interpolation method

InterpMethod

Linear

Extrapolation method

ExtrapMethod

Clip

Valid index input may reach last index

ValidIndexMayReachLast

On

Remove protection against out-of-range index in generated code

RemoveProtectionIndex

Off

Integer rounding mode

RndMeth

Round или Zero

Ifx_LkUpCur

Интерполяция Используя предварительный поиск

Interpolation method

InterpMethod

Flat

Extrapolation method

ExtrapMethod

Clip

Remove protection against out-of-range index in generated code

RemoveProtectionIndex

Off

Integer rounding mode

RndMeth

Round или Zero

Valid index input may reach last index

ValidIndexMayReachLast

On

Ifx_IpoMap

Интерполяция Используя предварительный поиск

Interpolation method

InterpMethod

Linear

Extrapolation method

ExtrapMethod

Clip

Valid index input may reach last index

ValidIndexMayReachLast

On

Remove protection against out-of-range index in generated code

RemoveProtectionIndex

Off

Integer rounding mode

RndMeth

Round или Zero

Ifx_LkUpMap

Интерполяция Используя предварительный поиск

Interpolation method

InterpMethod

Nearest

Extrapolation method

ExtrapMethod

Clip

Remove protection against out-of-range index in generated code

RemoveProtectionIndex

Off

Integer rounding mode

RndMeth

Round или Zero

Valid index input may reach last index

ValidIndexMayReachLast

On

Ifx_LkUpBaseMap

Интерполяция Используя предварительный поиск

Interpolation method

InterpMethod

Flat

Extrapolation method

ExtrapMethod

Clip

Remove protection against out-of-range index in generated code

RemoveProtectionIndex

Off

Integer rounding mode

RndMeth

Round или Zero

Valid index input may reach last index

ValidIndexMayReachLast

On

Ifx_IntIpoCur

Интерполяционная таблица n-D

Interpolation method

InterpMethod

Linear

Extrapolation method

ExtrapMethod

Clip

Index search method

IndexSearchMethod

Linear search или Binary search

Use last table value for inputs at or above last breakpoint

UseLastTableValue

On

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Ifx_IntLkUpCur

Интерполяционная таблица n-D

Interpolation method

InterpMethod

Flat

Extrapolation method

ExtrapMethod

Clip

Index search method

IndexSearchMethod

Linear search или Binary search

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Use last table value for inputs at or above last breakpoint

UseLastTableValue

On

Ifx_IntIpoFixCur

Интерполяционная таблица n-D

Interpolation method

InterpMethod

Linear

Extrapolation method

ExtrapMethod

Clip

Index search method

IndexSearchMethod

Evenly spaced points

Use last table value for inputs at or above last breakpoint

UseLastTableValue

On

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Use last table value for inputs at or above last breakpoint

UseLastTableValue

On

Параметр конфигурации модели Optimization> Default parameter behavior

DefaultParameterBehavior

Inlined

Данные о точке останова должны совпадать со степенью 2 интервала.

 

Ifx_IntLkUpFixCur

Интерполяционная таблица n-D

Interpolation method

InterpMethod

Flat

Extrapolation method

ExtrapMethod

Clip

Index search method

IndexSearchMethod

Evenly spaced points

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Параметр конфигурации модели Optimization> Signals and Parameters> Default parameter behavior

DefaultParameterBehavior

Inlined

Данные о точке останова должны совпадать со степенью 2 интервала.

 

Ifx_IntIpoFixICur

Интерполяционная таблица n-D

Interpolation method

InterpMethod

Linear

Extrapolation method

ExtrapMethod

Clip

Index search method

IndexSearchMethod

Evenly spaced points

Use last table value for inputs at or above last breakpoint

UseLastTableValue

On

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Данные о точке останова не должны совпадать со степенью 2 интервала.

 

Ifx_IntLkUpFixICur

Интерполяционная таблица n-D

Interpolation method

InterpMethod

Flat

Extrapolation method

ExtrapMethod

Clip

Index search method

IndexSearchMethod

Evenly spaced points

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Use last table value for inputs at or above last breakpoint

UseLastTableValue

On

Данные о точке останова не должны совпадать со степенью 2 интервала.

 

Ifx_IntIpoMap

Интерполяционная таблица n-D

Interpolation method

InterpMethod

Linear

Extrapolation method

ExtrapMethod

Clip

Index search method

IndexSearchMethod

Linear search или Binary search

Use last table value for inputs at or above last breakpoint

UseLastTableValue

On

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Ifx_IntLkUpMap

Интерполяционная таблица n-D

Interpolation method

InterpMethod

Nearest

Extrapolation method

ExtrapMethod

Clip

Index search method

IndexSearchMethod

Linear search или Binary search

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Use last table value for inputs at or above last breakpoint

UseLastTableValue

On

Ifx_IntLkUpBaseMap

Интерполяционная таблица n-D

Interpolation method

InterpMethod

Flat

Extrapolation method

ExtrapMethod

Clip

Index search method

IndexSearchMethod

Linear search или Binary search

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Use last table value for inputs at or above last breakpoint

UseLastTableValue

On

Ifx_IntIpoFixMap

Интерполяционная таблица n-D

Interpolation method

InterpMethod

Linear

Extrapolation method

ExtrapMethod

Clip

Index search method

IndexSearchMethod

Evenly spaced points

Use last table value for inputs at or above last breakpoint

UseLastTableValue

On

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Параметр конфигурации модели Optimization> Signals and Parameters> Default parameter behavior

DefaultParameterBehavior

Inlined

Данные о точке останова должны совпадать со степенью 2 интервала.

 

Ifx_IntLkUpFixMap

Интерполяционная таблица n-D

Interpolation method

InterpMethod

Nearest

Extrapolation method

ExtrapMethod

Clip

Index search method

IndexSearchMethod

Evenly spaced points

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Use last table value for inputs at or above last breakpoint

UseLastTableValue

On

Параметр конфигурации модели Optimization> Signals and Parameters> Default parameter behavior

DefaultParameterBehavior

Inlined

Данные о точке останова должны совпадать со степенью 2 интервала.

 

Ifx_IntLkUpFixBaseMap

Интерполяционная таблица n-D

Interpolation method

InterpMethod

Flat

Extrapolation method

ExtrapMethod

Clip

Index search method

IndexSearchMethod

Evenly spaced points

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Use last table value for inputs at or above last breakpoint

UseLastTableValue

On

Параметр конфигурации модели Optimization> Signals and Parameters> Default parameter behavior

DefaultParameterBehavior

Inlined

Данные о точке останова должны совпадать со степенью 2 интервала.

 

Ifx_IntIpoFixIMap

Интерполяционная таблица n-D

Interpolation method

InterpMethod

Linear

Extrapolation method

ExtrapMethod

Linear

Index search method

IndexSearchMethod

Evenly spaced points

Use last table value for inputs at or above last breakpoint

UseLastTableValue

On

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Данные о точке останова не должны совпадать со степенью 2 интервала.

 

Ifx_IntLkUpFixIMap

Интерполяционная таблица n-D

Interpolation method

InterpMethod

Nearest

Extrapolation method

ExtrapMethod

Clip

Index search method

IndexSearchMethod

Evenly spaced points

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Use last table value for inputs at or above last breakpoint

UseLastTableValue

On

Данные о точке останова не должны совпадать со степенью 2 интервала.

 

Ifx_IntLkUpFixIBaseMap

Интерполяционная таблица n-D

Interpolation method

InterpMethod

Flat

Extrapolation method

ExtrapMethod

Clip

Index search method

IndexSearchMethod

Evenly spaced points

Remove protection against out-of-range input in generated code

RemoveProtectionInput

Off

Integer rounding mode

RndMeth

Round или Zero

Use last table value for inputs at or above last breakpoint

UseLastTableValue

On

Данные о точке останова не должны совпадать со степенью 2 интервала.

 

Связанные примеры

Больше о