主要内容

配置 AUTOSAR 代码生成

要从针对 AUTOSAR Classic 平台配置的模型生成符合 AUTOSAR 的 C 代码和 ARXML 组件描述,请执行以下操作:

  1. 在“配置参数”对话框中,在代码生成 > AUTOSAR 代码生成选项窗格上,配置 AUTOSAR 代码生成参数。

  2. 使用 AUTOSAR 字典或 AUTOSAR 属性函数配置 AUTOSAR XML 导出选项。

  3. 编译模型。

选择 AUTOSAR Classic 架构

对于导入和导出 ARXML 文件以及生成符合 AUTOSAR 的 C 代码,软件支持以下 AUTOSAR Classic 平台架构版本。

架构版本值支持导入的架构修订版导出架构修订版
R23-11(默认值)R23-11R23-11
R22-11R22-11R22-11
R21-11R21-11R21-11
R20-11R20-11R20-11
R19-11R19-11R19-11
4.44.4.04.4.0
4.34.3.0、4.3.14.3.1
4.24.2.1、4.2.24.2.2
4.14.1.1、4.1.2、4.1.34.1.3
4.04.0.1、4.0.2、4.0.34.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;

其中

  • consttypetype 是数据类型

  • memclass 是宏字符串 SWC_VAR_INITSWC 是软件组件标识符)

  • varname 是变量标识符

对于函数(模型和子系统),宏采用以下形式:

  • FUNC(type, memclass) funcname(void)

其中

  • type 是返回参量的数据类型

  • memclass 是宏字符串。此字符串可以是用于可运行实体(外部函数)的 SWC_CODE,或用于内部函数的 SWC_CODE_LOCALSWC 是软件组件标识符)。

如果您选择使用 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 文件包括:

  • 一个或多个 modelname*.arxml 文件,取决于您是将导出的 XML 文件打包设置为单个文件还是模块化

  • 如果您将 ARXML 文件导入到了 Simulink 中,则包括相同文件的更新版本。

下表列出了基于 AUTOSAR 字典中配置的导出的 XML 文件打包选项值生成的 modelname*.arxml 文件。

导出的 XML 文件打包值导出的文件名默认包含...
单个文件modelname.arxml软件组件、数据类型、实现、接口和时序的 AUTOSAR 元素。
模块化modelname_component.arxml

软件组件,包括:

  • 端口

  • 事件

  • Runnables

  • 可运行实体间变量 (IRV)

  • 包含的数据类型集

  • 组件作用域的参数和变量

这是为 Simulink 模型导出的主 ARXML 文件。除了软件组件外,组件文件还包含导出器根据 AUTOSAR 元素类别不会移至数据类型、实现、接口或时序文件的可打包元素。

modelname_datatype.arxml

数据类型和相关元素,包括:

  • 应用程序数据类型

  • 软件基类型

  • 数据类型映射集

  • 常量设定

  • 物理数据约束

  • 系统常量

  • 软件寻址方法

  • 模式声明组

  • 计算方法

  • 单位和单位组

  • 软件记录布局

  • 内部数据约束

modelname_implementation.arxml软件组件实现,包括代码描述符。
modelname_interface.arxml接口,包括 S-R、C-S、M-S、NV、参数和触发器接口。接口包括类型特定的元素,例如 S-R 数据元素、C-S 操作、基于端口的参数或触发器。
modelname_timing.arxml时序模型,包括可运行实体执行顺序约束。

您可以将 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

另请参阅

(Embedded Coder) | (Embedded Coder) | (Embedded Coder) | (Embedded Coder)

主题