exponenta event banner

legacy_code

Использовать устаревший инструмент кода

Синтаксис

legacy_code('help')
specs = legacy_code('initialize')
legacy_code('sfcn_cmex_generate', specs)
legacy_code('compile', specs, compilerOptions)
legacy_code('generate_for_sim', specs, modelname)
legacy_code('slblock_generate', specs, modelname)
legacy_code('sfcn_tlc_generate', specs)
legacy_code('sfcn_makecfg_generate', specs)
legacy_code('rtwmakecfg_generate', specs)
legacy_code('backward_compatibility')

Описание

legacy_code создает структуру MATLAB ® для регистрации спецификации для существующего кода C или C++ и генерируемой S-функции. Кроме того, функция может генерировать, компилировать и связывать и создавать маскированный блок для указанной S-функции. Другие варианты включают создание

  • Файл TLC для моделирования в режиме Accelerator или генерации кода

  • Один rtwmakecfg.m файл, который можно настроить для указания зависимых исходных и заголовочных файлов, которые находятся в каталоге, отличном от каталога созданной S-функции

legacy_code('help') отображает инструкции по использованию прежнего инструмента кода.

specs = legacy_code('initialize') инициализирует структуру данных Legacy Code Tool, specs, который регистрирует характеристики существующего кода C или C++ и свойства S-функции, генерируемой инструментом Legacy Code Tool.

legacy_code('sfcn_cmex_generate', specs) создает исходный файл S-функции в соответствии со структурой данных Legacy Code Tool, specs.

legacy_code('compile', specs, compilerOptions) компилирует и связывает S-функцию, генерируемую инструментом Legacy Code Tool, на основе структуры данных, specsи параметры компилятора, которые можно указать. Параметры компилятора должны поддерживаться функцией mex.

legacy_code('generate_for_sim', specs, modelname) генерирует, компилирует и связывает S-функцию за один шаг. Если Options.useTlcWithAccel в поле структуры данных Legacy Code Tool установлено логическое значение 1 (true), функция также генерирует файл TLC для ускоренного моделирования.

legacy_code('slblock_generate', specs, modelname) генерирует маскированный S-функциональный блок для S-функции, генерируемой инструментом кода Legacy Code Tool на основе структуры данных, specs. Блок появляется в модели Simulink ®, указанной modelname. Если опустить modelnameблок появится в пустом окне редактора модели.

legacy_code('sfcn_tlc_generate', specs) генерирует файл TLC для S-функции, генерируемой инструментом Legacy Code Tool на основе структуры данных, specs. Эта опция релевантна, если необходимо:

legacy_code('sfcn_makecfg_generate', specs) генерирует sFunction_makecfg.m файл для S-функции, генерируемый инструментом Legacy Code Tool на основе структуры данных, specs. Эта опция применима только при использовании программного обеспечения Simulink Coder для создания кода из модели Simulink. Дополнительные сведения см. в разделах Использование makecfg для настройки сгенерированных Makefile для S-функций (Simulink Coder) и Импорт вызовов внешнего кода в сгенерированный код с помощью прежнего инструмента Code Tool (Simulink Coder).

legacy_code('rtwmakecfg_generate', specs) генерирует rtwmakecfg.m файл для S-функции, генерируемый инструментом Legacy Code Tool на основе структуры данных, specs. Эта опция применима только при использовании программного обеспечения Simulink Coder для создания кода из модели Simulink. Дополнительные сведения см. в разделах Использование API rtwmakecfg.m для настройки сгенерированных Makefiles (Simulink Coder) и Импорт вызовов внешнего кода в сгенерированный код с помощью прежнего инструмента Code Tool (Simulink Coder).

legacy_code('backward_compatibility') автоматически обновляет синтаксис для использования устаревшего инструмента кода до поддерживаемого синтаксиса, описанного на этой справочной странице и в разделе Интеграция функций C с использованием устаревшего инструмента кода.

Входные аргументы

specs

Структура со следующими полями:

Назовите S-функцию

SFunctionName (Обязательно) - вектор символов, указывающий имя S-функции, генерируемой инструментом кода прежней версии.

Определение спецификаций функций устаревших инструментов кода

  • InitializeConditionsFcnSpec - непустой символьный вектор, задающий функцию, которую S-функция вызывает для инициализации и сброса состояний. Необходимо объявить эту функцию с помощью маркеров, которые программное обеспечение Simulink может интерпретировать, как описано в разделе Объявление спецификаций устаревших функций инструмента кода.

  • OutputFcnSpec - непустой символьный вектор, задающий функцию, которую S-функция вызывает на каждом временном шаге. Необходимо объявить эту функцию с помощью маркеров, которые программное обеспечение Simulink может интерпретировать, как описано в разделе Объявление спецификаций устаревших функций инструмента кода.

  • StartFcnSpec - символьный вектор, определяющий функцию, вызываемую S-функцией при начале выполнения. Эта функция может обращаться к аргументам параметра S-функции и рабочим данным. Необходимо объявить эту функцию с помощью маркеров, которые программное обеспечение Simulink может интерпретировать, как описано в разделе Объявление спецификаций устаревших функций инструмента кода.

  • TerminateFcnSpec - символьный вектор, определяющий функцию, вызываемую S-функцией при завершении выполнения. Эта функция может обращаться к аргументам параметра S-функции и рабочим данным. Необходимо объявить эту функцию с помощью маркеров, которые программное обеспечение Simulink может интерпретировать, как описано в разделе Объявление спецификаций устаревших функций инструмента кода.

