激活代码替换功能
MathWorks®代码生成软件生成ANSI®/ ISO®C代码。为了获得最佳的执行性能,生成的代码通常必须是特定于硬件的。代码替换特性帮助您使目标能够使用特定于硬件的代码替换部分生成的代码。在本节中,您将实现代码替换特性。
手臂®皮质®-M处理器有一些专门的指令集,是为数学和信号处理应用量身定制的。ARM提供的优化库利用了这些指令。的参考目标手臂皮层-M硬件,提供一个使用这些指令的代码替换库(CRL)。您的目标可以重用此库。
手臂皮层-R处理器有一些专门的指令集,是为数学和信号处理应用量身定制的。ARM提供的优化库利用了这些指令。的参考目标手臂皮层-R硬件,提供了一个使用这些指令的代码替换库(CRL)。您的目标可以重用此库。
如果需要为引用目标实现其他代码替换库,请参见开发一个代码替换库.
代码替换后的代码
考虑一个简单的Simulink金宝app®模型添加两个9 x9
矩阵。模型示意图如下图所示。
下表显示了为模型中的Add块生成的源代码:左边是ANSI/ISO C代码,右边是使用代码替换库的特定于硬件的代码。
ANSI/ISO C源代码 | 代码替换后的特定硬件代码 |
---|---|
For (i = 0;I < 81;i++) {test_B。添加[i] = test_P.Constant_Value[i] + test_P.Constant1_Value[i]; } |
mw_arm_mat_add_f32 (test_P。Constant_Value test_P。Constant1_Value, test_B.Add, 9U, 9U); |
通过以下步骤验证预期的代码替换发生在目标上。
在MATLAB®,在首页选项卡上,选择新>金宝app仿真软件模型.接下来,选择空白模型.然后,选择保存>另存为…并将模型保存为
测验
.选择模拟>型号配置参数.
在“配置参数”对话框中,选择
解算器
.从类型列表中,选择
固定步
.从解算器列表中,选择汽车
.在“配置参数”对话框中,选择
硬件实现
选项卡。集硬件板例如,您注册的硬件,
“我的ARM Cortex M板”
.在型号配置参数对话框,选择
代码生成
选项卡。在构建过程组织检查生成代码只有。
选择代码生成>报表并检查创建代码生成报告
选择仿真>硬件实现,设置设备供应商来
手臂兼容
并设置设备类型来手臂皮层
.选择所有参数,然后选择优化类别。清晰的块减少.点击好吧.
选择库浏览器.
在Si金宝appmulink库中,打开来源并添加常数块到你的模型。
双击常数块,并设置恒定值来
9)单(兰德(9日)
复制并粘贴常数块到相同的模型。
在Si金宝appmulink库中,打开数学操作并添加添加块到你的模型。
连接常数而且Constant1街区到添加块。
在Si金宝appmulink库中,打开汇,添加范围块到模型,并将其连接到添加块。
点击构建模型在你的模型中。
在打开的代码生成报告中,单击
test.c
文件,并找到实现Add块的代码。验证矩阵加法被实现为一个for循环,一个接一个地添加矩阵元素。
选择模拟>型号配置参数.
选择代码生成>接口并设置代码替换库来
ARM Cortex-M (CMSIS)
.点击好吧.点击构建模型在你的模型中。
在“代码生成报告”中,单击
test.c
文件并找到实现Add块的代码。验证矩阵加法是作为函数调用实现的
mw_arm_mat_add_f32
函数。