SIL и верификация PIL для развертывания на Raspberry Pi

В этом примере показано, как проверить сгенерированный код при помощи программного обеспечения в цикле (SIL) и процессоре в цикле (PIL) выполнение. В этом примере выполнение PIL использует аппаратную плату Raspberry Pi®.

Запустите код MATLAB

Этот пример использует эти вспомогательные файлы:

  • kalman01.m содержит функцию MATLAB® kalman01 для Оценки состояния фильтра Калмана.

  • position.mat содержит входные данные о траектории объекта.

  • test01_ui.m скрипт MATLAB, который загружает входные данные от position.mat в рабочую область, kalman01 вызовов оценить объектное местоположение при помощи алгоритма фильтрации Кальмана, и наконец вызывает plot_trajectory функция, которая строит и фактическую траекторию объекта и оценку Кальмана.

  • plot_trajectory.m содержит plot_trajectory функция, описанная выше.

Чтобы протестировать код MATLAB, запустите скрипт test01_ui.

test01_ui
Current plot held

Current plot released

В графике, который отображен, вы видите, что оценка Кальмана сопровождает фактическую траекторию объекта. Тестовые данные включают два внезапных сдвига или разрывы в положении. Эти разрывы проверяют, что Фильтр Калмана может быстро приспособить свою оценку и возвратиться к отслеживанию объекта точно.

Для получения дополнительной информации смотрите генерацию кода C для Алгоритма фильтрации Кальмана MATLAB.

Программное обеспечение в цикле (SIL) выполнение

В выполнении SIL, через интерфейс СИЛА MATLAB, генератор кода скомпилировал и запустил код библиотеки по вашему компьютеру разработчика.

Сконфигурируйте выполнение SIL

Создайте coder.EmbeddedCodeConfig объект сгенерировать статическую библиотеку C. Установите VerificationMode свойство к 'SIL'. Опционально, включите отладчик Microsoft® Visual Studio® для выполнения SIL.

config = coder.config('lib');
config.VerificationMode = 'SIL';
% config.SILDebugging = true;

Проверяйте, что производственная аппаратная установка установлена в значение по умолчанию 'Generic->MATLAB Host Computer'.

disp(config.HardwareImplementation.ProdHWDeviceType); 
Generic->MATLAB Host Computer

Сгенерируйте статическую библиотеку и запущенное выполнение SIL

Используйте codegen команда с объектом config настройки сгенерировать статическую библиотеку C и интерфейс SIL для kalman01 функция. Чтобы выполнить выполнение SIL, можно просто вызвать сгенерированный интерфейс SIL kalman01_sil в командной строке MATLAB.

В codegen команда, -test опция позволяет вам запустить тестовый скрипт test01_ui с вызовами kalman01 функция, замененная вызовами сгенерированного интерфейса SIL kalman01_sil.

codegen -config config -args {zeros(2,1)} kalman01 -report -test test01_ui 
Code generation successful: View report

Running test file: 'test01_ui' with MEX function 'kalman01_sil.mexw64'.
Current plot held
### Starting SIL execution for 'kalman01'
    To terminate execution: clear kalman01_sil

Current plot released

Генератор кода создает эти выходные папки:

  • codegen\lib\kalman01 — Статическая библиотека для kalman01.

  • codegen\lib\kalman01\sil — Код интерфейса SIL для kalman01.

Заметьте, что выход этого запуска совпадает с выходом от kalman01 Функция MATLAB.

Отладьте код во время выполнения SIL

Если вы включаете отладчик Microsoft Visual Studio, то выполнение тестового файла открывает IDE Microsoft Visual Studio с точками останова отладчика в начале kalman01_initialize и kalman01 функции.

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

Закончить сеанс отладки:

  • Удалите все точки останова.

  • Кликните по кнопке (F5) Continue.

Выполнение SIL выполнение до завершения.

Отключите выполнение SIL

Отключите процесс выполнения SIL.

clear kalman01_sil;
### Stopping SIL execution for 'kalman01'