Определение ресурсов компиляции

  • HeaderFiles - массив ячеек символьных векторов, задающих имена файлов заголовков, необходимых для компиляции.

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

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

  • TargetLibFiles - массив ячеек символьных векторов, задающих библиотечные файлы, необходимые для целевой (то есть автономной) компиляции. Можно указать файлы библиотеки, используя абсолютные или относительные имена путей.

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

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

  • LibPaths - массив ячеек символьных векторов, задающих каталоги, содержащие файлы главной и целевой библиотек. Можно указать каталоги, используя абсолютные или относительные имена путей.

Укажите время образца

SampleTime - Одно из следующих:

  • 'inherited' (по умолчанию) - образец времени наследуется от исходного блока.

  • 'parameterized' - Время выборки представляется как настраиваемый параметр. Сгенерированный код может получить доступ к параметру путем вызова функций MEX API, таких как mxGetPr или mxGetData.

  • Исправлено (Fixed) - образец времени, явно указанного пользователем. Сведения о том, как указать время выборки, см. в разделе Указание времени выборки.

Если вы указываете это поле, вы должны указать его последним.

Определение опций S-функции

Options - структура, управляющая опциями S-функции. Поля структуры включают в себя:

  • canBeCalledConditionally - логическое значение, определяющее настройку S-функции; SS_OPTION_CAN_BE_CALLED_CONDITIONALLY вариант. По умолчанию используется значение true (1).

  • convertNDArrayToRowMajor- логическое значение, определяющее автоматическое преобразование матрицы между основным форматом столбца и основным форматом строки. Основной формат столбца используется MATLAB, Simulink и сгенерированным кодом. Основной формат строки используется C. Значение по умолчанию: false (0). Если в данный момент указана предыдущая версия параметра, convert2DMatrixToRowMajor, функция автоматически задает новый convertNDArrayToRowMajor вариант.

    Примечание

    Этот параметр не поддерживает 2-D матрицу сложных данных.

  • isMacro - логическое значение, указывающее, является ли устаревший код макросом C. По умолчанию используется значение false (0).

  • isVolatile - логическое значение, определяющее настройку S-функции; SS_OPTION_NONVOLATILE вариант. По умолчанию используется значение true (1).

  • language - вектор символов, определяющий 'C' или 'C++' в качестве целевого языка S-функции, которую будет создавать Legacy Code Tool. По умолчанию используется значение 'C'.

    Примечание

    Legacy Code Tool может взаимодействовать с функциями C++, но не с объектами C++. Описание обхода см. в разделе Ограничения устаревших инструментов кода в документации Simulink.

  • outputsConditionallyWritten- логическое значение, указывающее, записывает ли устаревший код условно выходные порты. Если true, сгенерированная S-функция указывает, что память, связанная с каждым выходным портом, не может быть перезаписана и является глобальной (SS_NOT_REUSABLE_AND_GLOBAL). Если false, память, связанная с каждым портом вывода, повторно используется и является локальной (SS_REUSABLE_AND_LOCAL). По умолчанию используется значение false (0). Дополнительные сведения см. в разделе ssSetOutputPortOptimOpts.

  • singleCPPMexFile - логическое значение, которое, если true, указывает, что сгенерированный код:

    • Требуется создать встроенную S-функцию и управлять ею только как одним файлом (.cpp) вместо двух (.c и .tlc).

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

    По умолчанию используется значение false.

    Ограничения

    Вы не можете установить singleCPPMexFile поле в true если

    • Options.language='C++'

    • Один из следующих объектов Simulink используется с IsAlias свойство имеет значение true:

      • Simulink.Bus

      • Simulink.AliasType

      • Simulink.NumericType

    • Спецификация функции Legacy Code Tool включает void* или void** для представления скалярных рабочих данных для аргумента состояния

    • HeaderFiles поле в структуре «Устаревший инструмент кода» определяет несколько заголовочных файлов

  • supportsMultipleExecInstances- логическое значение, определяющее необходимость включения вызова ssSupportsMultipleExecInstances функция. По умолчанию используется значение false (0).

  • supportCodeReuseAcrossModels- логическое значение, определяющее возможность повторного использования сгенерированной S-функции в ссылочной иерархии модели. Если true, генерируемая S-функция включает в себя ssSetSupportedForCodeReuseAcrossModels вызов функции. Генератор кода создает код для S-функций в slprj\ert\_sharedutils папка.

  • supportCoverage- логическое значение, указывающее, должна ли сгенерированная S-функция быть совместима с покрытием модели. По умолчанию используется значение false (0).

  • supportCoverageAndDesignVerifier- логическое значение, определяющее, должна ли создаваемая S-функция быть совместимой с Verifier™ «Покрытие модели» и «Дизайн Simulink». По умолчанию используется значение false (0).

  • useTlcWithAccel - логическое значение, определяющее настройку S-функции; SS_OPTION_USE_TLC_WITH_ACCELERATOR вариант. По умолчанию используется значение true (1).

modelname

Имя модели Simulink, в которую Legacy Code Tool должен вставить маскированный S-функциональный блок, созданный при указании legacy_code с вектором символов действия 'slblock_generate'. Если этот аргумент пропущен, блок появится в пустом окне редактора модели.

Представлен в R2006b