写在前面:
入行一段时间了,基于个人理解整理一些东西,如有错误,欢迎各位大佬评论区指正!!!
目录
1.Autosar ETH通讯软件架构
2.Ethernet MCAL配置
2.1配置对应Pin属性
2.2配置TXD引脚
2.3配置RXD引脚
3.Eth/Eth Trcv配置
3.1驱动包添加
3.2Eth/EthTrcv模块配置
4.RTE/EcuM/BSWM配置
4.1RTE配置Task
4.2EcuM模块配置
4.3BswM模块配置
5.EttIf模块配置
5.1EthIf General
5.2EthIfController配置
5.3关联上层协议ARP/IPV4/IPV6
5.4Rx报文回调
5.5配置下层状态切换以及发送确认回调函数
6.EthSM配置
7.TCP/IP配置
7.1TcpIp General
7.2TcpIpCtrl关联EthIf
7.3TcpIpCtrl关联ARP
7.4单播地址配置
7.5多播地址配置
7.6广播地址配置
7.7ARP配置
7.8关联上层SoAd模块
7.9TcpIpConfig配置
7.10UDP相关配置
8.SoAd模块配置
8.1SoAd General配置
8.2SoAdBswModules配置
8.3套接字绑定元素
8.4TCP配置
8.5UDP配置
8.6创建SoAd路由的Group
8.7关联Socket与接受PDUs
9.LdCom配置
9.1Method相关信号接收配置
9.2Method相关信号发送配置
9.3Event发送信号配置
10.PduR配置
10.1Method接收
10.2Method发送
10.3Event发送
1.Autosar ETH通讯软件架构
软件分层:
1.Ethernet Driver
2.Ethernet Interface(EthIf)
3.TCP/IP协议栈
4.Socket Adaptor(SOAD)
5.PDU Router(PDUR)
6.应⽤层。
2.Ethernet MCAL配置
以PHY芯⽚为RTL9000为例,控制器⽀持单个PHY与MAC通讯,以太⽹通讯参数为100Mbps,RMII 接⼝。RTL9000⽀持硬件配置,包括Master/Slave Mode配置,MII Mode配置,PHY Address配置, Operating Mode配置,详细的配置⽅法请参考RTL9000 DS⼿册。
以太⽹模块各信号对应硬件原理图的Pin脚:
2.1配置对应Pin属性
配置输出引脚属性,需要确认输出复选功能,输出初始电平,输出强度,⼀般由Thosslist提供。 例如MDC引脚,在DS⽂档中查找P12.0对应的输出属性为O6.
EB中MDC引脚的配置如下:
主要设置上图框出来的⼏个配置,PortPinDirection->Port⽅向,PortPinInitalMode->初始状态下的 模式,PortPinLevelValue->端⼝的初始电平和 PortPinOutpytPadDriverStrength,PortPinOutputPinDriverMode端⼝的驱动能⼒和驱动模式。
2.2配置TXD引脚
对于TXEN/TXD0/TXD1引脚,除了配置上图标记的部分,还需要是能PortPinControllerSelect功 能,还不使能则以太⽹发送功能⽆法正常⼯作。
2.3配置RXD引脚
配置输⼊引脚属性,需要确认输⼊引脚的PullResistor属性,PadLevel属性,⼀般由Thosslist提 供。MDIO引脚虽然是⽅向可变的,但在EB中按照输⼊引脚配置即可。
3.Eth/Eth Trcv配置
DaVinci配置开发包含两部分:驱动包添加相关模块配置。SIP包不包含RTL9010驱动包,所以在 进⾏DaVinci配置之前,需要将驱动包加⼊项⽬SIP中。
3.1驱动包添加
本地SIP包路径下添加RTL9010驱动包
3.2Eth/EthTrcv模块配置
- PHY Management Interface:配置为ETH_RMII_MODE;
- Physical Address:MAC地址按照项⽬要求配置,配置为源MAC地址
- Port Speed Selection:配置为PS_100_MBITES
- CSR Clock Range:根据RMII时钟选择CLK_35_60_MHZ,由于MCU MII通讯为PHY提供的时钟,所以这 ⾥的配置并⾮必选CLK_35_60_MHZ,若是MAC输出的时钟,则需要与其频率保持⼀致。
- EthCtrlPinRouting配置与Eth MII的输⼊引脚选择有关,在EB配置中,仅配置了MII输⼊引脚的 PullResistor和PadLevel属性,并未关联Eth Drive功能,这⾥根据GPCTL寄存器功能进⾏配置
- GPCTL ALT配置参数可选择ETH_ALT_0/ETH_ALT_1/ETH_ALT_2/ETH_ALT_3,根据MII信号对应的PIN 脚,在DS⼿册中找到对应功能描述,例如MDIO引脚对应的P12.1功能如下图,其对应GETH_MDIOC, 则在Davinci配置中GCPTL ATL0处应选ETH_ALT_2。
配置Tx/Rx Buffer
配置Rx和Tx中断
Eth General配置
Eth Trcv模块配置
添加头文件
EthTrcvConfig配置
EthTrcvMgmtInterface配置选择新增EthTrcvMiiInterface,需要配置如下
- Mii Selection:若不是RGMII,选择ETHTRCV_STRAPPING_CONFIG_ONLY,若为RGMII,选择 ETHTRCV_RGMII_MODE,并配置RGMII对应的Delay Time参数,MCU选择RMII模式,配置为 ETHTRCV_STRAPPING_CONFIG_ONLY即可。
- Transceiver MII Index:根据HardwareConfiguration配置
4.RTE/EcuM/BSWM配置
4.1RTE配置Task
4.2EcuM模块配置
4.3BswM模块配置
5.EttIf模块配置
5.1EthIf General
主要使能接收和发送中断,MainFunction的task周期,超时时间参数的配置
5.2EthIfController配置
会关联EthCtrl和EthTrcv,设置MTU以及VlanId,如果SOMEIP通讯的IP地址和普通以太⽹通讯IP地址不⼀ 样或者VlanId需求不⼀样,则需要为SOMEIP通道新建EthIfController
5.3关联上层协议ARP/IPV4/IPV6
5.4Rx报文回调
5.5配置下层状态切换以及发送确认回调函数
6.EthSM配置
EthSM General配置主要配置Mainfunction的周期
EthSMNetwork关联ComM和EthIf,设置协议栈类型
7.TCP/IP配置
TCP/IP主要配置传输层以及网络层相关参数
7.1TcpIp General
- Buffer Memory为TCP/IP缓冲区保留的内存⼤⼩,以字节为单位。 •
- Lower Layer Name为TCP/IP协议栈下层的模块 •
- MainFunction Spilting Enabled:该参数指定TcpIp_MainFunction是否被分割成三个功能,这样可 以为特定的使⽤情况优化上层数据的接收和传输路径。
TcpIp_MainFunctionRx 处理数据的接收并转发到上层
TcpIp_MainFunctionState 处理数据的状态变化和传输内部协议的数据
TcpIp_MainFunctionTx 处理上层的传输请求并传输数据 • - Random Function Include file和Random Number Function两个参数是指定⽣成随机数⽤到的函 数和包含的头⽂件。
- Scalability Class 为了根据⽤⼾的具体需要定制TcpIp堆栈,它可以根据可扩展性等级进⾏扩展。
- TCP/UDP Enabled使能TCP和UDP的使能位。
- TCP/UDP Socket Max指定TCP/UDP最⼤套接字数量,需要注意的是每当增加通道或者报文时,需要对应增大该数值,在工具中不会报错,只会报警告。
Bool Data In Array of Struct Strategy:该参数⽤于调整所有CONFIG-CLASSES ROM数据结构中布尔数 据的使⽤,BITFIELD和BITMASKING之间的区别取决于本地编译器选项和内存映射。
- BOOLEAN:布尔类型的数据类型本地是布尔值。
- BITFIELD:使⽤位域类型,编译器从结构中提取布尔数据。
- BITMASKING:使⽤⽣成的掩码来从结构中提取布尔类型。
Data Dedupliation Strategy:⽤来确认重复数据的使⽤策略。
- NONE:⽣成的数据不被重复使⽤ •
- deduplicate_const_data_without_cast:数据被重复利⽤⽽不使⽤cast
- deduplicate_const_data_with_cast:该数据使⽤CAST进⾏重复数据删除。
Deduplicate Indirected Data:重复数据利⽤⽅式,勾选的话间接使⽤重复数据,⽽且不增加运⾏时间。
Out Of Bounds Write Protection Strategy:该参数据起我界保护策略
- NONE:在数据访问中不产⽣保护策略。
- INDEX_SATURATION:其优点是数据访问速度快,但同⼀变量的其他索引上的⾃有数据元素可以被覆盖。
- INDEX_CHECKING:数据访问索引通过运⾏时检查进⾏验证。其优点是数值不会被写⼊不正确的数据访问索引中。
TcpIpV4 General配置
- ARPEnable:是否使能地址解析协议。
- ICMP Enable:是否使能ICMP协议。
- IPv4Enable:是否使能IPV4协议。
- IPv4 Ethlf Update Phys Addr Filter Api Enable:这个参数定义了IPv4是是否会调⽤ Ethlf_SetPhysAddrFilter(),以配置以太⽹组地址Rx过滤器。如果控制器处于混杂模式或被静态配置为 接受所有必要的约且播,这个参数可以被禁⽤,以避免对EthlfAPI的多余调⽤。
- Local Addr IPv4 Entries Max:IPv4的LocalAddr表项的最⼤数量。
TcpIpV6 General配置
7.2TcpIpCtrl关联EthIf
- Ethlf Ctrl Ref:进⾏Ethlf Controller关联,便于分配IP地址。
- IPFrame Prio Default:指定所使⽤的帧优先级的默认值。
注意:这个值可以通过Tcplp_ChangeParameter()服务为每个套接字单独改变。如果这个可选参数不可 ⽤,则使⽤0作为默认优先级。
7.3TcpIpCtrl关联ARP
- ARP Config Ref:关联Arp,注意:多个IPv4实例可以使⽤相同的配置容器,但会独⽴运⾏。
- Default Time To Live:⽤于指定该IP控制器上发出去的数据包中IPV4头的"⽣存时间"字段的默认值。
- IPTypeOf Service Default:⽤于指定该IP控制器上出站数据包中IP14头的"服务类型"字段的默认值。
- Static ARP Table Ref:⽤于关联控制器使⽤的静态ARP表。
7.4单播地址配置
Address Type:地址类型,有以下三种类型。
TCPIP_UNICAST:单播地址
TCPIP_MULTICAST:多播地址
TCPIP_IPV4_BROADCAST:⼴播地址
Ctrl Ref:关联对应的分配IP地址的Ethlf控制器
Domain Type:选择IP地址簇,这⾥选IPV4;TCPIP_AF_NET是IPV4地:址簇,TCPIP_AF_NET6是IPV6地址簇
- Assignment Method:选择地址分配⽅式,TCPIP_STATIC静态分配,TCPIP_DHCP动态获 取,TCPIP_IPV6_ROUTER以IPV76的⽅式路由
- Assignment Priority:分配的优先级(1为最⾼)。如果⼀个具有更⾼优先级的分配⽅法的新地址可⽤,它 将覆盖先前由具有较低优先级的分配⽅法分配的IP地址。
- Assignment Trigger:地址分配的触发⽅式。
- AUTOMATIC:地址分配⽅法是在建⽴物理连接后⾃动触发 的。⼀个静态配置的IP地址(⻅TcplpStaticlpAddressConfig)将被⽴即分配,但在运⾏时可以通过调⽤ Tcplp_RequestlpAddrAssignment()来改变。
- MANUAL:地址分配⽅法是由⽤⼾通过调⽤Tcplp RequestlpAddrAssignment()⼿动触发的。
- Netmask:IPv4地址的⽹络掩码或CIDR符号中|Pv6地址的地址前缀,即0⾄32(IPv4)或0⾄128(IPv6)之间 的⼗进制值,描述了定义⽹络号码或IP地址前缀的有效位数量。
- Static Ip Address:设置单播的IP地址为172.16.2.63,这个需要根据需求来配置。这个是目标IP地址
7.5多播地址配置
7.6广播地址配置
7.7ARP配置
- Arp Request Timeout:ARP请求有效性的超时,单位为秒。在传输ARP请求后,Tcplp应在 TcplpArpRequestTimeout秒的时间内跳过对同⼀⽬的地的任何进⼀步ARP请求的传输。(IETFRFC 1122,section22.3.2.1)这个参数的值应该是TcplpMainFunctionPeriod的整数倍或0。如果这个参数设 置为0,这个功能就被禁⽤,ARP请求之间没有延迟。ARP请求的超时,由上层触发。在 ArpRequestTimeout期间,Tcplp将只发送⼀个ARP请求,即使上层触发了多个ARP请求的Tx。 ⽐如,在⼀个ArpRequestTimeout期间,只有⼀个ARP请求传输(⽩上层触发)。
- Num Gratuitous ARP On Startup:配置分配⼀个新的IP地址时应发送的⽆偿ARP回复的数量。
- Packet Queue Enable:是否启⽤数据包队列。
- Retry Interval:重试的时间间隔。
- Retry Timout:重试的超时时间设置。
- Table Entry Timeout:设置超时,超时后未使⽤的ARP条⽬将被删除。值为0意味着ARP条⽬将永远不会 因为超时⽽从ARP表中删除。如果ARP缓存中的条⽬被使⽤并且在指定的时间内没有被更新,ARP将通 过为相应的IP地址发送⼀个或多个ARP请求来重新验证该ARP条⽬。如果远程主机在 TcplpArpRetryTime指定的时间内没有发送ARP回复,该条⽬将被从ARP表中删除。如果ARP缓存已满, 并且TcplpArpDiscardedEntryHandling被设置为FALSE,那么在超时之前,⼀个条⽬可能被基于最近使 ⽤的ARP条⽬取代。
- Table Size Max:ARP表中的最⼤条⽬数。
- Echo Reply Max Buffer Len:这个值规定了Echo Reply的最⼤有效载荷⻓度。如果⼀个Echo请求包含 更多的数据,响应的有效载荷将被截断。
- Icmp Destination Unreachable Enable:此参数定义了ICMPV4是否应根据IETFRFC792发送ICMP目标不可达消息。
如果启⽤,如果收到具有下列属性之⼀的单播数据包,ICMPV4会⽤⽬的地不可达消息进行响应。
-上层协议是未知的。
-UDP⽬的端⼝没有打开。 - Time-To-Live(TTL):发出ICMP数据包的默认⽣存时间值。
7.8关联上层SoAd模块
7.9TcpIpConfig配置
- Average Tx Retry Queue Size:该值规定了分配给⼀个TCP套接字的Tx RetryQueue的平均条⽬量。注 意。重试队列被分组在所有TCP套接字共享的池中。因此,⼀个套接字的可⽤条⽬可能⽐指定的少。
- Avg Num Out Of Order Segments per Socket:这个值指定了每个TCP套接字的失序控制元素的数量。 这些元素被分组到⼀个由所有TCP套接字共享的池中。⼀个TCP套接字允许分配的元素数 与'TcplpTcpMaxNumOooSegsPerSocket指定的⼀样多。注意:'TcpAvgNumOooSegsPerSocket'只有 在'TcpOutOfOrderRxxSupport'被设置为'true'时才可⽤。
- Congestion Avoidance Enabled:是否启动TCP堵塞算法。
- Enable Diag Read Ack Seq Num:启⽤对指定套接字的当前TCP序列号号和确认号的读取
- FIN Wait2Timeout:从远程节点接收FIN的超时(在该节点启动连接终⽌后),即在FINWAIT-2中等待远程 TCP的连接终⽌请求的最⻓时间。Timeout的值必须⾄少是1MSL。默认值为120。
- Fast Recovery Enable:配置是否启⽤TCP快速恢复。
- Fast Retransimit Enable:配置是否启⽤TCP快速重传。
- Keep Alive Enable:是否启⽤TCP保持Alive。注意:该参数仅启⽤对KKeepAlive机制的⼀般⽀持。必须 在运⾏时为每个套接字明确启⽤KeepAlive。(⻅SOAdSocketTcpKeepAlive*参数)
- Keep Alive Interval:指定后续Keep Alive Probes之间的默认间隔。如果 TcplpTcpKeepAliveProbesMax被设置为0,这个参数默认没有影响,但是如果在运⾏期间改变KeepAlive Probes的数量,可能会有影响。
- Keep Alive Probes Max:在连接关闭之前,TCP Keep Alive Probes被重传的默认次数
- KeepAlive Time:指定发送最后⼀个数据包(简单的ACK不被视为数据)和第⼀个KeepAlive Probe之间的 时间。注意:将此配置参数设置为⼩于或等于TcplpMainFunctionPeriod的值,会导致在每个 MainFFunction周期内传输Keep Alive Probe。
- Max Num Out Of Order Segments per Socket:这个值指定了在运⾏期明间可以为⼀个TCP套接字分配 的最⼤失序控制元素的数量。注意:"TcpAvgNumOooSegsPerSocket"只有 在"TcpOutOfOrderRxSupport"被设置为"true"时才可⽤。
- Maximum Segment Lifetime:最⼤的分段寿命。(注:TIME-WAIT=2xTcplpTcpMsl-确保远程节点收到其 连接终⽌请求的确认。)
- Nagle Enabled:是否启⽤Nagle算法。如果启⽤,所有TCP套接字的Nlagle算法默认被激活,但可以通过 Tcplp_ChangeParameter()API停⽤
- Nagle Timeout:该值指定了Nagle算法的超时,超时定义了即使前⼀个⽹段还没有被acked,也要发送⼀ ⼀个⼩的TCP⽹段的时间。将超时值设置为"0"可以关闭超时功能,如果先前发送的数据仍未被对等体选 中,TCP将永远等待发送⼀个⼩段。如果对⽅使⽤"延迟确认",这种设置可能会导致巨⼤的延迟。注意,值 必须是主功能周期的倍数。
- OutofOrderRxSupport:是否⽀持接收失序的TCP段。
- Receive Window Max:最⼤接收窗⼝的值。
- Retransmission Timeout:在重传未被认可的TCP段之前的超时时间。
- Retransimission Timeout Max:在重传未确认的TCP段之前的最⼤超时时间。
- SYN Max Rtx:TCPSYN被重传的最⼤次数。注意:在TcplpTcpRetransmissionTimeout之后,SYN将被重 试。如果在最后⼀次发送TCPSYN后没有收到匹配的连接请求,并且TcplpTcpRetransmissionTimedut 已经过期,连接将被放弃。
- SYN Received Timeout完成远程发起的TCP连接建⽴的超时,即在收到和发出连接请求后,在SYNRECEIVED中等待确认连接请求确认的最⻓时间。
- Slow StartEnabled:是否启⽤慢启动算法的⽀持。
- Time Stamp Option:是否后⽤TCP时间戳选项。
- Time-To-Live(TTL):发送阶段TCP数据包的默认时间-⽣存值。
- Tx Reset Queue Size:该值指定了为Tx复位队列保留的条⽬数量。注意意:重置队列是由所有TCP套接字 共享的。
- UserTimeout Def:该值指定了⽤⼾超时的默认值。默认值:20s。注意意:'TcpUserTimeoutDef的值必须 在'TcpUserTimeoutMin'和'TcpUserTimeoutMax'定义的范围内。
7.10UDP相关配置
- TTL:设置UDP发出报⽂的⽣存时间
- Tx Retry Queue Size:UDP Tx Retry Queue元素的总数,这个数字必须⼩于或等于EthTxBufTotal的数 量。这个值指定了在没有有效解决远程物理地址的情况下可以存储的UDP传输信息的数量。配置的值 要⼀个启⽤的ARP/NDP包队。
8.SoAd模块配置
SoAd层⽀持通过TCP/IP⽹络进⾏基于PDU的通信。AutoSar I-PDU映射到由SoAd配置和维护的套接字 连接。要为多个I-PDU使⽤套接字连接,可以在每个I-PDU前⾯添加SoAd PDU标头。
- SOAD层通过TCP/IP⽹络实现基于PDU的通信
- AUTOSAR I-PDU映射到SoAD配置和维护的Socket连接。
- 要对多个I-PDU使⽤Socket连接,可在每个I-PDU前⾯添加⼀个SOAD PDU头
- PDU路由组管理-启⽤/禁⽤从/到Socket的PDU路由
8.1SoAd General配置
- Main Function Spilt Enabled:这个参数指定SoAd是否应将弃SoAd_MainFunction拆分成三个函数。
SoAd_MainFunctionRx
SoAd_MainFunction State
SoAd_MainFunction Tx
这样可以优化特定⽤例的数据接收和数据传输路径。
注意:所有三个主函数必须从同⼀个任务中调⽤,或者⾄少从不互相⼲扰的任务中调⽤。 - RoutingGroup Count:指定SoAd路由组的最⼤数量。此外,它定义了⽤于RoutingGroupldType的平台 类型。如果 SoAdRoutingGroupMax不⼤于256,则使⽤⼀个uint8,否则就使⽤uint16
- Shutdown Finished Wait Time:这个参数定义了关机机制的超时⽇时间,它是由调⽤SoAd Shutdown() 启动的。如果这个超时,SoAd将切换到关闭状态,即使套接字还没有完全关闭。
- Socket Connection Count:配置的SoAd套接字连接数。此外,它定义了⽤于SOAd_SoConldType的平 台类型。如果SoAdSoConMax不⼤于256,则使⽤uint8,否则为uint16。
8.2SoAdBswModules配置
DoIp
- Bsw Module Ref:关联的上层的BSW模块
- lf:指定BSW模块是否⽀持通信接⼝的API。值为true意味着⽀持这些API。⼀个模块可以同时拥有通信接⼝API和传输协议API(例如PduR模块)。
- If Trigger Transmit:指定BSW模块是否⽀持TriggerTransmit API。值为true表⽰⽀持该API。
- IfTxComfirmation:指定BSW模块是否⽀持TxConfirmationAPI。值为true表⽰⽀持该API。
- Local Ip addr Assignment Chg:指定BSW模块是否⽀持LocallpAddrAssigmentChgAPI。值为true表 ⽰⽀持该API。
- Shutdown Finished Cbk:这个参数启⽤⼀个回调,如果SoAd在成功调⽤SoAd_Shutdown()后处于关闭 状态,这个回调将被调⽤。
- So Con Mode Chg:每个容器都描述了⼀个特定的BSW模块。
- Tp:指定BSW模块是否⽀持TransportProtocol APIs。值为true意味着⾔⽀持这些API。⼀个模块可以同 时拥有通信接⼝API和传输协议API(例如,PduR模块)。
- Tp Copy Rx Data With Const Pointer:这个参数指定上层UI_[SoAd][[Tp]CopyRxData()函数是否⽤常 数指针来实现参数"info"。
- Tp Copy Tx Data With Const Pointer:这个参数指定上层UI_[SoAd][Tp]CopyTxData()函数是否⽤常数 指针来实现参数"info"。
- Tp Start Of Reception Witn Const Pointer:这个参数指定上层UI [ScoAd][Tp]StartOfReception()函数 是否⽤常数"info"。
- Use Caller Infix:指定SoAd在调⽤上层模块函数时是否使⽤(TRUE) infix "SoAd"(FALSE)。例如:如果 SoAdUseCallerlnfix对上层"ABC"是TRUE,那么SoAd将调⽤ABC_SoAdlfRxIndication(),否则SSoAd将 调⽤ABC_lfRxIndication() Use Tupe Infix:指定SoAd在调⽤上层模块函数时是否应使⽤(TRUE)API类型的infix"Tp"或"If" (FALSE)。例如:如果
- SoAdUseTypelnfix对上层"ABC"是TRUE,那么SoAd将调⽤ABClfRxIndication(),否则SoAd将调⽤ ABC_RxIndication()。
PDUR配置
SD配置
8.3套接字绑定元素
SD单播绑定IP地址和端⼝
- Enable IP Address Assignment Change Notification:如果此套接字连接使⽤的本地IP地址分配发⽣变 化,是否应调⽤上层的本地IP地址分 配变化通知回调函数。
- Enable PDUHeader:启⽤此套接上的PDU头(ID,⻓度)的传输。
TRUE:在PDU数据之前添加SoAd PDU头
FALSE:不使⽤SoAd PDU头 Local Address
Reference:关联引⽤该连接的本地IP地址和接⼝。 - Local Port:⽤于此连接的本地UDP或TCP端⼝。如果此参数设置为0,SoAd请求Tcplp选择⼀个短暂的端⼝。
SD多播绑定IP地址和端口
配置IP地址路由
- Remote IP Address:这个参数定义了远程节点的IP地址。要接受任何远程IP地址,请将此参数留空。 如果该参数为空(通配符),则⽆法打开套接字连接 (设置为在线)。远程地址必须在运⾏时通过API调⽤、 UDP帧接收或TCP连接建⽴时被覆盖。
- Remote IP Address not set:该参数定义了远程IP地址是否被设置(有效或通配符)或未设置。True:未设置IP地址。False:IP地址已设置(有效/通配符)。
- Remote Port:这个参数定义了远程节点的UDP或TCP端⼝。要接受任何远程端⼝,请将 SoAdSocketRemotePort设置为0。 如果这个参数被设置为0,套接字连接就不能被打开(设置为在线)。远程地址必须在运⾏时通过API调⽤, 在UDP帧接收或通过TCP连接建⽴时被覆盖。
- Remote Port not set:该参数定义了远程端⼝是否被设置(有效或⼽通配符)或未设置。True:未设置端 ⼝。False:端⼝已设置(有效/通配符)。
选择传输层协议
传输层协议UDP
- Enable Address Resolution Retry:指定是否应在Tcplp模块中存储传输请求,以便在地址解析丢失时重 试传输(ARP/NDP)。True:启⽤重试;False:禁⽤重试。
- Socket Udp Address Resolution Retry Queue Limit:该参数为该套接字设置最⼤使⽤UDP传输重试队 列元素的限制。该值在套接字创建时被转发给Tcplp模块。
⽐如,由于地址解析(ARP)尚未完成,通过UDP套接字的传输在Tcplp模块中失败。这个传输被保存在重试 队列中,传输请求被认为是成功的。如果限制被设置为1,Tcplp将拒绝进⼀步的传输请求,直到重重试队列 元素被释放。
8.4TCP配置
- DisableTCP Congestion Control:指定不对该连接使使⽤拥堵控制机制。对于UDP套接字,它将不被定 义。TRUE:该TCP连接将不使⽤拥塞控制。FALSE:此TCP连接将使⽤拥塞控制。如果没有启⽤这个可选 参数,将应⽤通过参数TcplpTcpNagleEnaabled为Tcplp配置的默认⾏为。
注意:如果TcplpTcpNagleEnabled被设置为FALSE,则该参数不能被设置为FALSE。 - Enable ImmediateTxConfirmation:如果设置为FALSE,SoAd在收到TcpAck后通过发送确认通知TP上 层。如果设置为"true",SoAd会在Tcplp接受传输后⽴即通过传输确认来通知TP上层。
- Enable Keep Alive:指定对该连接使⽤保持⽣存的机制。它将不会被UDP套接字的定义。
TRUE:这个TCP连接将使⽤保持通话机制。
FALSE:这个TCP连接将不使⽤保持通话机制。
注意:如果TcplpTcpKeepAliveEnabled被设置为FALSE,则此参数不能被设置为TRUE。 - Minimum TxBuffer:该参数定义了Tcplp必须能够在该组的每个套接字连接上提供的最⼩传输缓冲区⼤ ⼩。这个值会在运⾏时创建套接字时转发给Tcplp。如果没有配置这个可选参数,Tcplp将使⽤⼀个默认值。
8.5UDP配置
8.6创建SoAd路由的Group
8.7关联Socket与接受PDUs
(1)确定PDU Header ID
SD服务发现的Service ID是FFFF,Method/Event ID是8100,所以SD Header ID是0xFFFF8100
(2)关联PDU并绑定Group,同⼀个Server提供的Method需要绑定到同⼀个Routing Group
SD服务发现多播
SD服务发现单播
- Upper Layer Type:IF层,TP层根据报⽂类型进⾏选择,⼀般只有DoIp选择TP层
DoIp
Eth Udp网络管理报文
应用报文
9.LdCom配置
LdCom和Com本质是⼀样的,区别在于如果涉及到⼤数据的传输会⽤到LdCom模块。⽤LdCom替换 COM,删除⽣成的COM模块相关配置
9.1Method相关信号接收配置
- ApiType:表⽰l-PDU所需的API类型。
LDCOM_IF:表⽰l-PDU是通过通信接⼝API发送/接收的。
LDCOM_TP:表⽰l-PDU是通过传输协议API发送/接收的。 - Handle Id:⽤作该l-PDU的数值。这个ID被Rte⽤来调⽤LdCom。创建⼀个相应的shortName,⽤于Rte 的调⽤。相同的ID⽤于PduR的调⽤。
- IPduDirection:定义IPdu信号的⽅向。
LDCOM_RECEIVE:表⽰l-PDU是接收信号
LDCOM_SEND:表⽰l-PDU是发送信号 - Pdu Ref:关联EcuC中的Pdu Rx Indication:仅⽤于接收⽅:要调⽤的Rte_LdComCbkRxIndication回调函数的名称。
- System Template Signal Ref:关联DBC中对应的信号根据项⽬需求配置好所有接收Pdu。
9.2Method相关信号发送配置
9.3Event发送信号配置
10.PduR配置
10.1Method接收
这⼀步主要是关联上层LdCom模块。
- Dest Pdu Data Processing:这个选项决定了在哪种⽅式执⾏对⽬标模块的路由。
IMMEDIATE:路由是在transmit或indication函数中执⾏的。
DEFERRED(延迟):路由是在主函数的背景下进⾏的。 - Dest Pdu Data Provision:指定如何提供数据:直接(作为传输调⽤的⼀部分)或通过传输请求后的 TriggerTransmit回调函数。只对通信接⼝Tx DestPdus有要求。
- Dest Pdu Direction:这个参数决不能⼿动改变。它是由PduR验证⾃动计算的。PduR路由路径⽬标Pdu 通信⽅向。
RECEIVE:路由路径⽬标是⼀个接收Pdu。
TRANSMIT:路由路径⽬标是⼀个发送Pdu。
UNDEFINED:⽆法确定通信⽅向。 - DestPdu Handle ld:这个参数决不能⼿动改变。它是由PduR验证⾃动⼒计算的。由PDU路由器分配的 PDU标识符。由通信接⼝和传输协议模块使⽤,⽤于确认和触发传输API调⽤
- Dest PduRBswModules Ref:这个参数决不能⼿动改变。它是由PPduR验证⾃动计算的。关联 PduRBswModules LdCom(UpperLayer)的PduR路由路径⽬的地Pdu。
- Dest Pdu Ref:关联信号对应的Pdu
- Dest Pdu Routing Type:这个参数决不能⼿动改变。它是由PduR验证⾃动计算的。PduR的路由路径⽬ 的地Pdu的路由类型。
路由类型决定了路由路径的路由操作模式:
API_FORWARDING:在下层和上层模块之间进⾏路由。
GATEWAY_ROUTING:下层模块之间的路由。
UNDEFINED:路由类型⽆法确定。 - Pdu Length Handling Strategy:这个参数只⽤于通信接⼝路由。对于专输协议路由,它被忽略。
UNUSED:对Tp路由路径或未排队的If路由路径使⽤此值
SHORTEN:如果在源端收到较⼤的Pdu,Pdu会缩短到配置的全局Pdu⻓度(以前PduR版本的默认 值)。
DISCARD:如果在源端收到⼀个⽐配置的⼤的Pdu,Pdu将被丢弃
IGNORE:如果Pdu的⻓度被忽略,并移交给⽬标模块。(只记适⽤于未排队的IF路由路径)
- Source Pdu Handle ld:这个参数决不能⼿动改变。它是由PduR验证⾃动计算的。由PDU路由器分配的 PDU⾃动计算。
- Src Pdu Direction:这个参数决不能⼿动改变。它是由PduR验证⾃动计算的。PduR路由路径源端Pdu 通信⽅向。
RECEIVE:路由路径源端是⼀个接收Pdu。
TRANSMIT:路由路径源端是⼀个发送Pdu。
UNDEFINED:⽆法确定通信⽅向。 - Src Pdu PduRBswModules Ref:这个参数决不能⼿动改变。它是由PduR验证⾃动计算的。 关联PduRBswModules SoAd (Low Layer)的PduR路由路径源Pdu.
- Src Pdu Ref:关联信号的Pdu
10.2Method发送
10.3Event发送
注意:⼀旦以上配置中Transmission Confirmation使能,则需要使能响应的PduR和SoAd中的属性, 否则编译通过,但测试过程中会响应报⽂是会Trap.