配置 AUTOSAR 代码生成
要从针对 AUTOSAR Classic 平台配置的模型生成符合 AUTOSAR 的 C 代码和 ARXML 组件描述,请执行以下操作:
在“配置参数”对话框中,在代码生成 > AUTOSAR 代码生成选项窗格上,配置 AUTOSAR 代码生成参数。
使用 AUTOSAR 字典或 AUTOSAR 属性函数配置 AUTOSAR XML 导出选项。
编译模型。
选择 AUTOSAR Classic 架构
对于导入和导出 ARXML 文件以及生成符合 AUTOSAR 的 C 代码,软件支持以下 AUTOSAR Classic 平台架构版本。
| 架构版本值 | 支持导入的架构修订版 | 导出架构修订版 |
|---|---|---|
| R23-11(默认值) | R23-11 | R23-11 |
| R22-11 | R22-11 | R22-11 |
| R21-11 | R21-11 | R21-11 |
| R20-11 | R20-11 | R20-11 |
| R19-11 | R19-11 | R19-11 |
| 4.4 | 4.4.0 | 4.4.0 |
| 4.3 | 4.3.0、4.3.1 | 4.3.1 |
| 4.2 | 4.2.1、4.2.2 | 4.2.2 |
| 4.1 | 4.1.1、4.1.2、4.1.3 | 4.1.3 |
| 4.0 | 4.0.1、4.0.2、4.0.3 | 4.0.3 |
首次为您的模型选择 AUTOSAR 系统目标文件会将架构版本参数设置为默认值 R23-11。
如果您将 ARXML 文件导入 Simulink® 中,则 ARXML 导入器会检测架构版本,并在模型中设置架构版本参数。例如,如果您导入基于架构 4.3 修订版 4.3.0 或 4.3.1 的 ARXML 文件,导入器会将架构版本参数设置为 4.3。
当您编译 AUTOSAR 模型时,代码生成器会导出 ARXML 描述并生成符合当前架构版本的 C 代码。例如,如果为架构版本生成 XML 文件 (Embedded Coder)等于 4.3,则导出使用上面为架构 4.3 列出的导出架构修订版,即修订版 4.3.1。
在导出 AUTOSAR 软件组件之前,检查选定的架构版本。如果您需要更改选定架构版本,请使用模型配置参数为架构版本生成 XML 文件。
注意
将顶层模型和引用模型的 AUTOSAR 模型配置参数设置为相同的值。此规范适用于为架构版本生成 XML 文件 (Embedded Coder)、短名称最大长度 (Embedded Coder)、使用 AUTOSAR 编译器抽象宏 (Embedded Coder)和使用一维数组支持根级矩阵 I/O (Embedded Coder)。
指定短名称最大长度
AUTOSAR 标准规定 SHORT-NAME XML 元素的最大长度为 128 个字符。
要为代码生成器导出的 SHORT-NAME 元素指定最大长度,请将模型配置参数短名称最大长度 (Embedded Coder)设置为 32 到 128 之间(含两者)的整数值。默认值为 128 个字符。
配置 AUTOSAR 编译器抽象宏
用于 16 位平台的编译器(例如,用于 S12X 的 Cosmic 和 Metrowerks 或用于 ST10 的 Tasking)使用特殊关键字来处理有限的 16 位寻址范围。数据和代码在 64k 边界之外的位置需要通过特殊关键字显式选择。然而,如果此类关键字直接在源代码中使用,则必须为每个微控制器系列单独移植软件。也就是说,软件不是平台无关的。
AUTOSAR 指定 C 宏以与平台无关方式抽象编译器指令(近/远内存调用)。这些编译器指令源于 16 位平台,无需为每个编译器单独移植源代码,即可为 16 位微控制器提供更好的代码效率。这种方法允许您的系统集成商(而不是您的软件组件实现者)为每个软件组件选择数据和代码的位置。
有关 AUTOSAR 编译器抽象的详细信息,请参阅 www.autosar.org。
要启用 AUTOSAR 编译器宏生成,请选择模型配置参数使用 AUTOSAR 编译器抽象宏 (Embedded Coder)。
当您编译模型时,软件将编译器抽象宏应用于生成代码中的全局数据和函数定义。
对于数据,宏采用以下形式:
CONST(consttype,memclass)varname;VAR(type,memclass)varname;
其中
consttype和type是数据类型memclass是宏字符串(SWC_VAR_INITSWC是软件组件标识符)varname是变量标识符
对于函数(模型和子系统),宏采用以下形式:
FUNC(type,memclass) funcname(void)
其中
type是返回参量的数据类型memclass是宏字符串。此字符串可以是用于可运行实体(外部函数)的,或用于内部函数的SWC_CODE(SWC_CODE_LOCAL是软件组件标识符)。SWC
如果您未选择使用 AUTOSAR 编译器抽象宏,代码生成器会生成以下代码:
/* Block signals (auto storage) */ BlockIO rtB; /* Block states (auto storage) */ D_Work rtDWork; /* Model step function */ void Runnable_Step(void)
但是,如果您选择使用 AUTOSAR 编译器抽象宏,则代码生成器会在代码中生成宏:
/* Block signals (auto storage) */ VAR(BlockIO, SWC1_VAR_INIT) rtB; /* Block states (auto storage) */ VAR(D_Work, SWC1_VAR_INIT) rtDWork; /* Model step function */ FUNC(void, SWC1_CODE) Runnable_Step(void)
根级矩阵 I/O
对于具有多维数组的 AUTOSAR 组件模型,如果您将模型配置参数数组布局 (Simulink Coder)设置为行优先,则可以在生成的 C 代码中保留多维数组的维度。在生成代码中保留数组维度可以增强代码的集成效果。
如果您的应用程序设计需要列优先数组布局,您可以配置 ARXML 导出以支持根级矩阵 I/O。软件可以导出将矩阵实现为一维数组的 ARXML 描述。
默认情况下,对于列优先数组布局,软件不允许根级矩阵 I/O。编译模型会生成错误。要启用根级矩阵 I/O,请选择模型配置参数使用一维数组支持根级矩阵 I/O (Embedded Coder)。
当数组布局设置为行优先时,使用一维数组支持根级矩阵 I/O 不起作用。
检查 AUTOSAR XML 选项
检查您使用 AUTOSAR 字典配置的 XML 选项。如果您尚未配置它们,请参阅Configure AUTOSAR XML Options。
生成 AUTOSAR C 和 XML 文件
在配置 AUTOSAR 代码生成和 XML 选项后,生成代码。要生成 C 代码并导出 XML 描述,请编译组件模型。
编译过程将符合 AUTOSAR 的 C 代码和 AUTOSAR XML 描述生成到模型编译文件夹中。导出的 XML 文件包括:
一个或多个
文件,取决于您是将导出的 XML 文件打包设置为单个文件还是模块化。modelname*.arxml如果您将 ARXML 文件导入到了 Simulink 中,则包括相同文件的更新版本。
下表列出了基于 AUTOSAR 字典中配置的导出的 XML 文件打包选项值生成的 文件。modelname*.arxml
| 导出的 XML 文件打包值 | 导出的文件名 | 默认包含... |
|---|---|---|
| 单个文件 | | 软件组件、数据类型、实现、接口和时序的 AUTOSAR 元素。 |
| 模块化 | | 软件组件,包括:
这是为 Simulink 模型导出的主 ARXML 文件。除了软件组件外,组件文件还包含导出器根据 AUTOSAR 元素类别不会移至数据类型、实现、接口或时序文件的可打包元素。 |
| 数据类型和相关元素,包括:
| |
| 软件组件实现,包括代码描述符。 | |
| 接口,包括 S-R、C-S、M-S、NV、参数和触发器接口。接口包括类型特定的元素,例如 S-R 数据元素、C-S 操作、基于端口的参数或触发器。 | |
| 时序模型,包括可运行实体执行顺序约束。 |
您可以将 AUTOSAR XML 组件描述合并回一个 AUTOSAR 编写工具中。AUTOSAR 组件信息分为若干单独的文件以便于合并。这种划分尝试尽量减少您必须执行的合并次数。您不需要将数据类型文件合并到编写工具中,因为数据类型通常在设计过程中的早期阶段定义。但是,您必须合并内部行为文件,因为此信息是模型实现的一部分。
为了帮助支持 AUTOSAR 元素在 AUTOSAR 编写工具 (AAT) 与 Simulink 基于模型的设计环境之间的双向流转,代码生成器在 ARXML 导入和导出过程中会保留 AUTOSAR 元素及其通用唯一标识符 (UUID)。有关详细信息,请参阅Round-Trip Preservation of AUTOSAR XML File Structure and Element Information。
有关如何从 Simulink 模型生成符合 AUTOSAR 的 C 代码并导出 AUTOSAR XML 组件描述的示例,请参阅生成 AUTOSAR C 代码和 XML 描述。
有关所有 XML 选项的信息,请参阅 AUTOSAR XML Options Settings
另请参阅
为架构版本生成 XML 文件 (Embedded Coder) | 短名称最大长度 (Embedded Coder) | 使用 AUTOSAR 编译器抽象宏 (Embedded Coder) | 使用一维数组支持根级矩阵 I/O (Embedded Coder)