AUTOSAR以太网之IPv4

系列文章目录


返回总目录



一、IPv4报文格式

在这里插入图片描述

二、主要函数

1.IPv4_Init()

这个函数除了对模块配置进行初始化,如果有分包和组包使能,则会对一些相关配置进行初始化如buf长度和位置指针等。如果不涉及分包和组包,那么初始化内容很简单。

2.IPv4_Receive()

在收到报文后根据类型判断为IPv4 (类型 = 800)
然后经过头校验:版本校验,长度校验,checksum校验等。
接下来源地址校验过程比较复杂,以后会拆开讲。先在这里讲个大概。
上述校验合法后,继续校验源地址合法性。
源地址合法性包括是否是loop back IP、预留IP、广播ip或autoip等,如果是这些IP不再往下分析了。
目的地址也需要校验,这里不细说。
取出协议进行识别,看是UDP,TCP,还是ICMP。
然后分别调用UDP_indication / TCP_indication / ICMP_indication

那么在分别把包识别出协议后丢给各个协议进行解析之前,IPv4还做了哪些工作呢?

两项:组包,和检查ARP更新。

3.IPv4_Transmit()

这个函数主要是给上层协议提供发送需要组装的ipc4数据。
调用时机是在Icmp和Udp需要发送的时候,提供数据封装。
底层是用EthIf层来进行报文空间的分配。底层的事交给底层做。不作为分析重点

### 以太网AUTOSAR中的应用及实现方式 #### AUTOSAR架构概述 AUTOSAR(Automotive Open System Architecture)是一个开放的标准体系结构,旨在提供一种统一的方法来设计和开发汽车嵌入式系统软件。它支持多种通信协议栈,其中包括传统的CAN、LIN以及新兴的以太网技术[^1]。 #### 车载以太网的应用背景 随着车辆智能化和互联化的快速发展,传统总线系统的带宽已无法满足日益增长的数据传输需求。因此,车载以太网因其高带宽、低延迟的特点被引入到汽车电子系统中,并逐步成为现代汽车网络的重要组成部分[^4]。 #### Ethernet在AUTOSAR中的分层设计 类似于其他通信协议栈的设计模式,Ethernet在AUTOSAR中也采用了分层的方式进行构建。其整体框架包括以下几个层次: - **物理层 (Physical Layer)** 物理层负责信号的实际传输,通常由硬件设备完成,例如以太网控制器芯片或PHY芯片。这些组件通过驱动程序与上层软件交互[^3]。 - **数据链路层 (Data Link Layer)** 数据链路层实现了帧级别的可靠传输机制,主要包括MAC子层和服务访问点(SAP)接口等功能。这一部分定义了如何封装和解析以太网帧。 - **网络层 (Network Layer)** 网络层主要涉及IP地址分配及其路由选择逻辑等内容,在此之上运行着TCP/UDP等更高阶的服务模型[^2]。 - **传输层 (Transport Layer)** 提供端到端之间的连接服务,常见的代表就是前面提到过的TCP(面向连接型) 和 UDP(无连接型)。 - **会话层及以上** 应用层面则可能涉及到SOME/IP这样的特定于汽车行业内的消息传递标准用于远程过程调用(RPC),从而使得不同的ECU之间能够更加便捷高效地交换复杂的信息流。 #### 配置与源码实现 为了便于开发者针对具体应用场景灵活调整参数设置并优化性能表现,官方文档推荐利用专用配置工具来进行初始化操作。例如,可以通过图形界面指定缓冲区大小、优先级队列数目等相关属性;与此同时还提供了详尽的例子帮助理解整个流程是如何工作的——即从发送方构造包体直至接收端解码还原原始负载为止全过程演示。 以下是基于UDP协议的一个简单代码片段展示如何使用Ethernet驱动实现基本的数据通信功能: ```c #include "EthIf.h" #include "SoAd.h" void send_data(const uint8_t* data, size_t length){ SoAd_TxPduType tx_pdu; memset(&tx_pdu, 0 ,sizeof(tx_pdu)); /* 设置目标地址 */ tx_pdu.destAddrType = SOAD_ADDR_TYPE_IPV4; tx_pdu.remoteAddress.ipv4Addr = inet_addr("192.168.1.1"); tx_pdu.portNumber = htons(5000); /* 填充要发送的内容 */ tx_pdu.sduLength = length; memcpy(tx_pdu.sduDataPtr, data, length); /* 发送数据 */ SoAd_SendTxPdu(&tx_pdu); } ``` 上述函数接受任意长度字节数组作为输入参数并通过Socket Adapter模块将其广播出去给定目的主机上的某个固定监听端口处等待响应处理。 #### Can网络管理和以太网协同工作 在一个仅依赖CAN为基础的传统电器架构里头要是想增加对于来自外部世界互联网流量的支持的话,则往往需要借助额外新增加出来的BSWM(Block State & Wakeup Management ) 或者是由某些特定类型的Software Component 来协调两者间的关系进而达成最终效果 —— 即当检测到当前处于活动状态下的某条CAN通道路由器应该开启关联起来的那个对应的ETHERNET Channel 的Power Mode 到Active Level 下去以便正常运作下去[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值