我正在探索如何在AUTOSAR中创建复杂的数据类型。一直在寻找以下问题,但我还没有找到一个可以清楚地向我说明问题的方法。
我想以这种形式创建一个IRV:
union {
uint8 u8Value;
struct {
uint8 bit0 : 1;
uint8 bit1 : 1;
...
}stMyBits;
}unMyUnion;
基于我自己的调查,我在SW Data Prop Ref中找到了所谓的SwBitsRepresentation,从中可以指定起始位置和位数。但是,它不起作用,因为RTE生成的代码如下所示:
union {
uint8 u8Value;
struct {
uint8 bit0;
uint8 bit1;
...
}stMyBits;
}unMyUnion;
编译此命令绝对不会应用所需的位域。
答案 0 :(得分:0)
C位字段。如果要实现位域语义,则需要定义一个ImplementationDataType
,该{聚集的SwDataDefProps
聚合了一个指向CompuMethod
类的BITFIELD_TEXTTABLE
。
在CompuMethod
的定义中,您可以指定位域及其语义。
RTE生成器将通过生成访问宏来遵循此配置,访问宏为访问主机变量中的位提供了或多或少的便捷方式。
您可以在AUTOSAR文档“ TPS软件组件模板”中找到有关类别CompuMethod
的{{1}}的定义的更多信息。