AUTOSAR以太网状态管理器规范.docx
《AUTOSAR以太网状态管理器规范.docx》由会员分享,可在线阅读,更多相关《AUTOSAR以太网状态管理器规范.docx(20页珍藏版)》请在冰豆网上搜索。
AUTOSAR以太网状态管理器规范
以太网状态管理器规范
声明
翻译:
邓孔宏
此翻译件仅供学习参考,不得用于任何商业目的。
对于使用该翻译件造成的后果,译者不承担任何责任。
1介绍和功能概述
这个规范规定了AUTOSAR基础软件模块以太网状态管理器的功能、API和配置。
在AUTOSAR分层软件构架里,以太网状态管理器属于ECU抽象层,或者更准确的说,它属于通信硬件抽象。
以太网状态管理器的主要任务总结如下:
[SWS_EthSM_00001]
‘以太网状态管理器应该提供一个抽象接口给AUTOSAR通信管理器去启动和关闭在一个以太网簇上的通信。
’()
[SWS_EthSM_00002]
‘以太网状态管理器不直接访问以太网硬件(以太网通信控制器和以太网收发器),但是间接的通过以太网接口模块访问。
以太网接口重定向请求到适当的驱动模块。
’()
2缩写词和缩略语
API应用程序接口
BSW基础软件
BswM基础软件模式管理器
ComM通信管理器
DEM诊断事件管理器
DET默认错误追踪器
EcuMECU状态管理器
Eth以太网控制器
EthTrcv以太网收发器
EthSM以太网状态管理器
EthIf以太网接口
SchMBSW调度器
SoAd套接口适配器
3相关文档
3.1输入文档
[1]基础软件模块清单
AUTOSAR_TR_BSWModuleList.pdf
[2]分层的软件构架
AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
[3]AUTOSAR在基础软件上的一般要求
AUTOSAR_SRS_BSWGeneral.pdf
[4]AUTOSARCOM规范
AUTOSAR_SWS_COM.pdf
[5]ECU配置规范
AUTOSAR_TPS_ECUConfiguration.pdf
[6]通信协议栈类型规范
AUTOSAR_SWS_CommunicationStackTypes.pdf
[7]通信管理器规范
AUTOSAR_SWS_ComManager.pdf
[8]在模式管理器上的要求
AUTOSAR_SRS_ModeManagement.pdf
[9]基础软件模块描述模版
AUTOSAR_TPS_BSWModuleDescriptionTemplate.pdf
[10]以太网接口规范
AUTOSAR_SWS_EthernetInterface.pdf
[11]在AUTOSAR里在以太网上的要求
AUTOSAR_SRS_Ethernet.pdf
[12]标准的类型规范
AUTOSAR_SWS_StandardTypes
[13]诊断事件管理器规范
AUTOSAR_SWS_DiagnosticEventManager.pdf
[14]默认错误追踪器规范
AUTOSAR_SWS_DefaultErrorTracer.pdf
[15]基础软件模式管理器规范
AUTOSAR_SWS_BSWModeManager.pdf
[16]套接口适配器规范
AUTOSAR_SWS_SocketAdapter.pdf
[17]基础软件模块的一般规范
AUTOSAR_SWS_BSWGeneral.pdf
[18]TcpIp规范
AUTOSAR_SWS_TcpIp.pdf
3.2相关的规范
AUTOSAR提供一个通用的规范在基础软件模块上,它对以太网状态管理器同样有效。
这样,SWSBSWGeneral规范应该被考虑作为额外的和必须的规范对于以太网状态管理器。
4约束和假定
4.1限制
EthSM只可以被用于以太网通信。
它致力于去操作EthIf去控制一个或多个底层以太网控制器和以太网收发器驱动。
除了以太网之外的协议(也就是CAN、LIN或Flex-Ray)不支持。
下面的术语不被当前版本的规范支持。
·在LAN上唤醒
现行的WthSM要求一个基于IP的通信协议栈。
为了获取FULL_COMMUNICA-TION,有必要去获取一个活动的IP通信。
在以后的规范里,一个可选的“lowlevel“状态机会被引入。
这个状态机只在驱动/收发器层级(没有IP通信)工作。
这是必须的对于实现其它的通信协议(例如IEEE1722)。
4.2适用于汽车领域
以太网状态管理器可以被用于所有的领域应用,只要当以太网协议被使用的时候。
在要求高数据率的地方,以太网BSW协议栈可以被使用。
5对其它模块的依赖
AUTOSARBSW调度器
BSW调度器调用EthSM的主要功能函数,这是必要的对于EthSM循环的处理。
AUTOSAR通信管理器
ComM请求网络通信模式,以及在当一个通信模式到达时被EthSM告知。
AUTOSAR以太网接口
EthSM使用EthIf的接口去初始化以太网通信硬件、去控制分配到以太网网络的以太网控制器和以太网收发器的操作模式。
以太网接口使用EthSM的API去提供收发器的连接状态。
AUTOSAR默认错误追踪器
为了能够去报告开发错误,以太网状态管理器必须有访问默认错误追踪器的错误hook的权利。
AUTOSAR诊断事件管理器
为了能够报告产品错误,以太网状态管理器必须要有权利访问诊断事件管理器。
AUTOSARBsw管理器
BswM被EthSM通知,当一个内部的状态到达。
AUTOSARTcpIp
TcpIp被调用去请求TCPIP状态(例如在线,离线,挂起,······)。
TcpIp使用EthSM的API去提供TCPIP状态。
6功能规范
一个ECU可以有不同的通信网络。
每个网络必须用一个独一无二的网络handle识别。
ComM从网络请求通信模式。
通过它的配置,它可以知道哪一个handle被分配到一个什么类型的网络。
在以太网网络里,使用以太网状态管理器,它负责控制以太网网络的流量抽象。
下面的章节将详细描述。
6.1网络通信模式请求转换
[SWS_EthSM_00014]
‘EthSM应该提供给ComM一个API,这个API可以被ComM使用去请求以太网网络的通信模式’()
[SWS_EthSM_00015]
‘依据这个API提交的参数,EthSM应该执行一个相关的网络模式状态机的状态转换’()
[SWS_EthSM_00016]
‘这个转换应该传输请求到一个分别的API调用里去去控制分配的以太网外围设备’()
6.2当前网络通信模式的输出
一个网络当前通信模式可以跟请求的模式不同。
EthSM必须提供关于当前通信模式的信息给ComM通过下面两个类别的接口:
[SWS_EthSM_00017]
‘EthSM应该提供一个API,它可以被ComM轮询去获取一个以太网网络当前的通信模数’()
[SWS_EthSM_00018]
‘EthSM应该使用一个ComM的调出函数去通知ComM发生了一次通信模式的改变’()
6.3外围设备的控制
6.3.1以太网收发器
一个或多个以太网收发器属于某一个以太网网络(handle)。
[SWS_EthSM_00019]
‘在网络handle和收发器之间的分配应该是EthSM配置的一个部分’()
[SWS_EthSM_00020]
‘EthSM应该控制以太网收发器依据它的网络模式状态机的状态转换’()
[SWS_EthSM_00021]
‘EthSM应该使用EthIf的API来控制以太网收发器模式’()
6.3.2以太网控制器
一个或多个以太网控制属于某一个以太网网络(handle)。
[SWS_EthSM_00022]
‘依据网络模式状态机,EthSM应该控制每个以太网网络的以太网控制器模式’()
[SWS_EthSM_00023]
‘EthSM应该使用EthIf的API去控制分配的以太网控制器的操作模式’()
6.4多个网络
以太网状态管理器应该能够去操作不同的以太网网络。
这涉及到不同的物理网络,以及在相同物理网络上的不同的VLAN。
在所有的两种情况里,通过在每个物理或虚拟网络里的各自的handle完成分割。
VLAN作为不同的以太网网络出现在高软件层(ComM)。
例如:
如果这里有一个物理以太网控制器,且分配了两个VLAN到这个控制器上,那么就存在两个ComM信道。
6.5背景和基本原理
例子:
应用负责确认以太网网络是否被需要。
一个可能的用例是在一个测试器连接上使用以太网网络。
用例:
在测试器连接上使用以太网。
例如,检测将会发生在ECU的一个单独的硬件PIN上。
因此,在这个情况下,硬件pin的激活和以太网网络的激活只能通过板外诊断测试仪实现。
停用以太网网络的原因将是:
-测试仪通过独立的硬件pin停用网络
-应用停用网络
-应用确认一个超时
-网络的链接状态失效
[SWS_EthSM_00038]
‘ComM调用EthSM去请求一个确定的通信模式。
以太网网络只需要通信模数FULL_COMMUNICATIONG和NO_COMMUNICATION。
’()
[SWS_EthSM_00085]
‘如果FULL_COMMUNICATION被请求,以太网控制器和以太网收发器被设置为ACTIVE连接状态。
要达到FULL_COMMUNICATION,也必须去获取一个ACTIVE连接状态(以太网线缆连接)和一个ONLINETcpIp状态(IP通信可用)。
连接状态将被以太网收发器模块检测,以及通过以太网接口传达。
TcpIp状态会被检测以及传达通过TcpIp模块。
’()
[SWS_EthSM_00086]
‘如果ComM请求NO_COMMUNICATION,那么以太网控制器和以太网收发器被设置为DOWN状态。
’()
注意:
对于逆初始化,单独的接口是不必要的。
逆初始化在EthIf里自动实现。
必须设置TcpIp状态到OFFLINE。
[SWS_EthSM_00087]
‘以太网网络必须被应用唤醒且要么是on(FULL_COMMUNICATION)要么是off(NO_COMMUNICATION)。
这样就不需要其它的状态,例如SILENT_COMMUNICA-TION。
’()
6.6网络模式状态机
[SWS_EthSM_00024]
‘EthSM应该实现对于每个配置的网络操作一个网络模式状态机。
内部的状态描述在下图[SWS_EthSM_00041]。
’()
6.7错误通知
详细信息参考SWS_BSWGeneral里的第7.2.2章“Eroor类别”和第7.2.3章“开发Error”。
6.8错误类别
6.8.1开发错误
类别或错误相关的错误代码值(十六进制)
无效的通信模式请求ETHSM_E_INVALID_NETWORK_MODE0X01
EthSM模块没有初始化ETHSM_E_UNINIT0X02
无效的指针在参数表里ETHSM_E_PARAM_POINTER0X03
无效的参数在参数表里ETHSM_E_INVALID_NETWORK_HANDLE0X04
无效的参数在参数表里ETHSM_E_PARAM_CONTROLLER0X07
6.8.2运行时错误
类别或错误相关的错误代码值(十六进制)
无效的参数在参数表里ETHSM_E_INVALID_TCP_IP_MODE0X05
6.8.3短暂的错误
没有短暂的错误。
6.8.4产品错误
错误名称:
ETHSM_E_LINK_DOWN
简述:
链接中断检测
详细描述:
当收发器切换到down时应该被报告尽管通信已经被建立和由于通信请求被请求。
推荐的DTC:
N/A
检测条件:
FAIL在从ETHSM_STATE_ONLINE转换为ETHSM_STATE_ONHOLD期间,被EthSM_TrcvLinkStateChg触发(ETHTRCV_LINK_STATE_-ACTIVE)
PASS在从ETHSM_STATE_ONHOLD转换为ETHSM_STATE_ONLINE期间,被EthSM_TrcvLinkStateChg触发(ETHTRCV_LINK_STATE_-ACTIVE)
次要的参数:
没有
时间要求:
PRE_FAIL:
立即
PASS:
依据配置
监控频率:
持续的
MILillumination:
N/A
6.8.5拓展的产品错误
没有拓展的产品错误。
6.9调试
调试规范将要被淘汰。
6.10商业成品组建协议栈使用
一个商业成品组建(COTS)协议栈应该是可用的。
商业的协议栈不用改编就可以使用。
然而,在这个情况下以太网状态管理器没有能力去控制以太网控制器和以太网收发器。
商业的协议栈可能被改编为了使用以太网接口。
在这个情况下,以太网状态管理器能够去控制以太网控制器和以太网收发器。
以太网物理媒介
SWS_EthSM_00078
‘可以设置以太网状态管理器成一个虚拟的(dummy)模式(见第十章配置规范)。
在这个模式里,以太网状态管理器不支持API到以太网接口。
API到ComM是有效但是功能是无效的。
来自ComM的功能调用会获得返回E_OK值的响应。
’()
7API规范
7.1输入的类型
模块输入的类型
ComMComM_ModeType
ComStack_TypesNetworkHandleType
DemDem_EventIdType
Dem_EventStatusType
Eth_GeneralTypesEthTrcv_LinkStateType
EthTrcv_ModeType
Eth_ModeType
Std_TypesStd_ReturnType
Std_VersionInfoType
TcpIpTcpIp_StateType
7.2类型定义
7.2.1EthSM_NetworkModeStateType
[SWS_EthSM_00041]‘
名称:
EthSM_NetworkModeStateType
类型:
枚举
范围:
ETHSM_STATE_OFFLINEEthSM被初始化在这个状态。
ETHSM_STATE_WAIT_TRCVLINKComM请求COMM_FULLCOMMUNI-CATION在这个状态里。
控制器和收发器将被设置成ACTIVE。
EthSM等待收发器链接状态(ACTIVE)。
ETHSM_STATE_WAIT_ONLINE收发器链接状态是ACTIVE,EthSM等待IP通信(TcpIP状态=ONLINE)
ETHSM_STATE_ONLINEIP通信可以用,ComM状态COMM_FUL-L_COMMUNICATION到达
ETHSM_STATE_ONHOLDEthSM丢失活动的收发器链接状态,TcpIP状态仍然是ONLINE。
ETHSM_STATE_WAIT_OFFLINE在这个状态ComM请求COMM_NO_COMMUNICATION。
描述:
这个类型应该定义网络模式状态机的状态
’()
7.3功能定义
这是一个提供给上层模块的功能清单。
注意:
根据以太网硬件,可能有必要让实现偏离API规范对于异步/同步行为。
7.3.1EthSM_Init
[SWS_EthSM_00043]‘
服务名称:
EthSM_Init
语法:
voidEthSM_Init(
void
)
服务ID:
0X07
异步/同步:
同步
可重入性:
不可重入
参数(in):
没有
参数(inout):
没有
参数(out):
没有
返回值:
没有
描述:
这个函数初始化EthSM
’(BSW0405,SRS_BSW_00101,SRS_BSW_00358,SRS_BSW_00414)
7.3.2EthSM_GetVersionInfo
[SWS_EthSM_00046]‘
服务名称:
EthSM_GetVersionInfo
语法:
voidEthSM_GetVersionInfo(
Std_VersionInfoType*versioninfo
)
服务ID:
0X02
同步/异步:
同步
可重入性:
可重入
参数(in):
没有
参数(inout):
没有
参数(out):
versioninfo指针指向存放版本信息的地方
返回值:
没有
描述:
这个服务取出这个模块的版本信息
’(SRS_BSW_00407,SRS_BSW_00003)
7.3.3EthSM_RequestComMode
[SWS_EthSM_00050]‘
服务名称:
EthSM_RequestComMode
语法:
Std_ReturnTypeEthSM_RequestComMode(
NetworkHandleTypeNetworkHandle,
ComM_ModeTypeComM_Mode
)
服务ID:
0X05
同步/异步:
异步
可重入性:
不可重入
参数(in):
NetworkHandle请求的指定的通信网络的handle
ComM_Mode请求的通信模式
参数(inout):
没有
参数(out):
没有
返回值:
Std_ReturnTypeE_OK:
服务接受
E_NOT_OK:
服务拒绝
描述:
操作通信模式,设置以太网网络活跃或passive
’()
注:
功能可重入性受限于不同的网络handles。
这里不关注对于相同的网络的可重入性。
[SWS_EthSM_00051]‘
函数EthSM_RequestComMode检查请求的网络handle。
它只接收请求,如果请求的网络handle是一个包含在EthSM配置里的handle(配置参数EthSMNetwork-Handle)。
在这个情况里返回值被设置为E_OK。
如果Handle不包含在配置里,功能函数拒绝请求。
在这个情况下返回值被设置为E_NOT_OK。
’()
[SWS_EthSM_00052]‘
功能EthSM_RequestComMode应该报告ETHSM_E_INVALID_NETWORK_HAN-DLE给DET,如果它不接收请求的网络handle。
’()
[SWS_EthSM_00095]‘
功能EthSM_RequestComMode应该报告ETHSM_E_INVALID_NETWORK_MODE给DET,如果它不接收请求的ComM_Mode。
’()
[SWS_EthSM_00053]‘
如果函数EthSM_RequestComMode接受函数调用,它应该为网络handle保存通信模式且状态机的相应的网络模式切换应该被发起在最近的下一个main函数周期。
’()
[SWS_EthSM_00054]‘
函数EthSM_RequestComMode应该报告ETHSM_E_UNINIT给DET,如果EthSM还没有被初始化。
’()
[SWS_EthSM_00199]‘
功能EthSM_RequestComMode应该从ComM接收SilentCom请求以及会返回E_OK。
没有错误会被报告给ComM在这个情况里,尽管SilentCom无效依据SWS_EthSM_00087’()
7.3.4EthSM_GetCurrentComMode
[SWS_EthSM_00055]‘
服务名称:
EthSM_GetCurrentComMode
语法:
Std_ReturnTypeEthSM_GetCurrentComMode(
NetworkHandleTypeNetworkHandle,
ComM_ModeType*ComM_ModePtr
)
服务ID:
0X04
异步/同步:
同步
可重入性:
不可重入
参数(in):
NetWorkHandle当前的通信模式应该被取出的网络handle
参数(inout):
没有
参数(out):
ComM_ModePtr指针指向要取出当前通信模式的位置
返回值:
Std_ReturnTypeE_OK:
服务接收
E_NOT_OK:
服务拒绝
描述:
这个服务应该取出一个以太网网络的当前通信模式。
’()
[SWS_EthSM_00057]‘
功能EthSM_GetCurrentComMode检查服务请求的网络handle。
它只有在当请求的网络handle是一个包含在EthSM配置的handle的时候才接受服务,在这个情况下返回值被设置为E_OK。
如果不是配置里的handle,功能函数拒绝请求。
在这个情况下返回值被设置为E_NOT_OK。
’()
[SWS_EthSM_00058]‘
功能EthSM_GetCurrentComMode应该报告ETHSM_E_INVALID_NETWORK_-HANDLE给DET,如果它不接受请求的网络handle。
’()
[SWS_EthSM_00059]‘
功能EthSM_GetCurrentComMode取出对于网络handle的当前的通信模式到指定的指针类型ComM_ModeType,如果请求被接受。
’()
注:
因为以太网硬件需要一些时间去处理请求,同时这里又没有规定通知机制,实际的硬件模式和被EthSM通知的模式可能会不同直到硬件准备就绪。
[SWS_EthSM_00060]‘
功能EthSM_GetCurrentComMode应该报告ETHSM_E_UNINIT给DET,如果EthSM还没有被初始化。
’(SRS_BSW_00406,SRS_BSW_00374,SRS_BSW_00379,SRS_BSW_00003,SRS_BSW_00318)
7.3.5EthSM_TcpIpModeIndication
[SWS_EthSM_00110]‘
服务名称:
EthSM_TcpIpModeIndication
语法:
Std_ReturnTypeEthSM_TcpIpModeIndication(
uint8CtrlIdx,
TcpIp_StateTypeTcpIpState
)
服务ID:
0X08
同步/异步:
同步
可重入性:
不可重入
参数(in):
CtrlIdxEthif控制器索引去识别通信网络哪里TcpIp状态被改变。
TcpIpState特定的网络handle的实际的TcpIp状态
参数(inout):
没有
参数(out):
没有
返回值:
Std_ReturnTypeE_OK:
服务接受
E_NOT_OK:
服务拒绝
描述:
服务被TcpIp调用去报告实际的TcpIp状态。
’()
[SWS_EthSM_00116]‘
如果功能EthSM_TcpIpModeIndication获取一个不是在EthSM模块的配置里的CtrIdx,那么它应该调用Det_ReportError用ErrorId参数ETHSM_E_PARAM_CONT-ROLLER’()
在这个情况里返回值被设置为E_NOT_OK。
[SWS_EthSM_00118]‘
如果错误检测被开启,参数TcpIpState应该被检查是否在允许的范围内。
万一超出允许范围,函数EthSM_TcpIpModeIndication应该忽略状态指示,报告运行时错误ETHSM_E_INVALID_TCP_IP_MODE给DET且返回E_NOT_OK。
’()
[SWS_EthSM_00119]‘
如果函数EthSM_TcpIpModeIndication接受函数调用,它应该为影响的网络handle保存TcpIp状态,以及状态机的相应的网络模式切换应该被启动在最近的下一个main函数周期。
’()
[SWS_EthSM_00120]‘
函数EthSM_TcpIpModeIndication应该报告