MATLAB函数的在环处理器验证
这个例子向您展示了如何使用嵌入式Coder®支持包BeagleBone®黑硬件的处理器在环(PIL)万博1manbetx上的MATLAB®函数的硬件验证。
简介
在这个例子中,您将学习如何从一个简单的MATLAB函数生成PIL MEX函数。当您运行PIL MEX函数时,从您的MATLAB函数生成的c代码在BeagleBone黑板上运行。将计算结果转化为MATLAB进行数值验证。在此过程中,您可以分析代码执行情况。PIL验证过程是设计周期的一个关键部分,以确保部署代码的行为与设计相匹配。
先决条件
本示例没有先决条件。
任务1 -创建一个新文件夹并复制相关文件
下面的代码将在当前工作文件夹中创建一个文件夹。新文件夹将只包含与此示例相关的文件。如果不希望影响当前文件夹(或者不能在此文件夹中生成文件),则应该更改工作文件夹。
codertarget.arm_cortex_a.demo_setup(“simple_addition”);
在本例中,我们使用simple_addition.m函数,该函数只添加两个输入并返回结果。要查看此函数的内容:
类型simple_addition
的% # codegen
指令表明MATLAB代码是用于代码生成的。
任务2 -生成PIL MEX函数
首先,使用命令生成一个PIL MEX函数build_pil_mex然后是要编译的MATLAB文件的名称。
build_pil_mex(“simple_addition”、“BeagleBone黑”)
'build_pil_mex'函数在当前文件夹中生成一个名为'simple_addition_pil'的PIL MEX函数。这允许您测试MATLAB代码和PIL MEX函数,并比较结果。要查看'build_pil_mex'函数的内容:
类型build_pil_mex
'build_pil_mex'函数创建一个编码器配置对象并设置VerificationMode属性“公益诉讼”。然后,它将“BeagleBone Black”硬件对象附加到编码器配置对象。该硬件对象向“codegen”命令发送信号,以生成运行在BeagleBone Black硬件上的PIL可执行文件,并使用PIL MEX函数在模拟器上运行该可执行文件。
任务3 -运行PIL MEX函数
运行PIL MEX函数,将其行为与原始的MATLAB函数进行比较,并检查运行时错误。
u1 =单(rand (1024 1));u2 =单(rand (1024 1));y = simple_addition_pil (u1, u2);
任务4 -验证生成的代码
为了验证生成代码的数值精度,将MATLAB结果与PIL MEX函数的结果进行比较:
规范(y - simple_addition (u1, u2))
任务5 - Profile生成的代码
的build_pil_mex
函数通过设置启用代码执行分析CodeExecutionProfiling将编码器配置对象设置为true。当启用分析时,生成的代码将使用计时信息进行检测。当PIL MEX函数从内存中清除时,分析结果被传输到MATLAB。
为了累积分析结果,在一个循环中运行simple_add函数100次:
对于k=1:100, y = simple_addition_pil(u1,u2);结束
在清除PIL MEX函数后,可以得到分析结果:
明确simple_addition_pil
调出分析报告:
报告(getCoderExecutionProfile (simple_addition))
任务6 -使用“ARM Cortex-A”代码替换库(CRL)
为了利用优化的CRL为ARM®Cortex®-A处理器,重新构建PIL MEX函数与'ARM Cortex-A' CRL:
build_pil_mex(“simple_addition”、“BeagleBone黑”,真的)
在循环中运行simple_add函数100次,以累积分析结果:
对于k=1:100, y = simple_addition_pil(u1,u2);结束
在清除PIL MEX函数后,可以得到分析结果:
明确simple_addition_pil
调出分析报告:
报告(getCoderExecutionProfile (simple_addition))
将分析结果与在任务5.
总结
本例介绍了使用PIL对MATLAB函数进行代码验证的工作流程。