主要内容

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函数进行代码验证的工作流程。