exponenta event banner

Выбор потока операций интеграции внешнего кода

Выполнение этих задач помогает выбрать рабочие процессы интеграции внешнего кода и инструменты, соответствующие проекту.

ЗадачаДействиеДополнительные сведения
1Разделите приложение, сопоставьте алгоритмы с компонентами и определите точки интеграции. Модели проектирования для развертывания созданного встроенного кода
2Определите, можно ли полагаться на код планирования, создаваемый генератором кода, или необходимо интегрировать сгенерированный код с механизмами планирования, специфичными для среды выполнения.Выбор платформы выполнения программного обеспечения для планирования выполнения кода
3Оцените особенности внешнего кода, который Вы импортируете или в который Вы экспортируете сгенерированный код.Анализ признаков внешнего кода
4Определение требований к интеграции, что помогает выбрать оптимальные инструменты для интеграции.Определение требований к интеграции
5По результатам заданий 1-4 выберите рабочий процесс.Выбор рабочего процесса

Выбор платформы выполнения программного обеспечения для планирования выполнения кода

Генератор кода поддерживает два типа фреймворков выполнения программного обеспечения - одну модель верхнего уровня и несколько моделей верхнего уровня, как описано в разделе Модели проектирования для развертывания сгенерированного встроенного кода. Первый вопрос, на который нужно ответить, касается того, какая из этих двух структур соответствует расписанию и другим потребностям проекта. Например, можно импортировать внешний код в единую модель верхнего уровня на основе скорости. Можно экспортировать код из одной модели верхнего уровня или нескольких моделей верхнего уровня для интеграции с пользовательскими (внешними) механизмами планирования.

  • Модель с одним верхом

    Создайте один набор файлов кода приложения из внешнего кода и кода, которые создает генератор кода Simulink ® C/C + +. Сгенерированный код включает в себя планировщик. В этом случае выполняется импорт кода в среду создания кода Simulink.

  • Одна модель верхнего уровня или несколько моделей верхнего уровня

    Интеграция кода C или C++, создаваемого генератором кода из компонентов модели, с внешним кодом приложения и внешним планировщиком. Созданный код экспортируется из среды создания кода Simulink.

Импорт вызовов кода драйвера внешнего устройства в модель и создание кода для этой модели для экспорта включает импорт и экспорт кода.

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

  • Импорт существующего внешнего кода в созданный код.

    • Вызов многократно используемого внешнего кода алгоритма для моделирования и генерации кода.

    • Поместите внешний код C/C + + в созданный код.

    • Вызовите драйверы внешних устройств.

    • Применение замены кода функции и оператора.

    • Интерфейс с внешним прерыванием таймера или планировщиком.

    • Создание кода замены для определенной среды выполнения.

  • Экспорт созданного кода для включения во внешнюю базу кода. Требуется встроенный кодер ®.

    • Создание исходного кода компонента для экспорта.

    • Создание общей библиотеки для экспорта.

Далее см. Анализ признаков внешнего кода.

Анализ признаков внешнего кода

Перед выбором потока операций внешней интеграции проанализируйте эти признаки внешнего кода. Для взаимодействия с внешним кодом сгенерированный код C или C++ обрабатывает одну или несколько характеристик внешнего кода. Понимание этих признаков и требований к моделированию, моделированию и созданию кода позволяет выбрать оптимальный рабочий процесс для сценария интеграции. (См. раздел Определение требований к интеграции.)

ОсобенностьЧто следует учитывать
Зависимость оборудования

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

Драйверы устройств взаимодействуют непосредственно с оборудованием. Они зависят от характеристик аппаратных средств. Например, драйвер устройства для аналого-цифрового преобразователя инициализирует, считывает данные из и записывает данные в аппаратные регистры. Аппаратные различия и зависимости касаются размера типа данных, длины, операций смены, директив компилятора, а также оптимизированной поддержки функций и операторов. Другой код взаимодействует с драйверами устройств с помощью API и данных, сопоставленных с определенными адресами памяти. Как правило, моделирование на компьютере разработки невозможно. Считывание и запись в регистр во время моделирования на компьютере разработки приводит к неожиданным и нежелательным результатам.

