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

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

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

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

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

  • Одна топ-модель

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • Сгенерируйте совместно использованную библиотеку для экспорта.

Затем смотрите, Оценивают Характеристики Внешнего Кода.

Оцените характеристики внешнего кода

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

ХарактеристикаЧто рассмотреть
Аппаратная зависимость

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

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

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

Затем смотрите, Идентифицируют Требования Интегрирования.

Идентифицируйте требования интегрирования

Прежде, чем выбрать рабочий процесс внешней интеграции, рассмотрите эти требования интегрирования. Понимание этих требований и характеристики вашего внешнего кода помогают вам выбрать оптимальный рабочий процесс для своего сценария интегрирования. (См., Оценивают Характеристики Внешнего Кода.)

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

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

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

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

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

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

Затем смотрите, Выбирают Workflow.

Выберите рабочий процесс

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

Похожие темы