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