目录
前言
在《AUTOSAR架构下XCP从0到1开发配置实践》一文中我们介绍了AUTOSAR架构下XCP从0到1的开发和配置过程。实现了:
1.标定量和观测量能编译链接到指令的地址段。
2.完成最简的A2L文件且能导入上位机工具使用。
3.完成XCP模块的最简配置且集成XCP到代码工程中。
4.通过上位机工具能读取到观测量。
5.通过上位机能修改标定量。
对于量产项目还需要继续以下的工作:
1.设计项目的Memory layout,在LD文件中分配规范的标定段。
2. 使能overlay的功能,上位机可以直接发送Flash地址进行标定。
3. A2L文件的批量生成(目前就是一个最简的手写A2L文件,实际工程中应该是每个模块都是一个A2L文件,需要Merge到一个总的A2L文件当中)。
4. 配置XCP DAQ.
5. 将标定量写入hex文件中。
本文就来配置实现XCP DAQ功能。
关于XCP DAQ的概念介绍,可以参考:
https://zhuanlan.zhihu.com/p/17215624759
工程实践环境:
AUTOSARBSW Tool:Vector
AUTOSAR MCAL Tool:EB
Hardware Platform: Infineon TricoreTC387
Build Tool: Tasking
Debug Tool: UDE
缩略词
正文
1.Davinci配置XCP DAQ相关功能
1.1. 配置XcpCmdCOnfig中的DAQ命令
配置DAQ功能首先要配置XCP支持DAQ相关的命令,也就是配置XcpDaqAndStim配置容器。
XcpDaqAdnStim配置容器里面的具体内容保持默认配置就好,后面测试或者特殊需求实现的时候再去具体分析配置。
注意:本文目标是想让DAQ先工作起来,而不太深入去分析每个配置。实际工作中也注意在调试功能的时候要浅尝辄止,调通后再深入分析。
1.2. 配置XcpEventChannels
问题:什么是XCP Event Channel?
简单理解,就是ECU依赖XCP Event Channel来往外发送DAQ List数据。Event Channel是一个逻辑的通道概念,也就是配置了一些DAQ数据发送的优先级、DAQ数据发送的周期时间等,有了这个Event Channel的逻辑通过,上位机和ECU下位机之间就能通过这个逻辑Channel进行数据交互。
我们配置两个Event Channel, 一个10ms的,一个100ms的。
2.工程中集成DAQ功能
Xcp_Event这个函数需要用户在SWC中调用,10ms的Event Channel就10ms调用1次,100ms的Event Channel就100ms调用一次。
注意:如果是初次配置调试XCP DAQ功能,Xcp_Event需要用户调用这个知识点肯定不知道,作者也是在调试过程中发现问题后追根溯源才发现需要用户调用Xcp_Event的。
3.A2L文件添加DAQ配置
A2L文件中需要加入我们配置的Event Channel的信息,这样上位机在发送SET_DAQ_LIST_MODE指令的时候可以指定ECU通过哪个Event Channel发送DAQ数据。
注意:正如我们上文所述,Event Channel是一个逻辑通道概念,在ECU的配置代码中存在,然后A2L中也存在这个配置信息,这样上位机通过A2L文件也能拿到Event Channel的配置信息,这样上位机和ECU就能通过Event Channel交互了。
4.测试工程使用DAQ功能
第一步:加载添加Evnet Channel的A2L文件。
有两个Event Channel.
第二步:测量列表中,两个标定量各选一个Event Channel.
第三步:启动在线测量标定。
效果和Polling模式的一问一答不一样,DAQ模式下ECU会按Event Channel的周期定时发送数据出来。
5.测试Trace分析
上位机本身至此XCP协议的,我们在添加观测量到测量列表后启动在线测量后上位机会按照XCP DAP的指令发送命令出去,不用用户去手动输入命令。但是,我们抱着学习的心态,有必要分析下XCP报文,加深XCP协议的学习。
5.1. XCP异常报文分析
上述过程都是配置调试成功后的流程总结,其实在配置开发DAQ的过程中也遇到了挺多的问题,分析XCP异常报文更有助于我们后面的问题分析。
上位机发送数据:DA
DA对应GET_DAQ_PROCESSOR_INFO指令,正常ECU应该恢复FF xx xx xxx指令,实际回复了FE 20 xx xx指令。
ECU回复数据:FE 2000 08 00 00 01 01
FE : Error Packet Code
20: ERR_CMD_UNKNOWN
问题原因:ECU不支持DA D9的XCP指令。
解决办法:配置XcpDaqAndStim.
上位机发送数据:E00000 0001 0001 0A
E0: SET_DAQ_LIST_MODE指令。
00: ALTERNATING
00 00: DAQ list Number.
01 00: EVENT_CHANNEL_NUMBER
01 : Prescaler
0A:DAQ list priority
ECU回复数据:FE 22 5F 31 30 6D 73 65
FE : Error Packet Code
22: ERR_OUT_OF_RANGE
问题原因:ECU的Event Channel 1不支持优先级为10的配置(100ms的Event Channel的Priority没有配置为10)。
解决办法:100ms的Event Channel的Priority配置为10.
5.2. XCP正常报文分析
DA D9指令上文已经介绍,从D7指令开始分析。
上位机发送数据:D7 00 00 00
ECU回复数据:FF 04 01 15 01 00 00 00
上位机发送数据:F5 07
ECU回复数据:FF 58 63 70 45 76 65 6E
上位机发送数据:D6
ECU回复数据:FF 6C 5F 31 30 6D 73 65
上位机发送数据:D5 00 02 00
ECU回复数据:FF 6C 5F 31 30 6D 73 65
上位机发送数据:D4 00 00 00 01
ECU回复数据:FF 6C 5F 31 30 6D 73 65
上位机发送数据:D4 00 01 00 01
ECU回复数据:FF 6C 5F 31 30 6D 73 65
上位机发送数据:D3 00 00 00 00 01
ECU回复数据:FF 6C 5F 31 30 6D 73 65
上位机发送数据:D3 00 01 00 00 01
ECU回复数据:FF 6C 5F 31 30 6D 73 65
上位机发送数据:E2 00 00 00 00 00
ECU回复数据:FF 6C 5F 31 30 6D 73 65
上位机发送数据:E1 FF 02 00 00 00 00 70
ECU回复数据:FF 6C 5F 31 30 6D 73 65
上位机发送数据:E2 00 01 00 00 00
ECU回复数据:FF 6C 5F 31 30 6D 73 65
上位机发送数据:E1 FF 02 00 02 00 00 70
ECU回复数据:FF 6C 5F 31 30 6D 73 65
上位机发送数据:E0 00 00 00 01 00 01 00
ECU回复数据:FF 6C 5F 31 30 6D 73 65
上位机发送数据:DE 02 00 00
ECU回复数据:FF 00 5F 31 30 6D 73 65
上位机发送数据:E0 00 01 00 00 00 01 00
ECU回复数据:FF 00 5F 31 30 6D 73 65
上位机发送数据:DE 02 01 00
ECU回复数据:FF 01 5F 31 30 6D 73 65
上位机发送数据:DD 01
ECU回复数据:FF 01 5F 31 30 6D 73 65
上文都是上位机通过XCP协议在配置DAQ. 下文图中ECU开始发送DTO给到上位机。
6.总结
本文详细介绍了XCP从0到1配置实践过程中的DAQ功能。配置调试DAQ需要进行以下操作:
1.配置XcpDaqAndStim
2.用户调用Xcp_Event.
3.A2L文件中添加Event Channel信息。
介绍了通过TMaster以DAQ形式获取测量数据,并分析了异常和正常的XCP报文。读者着重需要掌握通过ERROR CODE调查XCP错误的方法。
End
「
原文始发于微信公众号(汽车电子嵌入式):AUTOSAR架构下XCP DAQ功能配置实现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论