您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 模型库 Model Center   Code  
会员   
   
业务架构设计
4月18-19日 在线直播
基于UML和EA进行系统分析设计
4月25-26日 北京+在线
AI 智能化软件测试方法与实践
5月23-24日 上海+在线
   
 
 订阅
AUTOSAR实战干货:XCP零基础实战配置指南
 
作者:Tomas Li
  173  次浏览      5 次
 2025-4-22
 
编辑推荐:
本文主要介绍了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文件中。

   
173 次浏览       5
 
相关文章

CMM之后对CMMI的思考
对软件研发项目管理的深入探讨
软件过程改进
软件过程改进的实现
 
相关文档

软件过程改进框架
软件过程改进的CMM-TSP-PSP模型
过程塑造(小型软件团队过程改进)
软件过程改进:经验和教训
 
相关课程

以"我"为中心的过程改进(iProcess )
iProcess过程改进实践
CMMI体系与实践
基于CMMI标准的软件质量保证

最新活动计划
人工智能.机器学习TensorFlow 5-22[北京]
AI智能化软件测试方法与实践 5-23[北京]
图数据库与知识图谱 5-22[北京]
DeepSeek大模型应用开发 6-12[厦门]
基于 UML 和EA进行分析设计 6-23[北京]
嵌入式软件架构-高级实践 7-9[北京]
 
 
最新文章
iPerson的过程观:要 过程 or 结果
基于模型的需求管理方法与工具
敏捷产品管理之 Story
敏捷开发需求管理(产品backlog)
Kanban看板管理实践精要
最新课程
基于iProcess的敏捷过程
软件开发过程中的项目管理
持续集成与敏捷开发
敏捷过程实践
敏捷测试-简单而可行
更多...   
成功案例
英特尔 SCRUM-敏捷开发实战
某著名汽车 敏捷开发过程与管理实践
北京 敏捷开发过程与项目管理
东方证券 基于看板的敏捷方法实践
亚信 工作量估算
更多...