根据我的理解,ApplicationDataType被引入AUTOSAR第4版以设计独立于底层平台的软件组件,因此可在不同的项目和应用程序中重复使用。 但是这样的SW-C背后的实现如何才能与平台无关?
用例示例:您希望设计和实现一个用作FiFo的SW-C。您有一个输入数据端口,一个内部缓冲区和一个输出数据端口。您可以通过使用“抽象”ApplicationDataType在不知道数据的数据类型的情况下实现此目的。 通过将一个变量的ApplicationDataType作为PortInterface的一部分,迟早必须将此ApplicationDataType映射到RTE-Generator的ImplementationDataType。
最后,RTE-Generator创建的代码仅使用ImplementationDataType。 在生成的代码中找不到ApplicationDataType。
这是预期的行为还是RTE-Generator的错误? (或者我可能错过了什么?)
答案 0 :(得分:1)
ApplicationDataTypes不会直接出现在代码中,它们由ImplementationDataType对应项表示。
在AUTOSAR规范中解释了在不同抽象层次上定义数据类型的动机,即TPS软件组件模板。
答案 1 :(得分:1)
您永远不会在C代码中找到ApplicationDataType,因为它是在物理层面上使用物理单元定义的,并且可能在C中的实现级别上具有(完全)不同的表示。
想象一下测量电压的电池控制传感器。该值可以在0.0V和14.0V的范围内,小数点后一位数(物理)。您可以将它映射到C中的浮点数,但浮点运算很昂贵。相反,您使用固定点算术,其中您将物理值0.0映射到0,0.1到1,2.2到2,依此类推。这种映射由所谓的compuMethod描述。
软件组件将始终使用内部表示。那么,为什么需要ApplicationDataType呢?使用它们的原因有很多,其中一些是:
答案 2 :(得分:0)
来自AUTOSAR_TPS_SoftwareComponentTemplate.pdf
ApplicationDataType从应用程序的角度定义数据类型 视图。特别是在“物理”状态出现时应使用它 股份。
ApplicationDataType代表一组值,如 应用程序模型,例如度量单位。它不考虑 实施细节,例如位大小,字节序等。
应该可以对VFB的应用程序级别进行建模 仅通过使用ApplicationDataTypes进行系统。