
Autosar开发者的RTE和Configure配置协议栈生成指南
最近在搞AUTOSAR项目,发现生成RTE和配置协议栈这两个环节真能让人头秃。今天就带大家手搓点
实战经验,顺便聊聊那些藏在XML背后的骚操作。
先说说RTE生成这事儿。某次我试图让两个SWC(软件组件)通过SenderReceiver接口通信,结果生成
的RTE死活不认我的数据类型。后来发现是ARXML里埋了个坑:
```xml
<DATA-TYPE>
<SHORT-NAME>uint8</SHORT-NAME>
<SW-DATA-DEF-PROPS>
<SW-DATA-DEF-PROPS-VARIANTS>
<SW-DATA-DEF-PROPS-CONDITIONAL>
<BASE-TYPE-REF DEST="SW-BASE-TYPE">/AUTOSAR_Platform/BaseTypes/uint8</BASE-T
YPE-REF>
<!-- 这里少了个长度定义直接导致RTE生成失败 -->
<LENGTH>8</LENGTH>
</SW-DATA-DEF-PROPS-CONDITIONAL>
</SW-DATA-DEF-PROPS-VARIANTS>
</SW-DATA-DEF-PROPS>
</DATA-TYPE>
```
这个LENGTH标签要是漏了,RTE生成的代码里就会把uint8当成void*处理,直接原地爆炸。用ETAS配
置工具生成时记得勾选"Validate before generate",能帮你省下两小时查错时间。
说到协议栈配置,有个经典案例是CAN信号布局。那次在配置CANPDU时,发现实际总线的信号顺序和
代码里的结构体对不上。后来发现是BSW模块的配置里用了小端模式:
```c
/* 自动生成的PDU结构体 */
typedef struct {
uint16 engineSpeed : 16; // 位域定义
uint8 vehicleMode : 4;
uint8 reserved : 4; // 这个reserved占坑位顺序影响信号解析