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 Kalman.

Выполнение программы в цикле (SIL)

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

Сконфигурируйте выполнение 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).

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

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

Завершает процесс выполнения SIL.

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

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

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

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

  • Брандмауэр Windows потенциально может заблокировать выполнение SIL. Чтобы разрешить выполнение, используйте диалоговое окно «Предупреждение безопасности Windows». Для примера в Windows 7 нажатий кнопки Разрешить доступ.

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

Если вы впервые подключены к аппаратной плате Raspherry 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 потенциально может заблокировать выполнение 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-функции от памяти.

См. также

| |

Похожие темы