如何在嵌入式系统或快速原型构建板上实现即交即用式部署?
2021-11-22 11:37:46
Embedded Coder® 为大规模生产中使用的嵌入式处理器生成可读、紧凑且快速的 C 和 C++ 代码。它对 MATLAB® Coder™ 和 Simulink® Coder 进行了高级优化,以精确控制生成的函数、文件和数据。这些优化可以提高代码效率,简化与现有代码、数据类型和标定参数的集成。您可以结合使用第三方开发工具编译可执行文件,以在您的嵌入式系统或快速原型构建板上实现即交即用式部署。
1.教程
1.1 从 Simulink 模型中生成 C 代码
从表示离散时间控制系统的模型生成、测试和部署针对嵌入式系统优化的 C 代码。
步骤 1: 使用 Embedded Coder Quick Start 生成代码
使用默认配置,生成的源文件在rtwdemo_roll_ert_rtw目录中,主要包括两个文件:
rtwdemo_roll.c
rtwdemo_roll.h
slprj 文件夹包含 rtwtypes.h 文件,该文件定义生成的代码默认使用的标准数据类型。
代码生成器会为simulink模型生成:初始化函数 rtwdemo_roll_initialize 和执行(单步)函数 rtwdemo_roll_step 命名。
这两个入口函数都有一个 void-void 接口(它们不传递任何参数)。这些函数通过共享数据结构体访问数据。
打开 Code Mapping 编辑器。在 Functions 选项卡上,您可以看到代码生成器生成的各个入口函数。
步骤 2: 配置数据接口
步骤 3: 将模型参数配置为全局变量以在运行时调整
默认情况下,代码生成优化可避免存储不参与入口函数接口的模型参数和大多数信号。要使参数可调和相关信号可访问,请通过显式配置方式来标识它们。
网页:https://www.mathworks.com/help/releases/R2020a/ecoder/gs/configure-a-model-parameter-as-a-global-variable-for-run-time-tuning.html
matlab:web(fullfile(docroot, ‘ecoder/gs/configure-a-model-parameter-as-a-global-variable-for-run-time-tuning.html’))
步骤 4: 比较模型仿真和生成代码的结果
在教程的此步骤中,您将验证在执行时代码在数值上等效于 Simulink® 中建模的算法。您使用测试框架模型在 Normal 模式下对 rtwdemo_roll 进行仿真,并在 SIL 模式下进行仿真,然后使用 Simulation Data Inspector 比较这两个仿真。
要测试生成的代码,您可以运行软件在环 (SIL) 和处理器在环 (PIL) 仿真。SIL 仿真在开发计算机上编译并运行生成的代码。PIL 仿真在开发计算机上交叉编译源代码,然后,PIL 仿真在目标处理器或等效的指令集仿真器上下载并运行目标代码。您可以使用 SIL 和 PIL 仿真:
网址:https://www.mathworks.com/help/releases/R2020a/ecoder/gs/compare-model-simulation-and-generated-code-results.html
matlab:web(fullfile(docroot, ‘ecoder/gs/compare-model-simulation-and-generated-code-results.html’))
步骤 5: 部署生成的代码
移动文件夹
Embedded Coder® 为大规模生产中使用的嵌入式处理器生成可读、紧凑且快速的 C 和 C++ 代码。它对 MATLAB® Coder™ 和 Simulink® Coder 进行了高级优化,以精确控制生成的函数、文件和数据。这些优化可以提高代码效率,简化与现有代码、数据类型和标定参数的集成。您可以结合使用第三方开发工具编译可执行文件,以在您的嵌入式系统或快速原型构建板上实现即交即用式部署。
1.教程
1.1 从 Simulink 模型中生成 C 代码
从表示离散时间控制系统的模型生成、测试和部署针对嵌入式系统优化的 C 代码。
步骤 1: 使用 Embedded Coder Quick Start 生成代码
使用默认配置,生成的源文件在rtwdemo_roll_ert_rtw目录中,主要包括两个文件:
rtwdemo_roll.c
rtwdemo_roll.h
slprj 文件夹包含 rtwtypes.h 文件,该文件定义生成的代码默认使用的标准数据类型。
代码生成器会为simulink模型生成:初始化函数 rtwdemo_roll_initialize 和执行(单步)函数 rtwdemo_roll_step 命名。
这两个入口函数都有一个 void-void 接口(它们不传递任何参数)。这些函数通过共享数据结构体访问数据。
打开 Code Mapping 编辑器。在 Functions 选项卡上,您可以看到代码生成器生成的各个入口函数。
步骤 2: 配置数据接口
步骤 3: 将模型参数配置为全局变量以在运行时调整
默认情况下,代码生成优化可避免存储不参与入口函数接口的模型参数和大多数信号。要使参数可调和相关信号可访问,请通过显式配置方式来标识它们。
网页:https://www.mathworks.com/help/releases/R2020a/ecoder/gs/configure-a-model-parameter-as-a-global-variable-for-run-time-tuning.html
matlab:web(fullfile(docroot, ‘ecoder/gs/configure-a-model-parameter-as-a-global-variable-for-run-time-tuning.html’))
步骤 4: 比较模型仿真和生成代码的结果
在教程的此步骤中,您将验证在执行时代码在数值上等效于 Simulink® 中建模的算法。您使用测试框架模型在 Normal 模式下对 rtwdemo_roll 进行仿真,并在 SIL 模式下进行仿真,然后使用 Simulation Data Inspector 比较这两个仿真。
要测试生成的代码,您可以运行软件在环 (SIL) 和处理器在环 (PIL) 仿真。SIL 仿真在开发计算机上编译并运行生成的代码。PIL 仿真在开发计算机上交叉编译源代码,然后,PIL 仿真在目标处理器或等效的指令集仿真器上下载并运行目标代码。您可以使用 SIL 和 PIL 仿真:
网址:https://www.mathworks.com/help/releases/R2020a/ecoder/gs/compare-model-simulation-and-generated-code-results.html
matlab:web(fullfile(docroot, ‘ecoder/gs/compare-model-simulation-and-generated-code-results.html’))
步骤 5: 部署生成的代码
移动文件夹
举报