PIL Execution at the Command Line Using MATLAB Coder
This example shows how to set up a processor-in-the-loop (PIL) execution to verify generated code from a MATLAB® function using MATLAB Coder™ at the command line.
You can use PIL executions to verify generated code that you deploy to the STMicroelectronics® Discovery™ and STMicroelectronics Nucleo boards by using a MATLAB Coder procedure. You can profile algorithm performance and speed of your generated code on the hardware board. To verify generated code, you must have MATLAB Coder and an Embedded Coder® license.
This PIL execution is supported with these hardware support packages.
Embedded Coder Support Package for BeagleBone® Black Hardware
Embedded Coder Support Package for ARM® Cortex®-A Processors
Embedded Coder Support Package for ARM Cortex-M Processors
Simulink® Coder Support Package for STMicroelectronics Nucleo Boards
Embedded Coder Support Package for STMicroelectronics Discovery Boards
To set up a PIL execution:
In the Command Window, select the hardware (STM32F4-Discovery) for PIL execution.
hw = coder.hardware('STM32F4-Discovery')
hw = Hardware with properties: Name: 'STM32F4-Discovery' CPUClockRate: 168 PILCOMPort: 'COM1' PILInterface: 'ST-LINK'
In the Command Window, select the hardware (STM32 Nucleo H743ZI2) for PIL execution.
hw = coder.hardware('STM32 Nucleo H743ZI2')
hw = Hardware with properties: Name: 'STM32 Nucleo H743ZI2' CPUClockRate: 480 PILCOMPort: 'COM1' PILBaudRate: '115200' PILInterface: 'Serial'
Add the hardware to the MATLAB Coder configuration object.
cfg = coder.config('lib','ecoder',true); cfg.VerificationMode = 'PIL'; cfg.Hardware = hw;
The memory of the hardware board is limited, and a default value of
20000
is beyond the stack size available in the hardware. We recommend you to set theStackUsageMax
value to512
. However, specify an appropriate stack usage based on your algorithm.cfg.StackUsageMax = 512;
Generate the PIL code for a function,
averaging_filter
.codegen -config cfg averaging_filter -args {zeros(1,16)}
For more information on the
averaging_filter
function, see the example Generate C/C++ Code from a MATLAB Function.