Повторно используемый Является ли внешний код повторно используемым программным модулем? Примеры включают функции утилит, таблицы поиска, фильтры, специализированные интеграторы и модули управления пропорциональными интегральными производными (PID).
Зависимость от сохранения данных между вызовами функцийТребует ли внешний код постоянных данных? Например, вызов функции фильтра первого порядка использует вывод предыдущего вызова функции для вычисления нового выходного значения. Существует возможность определения данных как глобальных или использования общей памяти вне контекста функции.
Ввод данных и интерфейсНасколько сложны данные, используемые внешним кодом? Как выглядит интерфейс данных? Он состоит из аргументов, возвращаемого значения, глобальных переменных и функций доступа. Какие типы данных использует код? Ограничиваются ли типы базовыми целыми числами ANSI C, типами с плавающей запятой, массивами целых чисел или типами с плавающей запятой и указателями на эти типы? Включает ли интерфейс структуры или указатели на структуры?
Код с фиксированной точкойПредназначен ли внешний код для работы с целочисленными процессорами? Если да, код обменивается и использует данные, представленные только целыми числами. Данные могут быть связаны с масштабированием с фиксированной точкой или смещениями.
Зависимости внешних ресурсовИспользует ли внешний код данные, функции или макросы, определенные вне области кода? Например, функция может использовать стандартную функцию ANSI, общую библиотеку или предопределенные константы. В этих случаях необходимо информировать компилятор и компоновщика о путях и именах файлов внешних ресурсов.
Требуется внешний решательИспользуете ли вы внешнюю функцию для расширенной разработки или быстрого прототипирования для описания системы с функцией непрерывной передачи или набором дифференциальных уравнений? Если да, внешний код зависит от внешнего решателя.

Далее см. раздел Определение требований к интеграции.

Определение требований к интеграции

Перед выбором потока операций внешней интеграции просмотрите эти требования интеграции. Понимание этих требований и характеристик внешнего кода позволяет выбрать оптимальный поток операций для сценария интеграции. (См. раздел Анализ признаков внешнего кода.)

ТребованиеЧто следует учитывать
УсилиеКакой объем работ планируется для проекта интеграции - низкий, средний или высокий?
Усилия по обучениюКаков опыт программирования назначенных ресурсов проекта? Какой опыт накоплен у назначенных ресурсов при создании кодов Simulink и MathWorks ® C/C + +?
Моделирование и поведение при создании кодаХотите воспользоваться преимуществами конструирования на основе моделей? Чтобы воспользоваться всеми преимуществами конструкции на основе модели, преобразуйте код в элементы моделирования, которые затем можно использовать в среде моделирования Simulink и Stateflow ®. Затем смоделируйте и создайте код для интегрированного компонента. Используйте тестирование ПО в цикле (SIL) или тестирование процессора в цикле (PIL), чтобы проверить, одинаково ли поведение алгоритма в обеих средах.
Интерфейс данных и ввод
  • Требуется ли для модели или созданного кода обмен данными с внешней функцией? Если да, сопоставьте входы, выходы и параметры внешнему интерфейсу функций. Типичные функциональные интерфейсы включают аргументы функций и возвращаемые значения, глобальные переменные и функции доступа, такие как getRPM.

  • Вы хотите представлять массивы, структуры или перечисляемые типы? В среде Simulink эти типы можно представить как векторы, шины и IntEnumсоответственно.

  • Требуется ли поддержка с фиксированной точкой? При использовании интерфейса фиксированной точки Simulink можно масштабировать и задавать смещения.

  • Использует ли внешний код специфичные для компании типы данных? При наличии программного обеспечения Embedded Coder создайте типы псевдонимов для представления этих внешних типов. Генератор кода использует типы псевдонимов в создаваемом коде. Например, после определения можно указать тип псевдонима в прототипе функции, для временной переменной или для вывода блока.

  • Обменивается ли код данными с общей памятью? Если да, определите и используйте разделы памяти.

Прямой вызов функцииВызвать внешний код C непосредственно из модели? Можно выбрать один из механизмов, таких как Legacy Code Tool, интерфейс внешнего кода Stateflow и язык действий с диаграммами, а также функциональный блок MATLAB ®.
Вставка внешнего кода в сгенерированный кодВы хотите управлять размещением внешнего кода в созданном коде? Вставить код в созданные функции точек входа? Код можно поместить в созданный код с помощью параметров конфигурации модели или пользовательских блоков кода.
Поддержка оптимизации генерации кодаОптимизировать код, создаваемый генератором кода? Если это так, можно настроить модель для генератора кода для оптимизации создаваемого кода на основе целей приложения, таких как выполнение, ПЗУ и эффективность ОЗУ. Также можно использовать библиотеки замены кода.
Требуемые файлыВы хотите сократить количество файлов, которые вы поддерживаете? Некоторые внешние инструменты интеграции кода требуют ведения отдельных файлов для определения моделирования и создания кода.

Далее см. раздел Выбор рабочего процесса.

Выбор рабочего процесса

Чтобы выбрать рабочий процесс для каждой точки интеграции, используйте следующую блок-схему. Серые поля определяют общие рабочие процессы и предоставляют ссылки на дополнительные сведения. Щелкните серую рамку, которая наилучшим образом соответствует требованиям точки интеграции.

Связанные темы