Generate Optimized Code on Raspberry Pi Target
This example shows how to generate optimized code for the resample function that can be deployed onto a Raspberry Pi® hardware board target (ARM®-based device) using processor-in-the-loop (PIL) execution. For more details, see the SIL/PIL Manager Verification Workflow documentation.
Prerequisites
Signal Processing Toolbox™
MATLAB® Coder™
Embedded Coder®
Create Code Generation Configuration Object
Create a code generation configuration object for a static library. Set the VerificationMode property to 'PIL' and the TargetLang property to 'C++'.
cfg = coder.config('lib'); cfg.VerificationMode = 'PIL'; cfg.TargetLang = 'C++';
Create Connection to Raspberry Pi
Use the MATLAB Support Package for Raspberry Pi Support Package function, raspi, to create a connection to the Raspberry Pi. In this line of code, replace:
raspinamewith the host name of your Raspberry Piusernamewith your user namepasswordwith your password
r = raspi('raspiname','username','password');
Create Hardware Board Configuration Object
Create a hardware board configuration object for Raspberry Pi. Set the Hardware property of the code generation configuration object to the coder.hardware object.
hw = coder.hardware('Raspberry Pi');
cfg.Hardware = hw;Generate Source C++ Code
Create random input data to feed to the resample function.
rng(0); a = rand(100000,1);
Generate optimized C++ code using the codegen function. Specify interpolation and decimation factors as 1 and 6, respectively.
% codegen('doResample.m','-config','cfg','-args','{a, 1, 6}');Compare the results generated by the MATLAB resample function and the generated MEX PIL function.
cg_out = doResample_pil(a,1,6);
### Starting application: 'codegen\lib\doResample\pil\doResample.elf'
To terminate execution: clear doResample_pil
### Launching application doResample.elf...
ml_out = doResample(a,1,6); max(cg_out-ml_out)
ans = 9.9920e-16