Можно также использовать команду clear mex, который очищает MEX-функции из памяти.

Указания по применению для платформы Windows®

Указания по применению для выполнения SIL на платформе Windows:

  • Windows Firewall может потенциально блокировать выполнение SIL. Чтобы позволить выполнение, используйте диалоговое окно сигнала безопасности Windows. Например, в Windows 7, нажмите, предоставляют доступ.

  • Предположим что текущая рабочая директория MATLAB (папка, что pwd отображения), путь UNC (например, \\server\a\b\c) на платформе Windows. Если при запуске исполняемый файл SIL от этого пути, местоположение, где исполняемый файл SIL запускается, может быть непредсказуемым и отличаться от текущей рабочей директории MATLAB (например, C:\Windows). Чтобы устранить эту проблему, используйте подключенный сетевой диск для пути UNC как ваша текущая рабочая директория MATLAB.

Процессор в цикле (PIL) выполнение

В выполнении PIL, через интерфейс MATLAB PIL, код производственного объекта кросс-компиляций и запусков генератора кода по целевому процессору или эквивалентному симулятору процессора. Прежде чем вы запустите выполнение PIL, необходимо настроить настройку возможности соединения PIL для цели. В этом примере выполнение PIL использует аппаратную плату Raspberry Pi®.

Сконфигурируйте выполнение PIL

Создайте coder.EmbeddedCodeConfig объект сгенерировать статическую библиотеку C. Установите VerificationMode свойство к 'PIL'. Установите Hardware свойство к аппаратной конфигурации платы возражает для Raspberry Pi.

config = coder.config('lib');
config.VerificationMode = 'PIL';
config.Hardware = coder.hardware('Raspberry Pi');

Если вы к своей аппаратной плате Распхэрри Пи впервые, необходимо также задать Username, DeviceAddress, и Password свойства config.Hardware параметр.

Сгенерируйте статическую библиотеку и запущенное выполнение PIL

Используйте codegen команда с объектом config настройки сгенерировать статическую библиотеку C и интерфейс PIL для kalman01 функция. Чтобы выполнить выполнение PIL, можно просто вызвать сгенерированный интерфейс PIL kalman01_pil в командной строке MATLAB.

В codegen команда, -test опция позволяет вам запустить тестовый скрипт test01_ui с вызовами kalman01 функция, замененная вызовами сгенерированного интерфейса PIL kalman01_pil.

codegen -config config -args {zeros(2,1)} kalman01 -report -test test01_ui 
### Connectivity configuration for function 'kalman01': 'Raspberry Pi'
Location of the generated elf : /home/pi/MATLAB_ws/R2021a/C/Users/aghosh/Documents/ExampleManager/aghosh.Bdoc21a.j1630849/ecoder-ex65983262/codegen/lib/kalman01/pil
Code generation successful: View report

Running test file: 'test01_ui' with MEX function 'kalman01_pil.mexw64'.
Current plot held
### Connectivity configuration for function 'kalman01': 'Raspberry Pi'
### Starting application: 'codegen\lib\kalman01\pil\kalman01.elf'
    To terminate execution: clear kalman01_pil
### Launching application kalman01.elf...

Current plot released

Генератор кода создает эти выходные папки:

  • codegen\lib\kalman01 — Статическая библиотека для kalman01.

  • codegen\lib\kalman01\pil — Код интерфейса PIL для kalman01.

Заметьте, что выход этого запуска совпадает с выходом от kalman01 Функция MATLAB.

Windows Firewall может потенциально блокировать выполнение PIL. Чтобы позволить выполнение, используйте диалоговое окно сигнала безопасности Windows. Например, в Windows 7, нажмите, предоставляют доступ.

Отключите выполнение PIL

Отключите процесс выполнения PIL.

clear kalman01_pil;
### Host application produced the following standard output (stdout) and standard error (stderr) messages:

Можно также использовать команду clear mex, который очищает MEX-функции из памяти.

Смотрите также

| |

Похожие темы