编辑推荐: |
本文主要介绍了AUTOSAR实战干货:XCP零基础实战配置指南相关内容。
希望对您的学习有所帮助。
本文来自于微信公众号ADAS与ECU之吾见,由火龙果软件Linda编辑、推荐。
|
|
目录
前言
网上对于AUTOSAR XCP的概念介绍文章已经很多,所以本文不再对XCP的概念做过多的介绍,直接介绍如何从0到1配置基于CAN通信的XCP开发配置。主要完成以下几个功能:
1.标定量和观测量能编译链接到指令的地址段。
2.完成最简的A2L文件且能导入上位机工具使用。
3.完成XCP模块的最简配置且集成XCP到代码工程中。
4.通过上位机工具能读取到观测量。
5.通过上位机能修改标定量。
XCP概念和原理参考的文章:
https://mp.weixin.qq.com/s/lWD6uggP7ICMbvp3nqxngg
通过《AUTOSAR_SWS_XCP》规范文档,知道XCP标定的通信时序图。XCP on CAN涉及到的主要模块为XCP、CanIf、CanTrcv、Can
Controller完成标定过程中的数据发送和接收。
根据XCP on CAN 标定功能的开发流程,整理出几个所需方向,以下是一个量产项目中关于XCP需要完成的工作内容。

注意:上图中是一个量产项目中XCP要做的工作,本文仅完成XCP Bringup的介绍。更多关于XCP的协议及使用的内容将在后续的CP系列文章中介绍。
工程实践环境:
AUTOSAR BSW Tool:Vector
AUTOSAR MCAL Tool:EB
Hardware Platform: Infineon Tricore TC387
Build Tool: Tasking
Debug Tool: UDE
缩略词
1.CAN功能开发
1.1 DBC的制作及导入
通过Vector的技术手册《TechnicalReference_DbcRules_Vector》可以知道如果一个Message的属性都配置未No但是其Message
Name中包含XCP(不区分大小写)的字符串,那么Davinci工具在导入DBC的时候就会认为这是XCP报文,也就是说Davinci会完成XCP的基本配置。
通过Davinci的Input Files工具导入DBC.
这样Davinci工具会完成最基本的XCP相关配置,后文会一一介绍到。
1.2 CanTrcv模块配置
Cantrcv的配置包括Cantrcv的STB, EN等Pin脚的配置,这个可以参考《AUTOSAR项目实战(6)-Port及Dio模块配置实践》一文。
Cantrcv模块的配置最重要的就是要映射CanTrcv中CantrcvDioChannelAccess到Dio
Channel.
关于CanTrcv的其他功能(比如,唤醒功能)这里不在赘述,在《AUTOSAR项目实战》专栏中会有专门的文章介绍。
1.3 Can Controller模块配置
同样,对于Can Controller的配置不是本文的中断,这里仅列出比较重要的配置项,在《AUTOSAR项目实战》专栏中会有专门的文章介绍Can
Controller(滤波怎么最优配置,邮箱怎么最优配置,HO和硬件Buffer的对应关系等...)。也可以先参考《》一文,有对TC3xx芯片CAN模块的详细介绍。
根据ECU硬件设计选着芯片中CAN硬件单元
配置CAN波特率。
配置CAN滤波器。
配置CAN邮箱。
1.4 CanIf模块配置
我们的DBC携带了XCP的信息,所以导入DBC后,CanIf会自动将XCP报文上行到XCP模块。
2.XCP模块集成配置配置
2.1.XCP模块配置
通过DBC导入XCP报文后,Davinci会自动生成最简到XCP配置,足够完成我们XCP功能的bringup.至于复杂的DAQ等功能,后续文章再介绍。
2.2.XCP模块的Task Mapping
有两个XCP相关的Mainfunction映射到5ms Task.
2.3.XCP模块的初始化
在BswM_Init中完成XCP相关的初始化。
3.在链接文件中定义标定段
Task编译器下链接文件定义标定段,可以参考《Tasking编译器下如何在链接文件中定义标定段》一文。
group CAL_DATA_ROM (ordered, load_addr=0x80004000)
{
select".rodata.CAL_ROM";
"_cal_rom_start" = "_lc_gb_CAL_DATA_ROM";
}
group CAL_DATA_RAM (copy, ordered, run_addr=0x70000000)
{
select ".rodata.CAL_ROM";
"_cal_ram_start" = "_lc_gb_CAL_DATA_RAM";
}
|
4.编写标定相关的测试程序
编译后,我们的标定量确实已经编译到对应RAM区域,其初始值存放在对应的ROM区。
5.编写A2L文件
有了标定量的地址后,我们就可以手写一个简单的A2L文件。
6.通过TMaster创建标定工程
注意:Tmaster完整的标定功能需要购买lisence,没有lisence只能观测6个观测量且无法修改标定量。我们需要通过手动发报文来改写标定量的值。
7.测试
7.1.XCP建立连接
7.2.XCP断开连接
7.3.XCP读取观测量
7.4.XCP写标定量
由于TMaster没有lisence就不支持标定量的改写,所以只能手动发送XCP命令来测试改写标定量的值。
8.总结
本文详细介绍了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文件中。 |