Mathworks.®代码生成软件生成ANSI®/ ISO®C代码。对于最佳执行性能,生成的代码通常必须是特定于硬件的。代码替换功能可帮助您启用目标以替换具有特定硬件代码的生成代码的部分。在本节中,您将实现代码替换功能。
手臂®皮质®-A处理器使用ARM Neon SIMD指令,用于为多媒体应用程序定制。由ARM和Compiler特定属性提供的特定于应用程序的库利用这些说明。参考目标手臂皮层-a硬件,填写使用这些指令的代码替换库(CRL)。您的目标可以重用此库。
如果您需要为您的参考目标实施其他代码替换库,请参阅开发代码替换库.
考虑一个简单的simulink金宝app®增加两个的模型4 x4
矩阵。模型图如下图所示。
下表显示了在右侧模型中为ADD块生成的源代码:ANSI / ISO C代码以及使用代码替换库的硬件特定代码。
ANSI / ISO C源代码 | 代码替换后的特定硬件代码 |
---|---|
For (i = 0;我< 16;i++) {rtb_Add[i] = test_P. txt;MatrixA_Value[我]+ test_P.MatrixB_Value[我];} |
mw_neon_mm_add_f32x4(test_p.matrixa_value,4,4,test_p.matrixb_value,RTB_ADD); |
使用以下步骤验证目标是否发生了目标。
在matlab.®,在这方面家选项卡,选择新的>金宝appSimulink模型.接下来,选择空白模型.然后,选择保存>另存为...并保存您的模型测试
.
选择模拟>模型配置参数.
在“配置参数”对话框中,选择解算器
.
来自类型列表,选择固定步骤
.来自解算器列表,选择汽车
.
在“配置参数”对话框中,选择硬件实现
标签。
放硬件板例如,你注册的硬件,“我的手臂皮层A板”
.
在模型配置参数对话框中,选择代码生成
标签。
在构建过程小组,检查生成代码只要。
选择代码>报告并检查创建代码生成报告
选择仿真>硬件实现, 放设备供应商到手臂兼容
和集合设备类型到手臂皮层
.
选择所有参数,然后选择优化类别。清除块减少.点击好吧.
选择图书馆浏览器.
在Si金宝appmulink库中,打开来源并添加常数块到您的模型。
双击常数块并设置恒定价值到单(4)(4))
复制并粘贴常数块到同一模型。
在Si金宝appmulink库中,打开数学运营并添加添加块到您的模型。
连接常数和常数1街区到了添加堵塞。
在Si金宝appmulink库中,打开下沉,添加范围块到模型并将其连接到添加堵塞。
点击构建模型在你的模型中。
在打开的代码生成报告中,单击test.c
文件并查找实现Add块的代码。
验证矩阵添加是否为逐个循环添加矩阵元素。
选择模拟>模型配置参数.
选择代码生成>界面和集合代码替换库到arm cortex-a
.点击好吧.
点击构建模型在你的模型中。
在代码生成报告中,单击test.c
文件并查找实现添加块的代码。
验证矩阵添加是否为函数调用mw_neon_mm_add_f32x4
功能。