文章目录
- 前言
- Com
- ComSignal
- ComIPdu
- CanNm
- Signal Mapping
- 总结
前言
之前配置的网络管理报文中的data都由ComM管理,后面客户新增了需求,最后两个byte需要发送Wakeup Reason,本文记录一下相关配置的修改
Com
ComSignal
之前配置的PN_TX,长度为6,也就是后面6个byte都是由ComM写(全部用作PN位)
长度需要修改为4byte,也就是32bit
RX的也要改下,如下图所示
需要新增一个user data的Signal发送,长度为2个字节,此处BitPosition为55,是Motorloa Msb表示方式,对应BIG_ENDIAN
本文的Signal已经配置好了,后面有空会单独出一篇新增Signal的文章
ComIPdu
将刚刚那个user data的signal关联到其对应的Pdu上,如下图所示
此处关联了两个ComIPduSignal
CanNm
CanNm需要将之前的mask删掉2个byte
PnInfoLength改为4,因为后面2个byte是user data,后面通过应用层发送所需的信号
至此,BSW的配置就完成了,可以生成BSW代码了。
Signal Mapping
在对应的SWC中新建一个P Port,数据类型和之前的User data一样
在system中将该Interface和ComSignal中的对应信号进行mapping
对ECU进行提取
提取完后生成RTE,会生成对应的RTE接口
#define Rte_Write_NmWakeUpSrc_uint16( data ) (Rte_Write_CD005A_PwrSplyDrvCtrl_NmWakeUpSrc_uint16(data))
...
FUNC(Std_ReturnType, RTE_CODE)
Rte_Write_XXX_NmWakeUpSrc_uint16(VAR(UInt16, AUTOMATIC) data) /* 2 */
{
VAR(Std_ReturnType, AUTOMATIC) rtn = RTE_E_OK;
/* The signal is isWakeUpReasonsfor */
if ( ((VAR(StatusType, AUTOMATIC))E_OK) != Com_SendSignal(((VAR(Com_SignalIdType, AUTOMATIC))22), &data) )
{
rtn = ((VAR(Std_ReturnType, AUTOMATIC))RTE_E_COM_STOPPED);
}
/* Send complete */
return rtn;
}
调用该接口发送需要的数据即可
总结
能配置生成的,尽量不手码,毕竟手写一堆bug~