标定功能设计_第1页
标定功能设计_第2页
标定功能设计_第3页
标定功能设计_第4页
标定功能设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 HCU地址空间分配TC1767地址线32位,可寻址范围04G大小,TC1767原有地址空间分配如下表所示。Mem名称起始地址大小PFLASH0X800000000XA00000002MDFLASH00X8FE000000XAFE0000032KDFLASH10X8FE100000XAFE1000032KBROM0X8FFFC0000xAFFFC00016KLDRAM0XD000000068KOVRAM0X8FE800000xafe800008KPRAM0XF00500008KPCODE0XF006000016K为了将标定数据放入指定内存空间,我们将地址空间分配更改成如下表所示。Mem名称起始

2、地址大小备注PFLASH0X800000000XA00000001536K存储代码DFLASH00X8FE000000XAFE0000032K存放可修改的标定数据,断电后数据仍存在DFLASH10X8FE100000XAFE1000032K暂时不使用,以后可以用来保存一些需要掉电保护的数据BROM0x8fffc0000xafffc00016k英飞凌Boot Loader代码保存区域PRAM0xf00500008kPCP数据内存PCODE0xf006000016kPCP指令内存OVRAM0X8FE800000xAFE800008K监测数据存放SPRAM0XD400000016K另一页标定数据存放

3、,实际可能不需要使用LDRAM0XD000000068K随机变量存放区域Calrom0x801800000xA0180000512k用来存放标定数据中始终不会改变的数据Section定义cal_flash,定位到DFLASH0区域,如果要在这区域定义变量在头文件cal_flash.h中声明(我觉得这个区域不需要定义变量)。cal_rom,定位到calrom区域,如果要在这区域定义变量在头文件cal_rom.h中声明,声明成const变量。cal_ram,定位在calram区域,要把变量定位到这个区域,在头文件cal_ram.h中声明,如果用OVRAM区域的话这个区域不使用cal_ram_ano

4、ther,定位在spram区域,实际可能不需要用到,在这个区域定义变量的话,在跟它同名的头文件中声明。Monitor,定位在ovram区域,要把变量定位到这个区域,在头文件monitor.h中声明,注意这边声明变量的顺序要跟cal_flash.h中声明变量的顺序要一致。需要注意的一点是,不能用Tasking 3.4r1版本编译,用这个版本编译的话变量不会定位到我们预想的区域,建议使用Tasking 3.3r1版本编译。标定功能实现想法:在PFLASH区存放始终不会改变的数据,在DFLASH区存放需要改变的数据,OVRAM区域定向到DFLASH区域用来监测标定数据。OVRAM功能是通过配置重定向

5、寄存器,定向到PFLASH或DFLASH区域。通过对FLASH区域地址写来修改OVRAM区域的值,而程序不能通过写OVRAM区域地址来修改OVRAM区域。可以通过OVRAM区域地址读取数据,这样我们在标定查询的时候直接从OVRAM区域读取,在修改标定数据是,通过写FLASH地址来修改OVRAM区域,最后我们把OVRAM中的数据烧录到FLASH中区。系统上电首先将DFLASH区中的数据拷贝到OVRAM区域中,然后通过配置重定向寄存器将OVRAM定向到DFLASH0的前8K单元,寄存器配置如下所示。在CANAPE标定数据的地址map使用DFLASH区域变量的地址map。void ovram_set

6、(void)将DFLASH中的数据拷贝到OVRAM区域ubyte* pDflash0 = (ubyte*)0xafe00000;ubyte* pOvram = (ubyte*)0xafe80000;/OVC_OCON |= OVC_OCON_OVSTP;/ 停止overlay/ 把DFLASH中的标定数据拷贝到OVRAM中for(int i = 0;i < 0x2000;i+)*pOvram+ = *pDflash0+;OVERLAY Block0重定向到0xAFE00000,大小是2K,overlay基地址是0xAFE80000/ 目标地址配置OVC_OTAR0 = 0Xafe0000

7、0;/ Overlay基地址配置OVC_RABR0 = 0X8FE80000;/ MASK寄存器配置OVC_OMASK0 = 0X0FFFF800;OVERLAY Block1重定向到0xAFE00800,大小是2K,overlay基地址是0xAFE80800/ 目标地址配置OVC_OTAR1 = 0Xafe00800;/ Overlay基地址配置OVC_RABR1 = 0X8FE80800;/ MASK寄存器配置OVC_OMASK1 = 0X0FFFF800;OVERLAY Block2重定向到0xAFE01000,大小是2K,overlay基地址是0xAFE81000/ 目标地址配置OVC

8、_OTAR2 = 0Xafe01000;/ Overlay基地址配置OVC_RABR2 = 0X8FE81000;/ MASK寄存器配置OVC_OMASK2 = 0X0FFFF800;OVERLAY Block3重定向到0xAFE01800,大小是2K,overlay基地址是0xAFE81800/ 目标地址配置OVC_OTAR3 = 0Xafe01800;/ Overlay基地址配置OVC_RABR3 = 0X8FE81800;/ MASK寄存器配置OVC_OMASK3 = 0X0FFFF800;OVC_OCON = 0x0000000f | OVC_OCON_OVSTRT;CCP协议介绍1、

9、 CCP通信方式CCP协议采用主从通信方式,如下图所示。根据CCP协议,一个主设备可以通过CAN总线与多个从设备相连,每个从设备均有其特定地址。主设备通过每个ECU的地址,与其建立一对一的关系。按CCP协议,在某一时刻只有一个从设备与主设备建立连接并进行通信。逻辑连接CAN总线 CCP协议中MCD与ECU的通信又可具体分为以下两种。Polling模式:这种通信模式可通俗的理解为一问一答的通信模式,即通过主设备先问,从设备回答,两者之间不断交互来实现主、从设备间的通信和数据交换。在这种模式下,当主设备与从设备建立逻辑连接后,主设备与从设备的每次通信都是通过主设备首先发送一条请求命令,请求从设备执

10、行某项操作,或请求其内部数据。从设备收到命令后,执行相应操作,通过返回一帧消息,提供主设备请求的数据及命令执行情况代码。这种通信方式实现起来比较简单,占用ECU内存资源少,但效率较低。DAQ模式:与Polling模式相对应的是DAQ模式,其英文全称为Data Acquisition Mode。不同于Polling模式一问一答的通信机制,DAQ模式下从设备可以脱开主设备的控制,按一定的通信周期自主向主设备上传数据。这种方式数据上传效率高,但实现起来复杂,尤其当所需上传数据量交大时,会占用ECU较多RAM空间。2、 CCP消息格式由于CCP协议遵从CAN通信规范,因此基于CCP的通信都是以CAN报

11、文的形式来实现。为了规范,CCP消息统一采用8个字节的数据场。CCP协议的实现只依赖两则CAN消息:命令接收对象(Command Receive Object,CRO)和数据传输对象(Data Transmission Object,DTO)。命令接收对象(CRO)是主设备向ECU发送的消息对象,包括命令代码及命令参数,以下为CRO消息对象的结构。位置类型描述0字节命令代码CMD1字节命令序号CTR27字节命令参数域CCP协议共规定了28条命令。从设备接收到CRO后,通过相应的CMD代码解释受到的命令并执行。数据传输对象(DTO)是从设备反馈给主设备的消息。按DTO的不同用途,DTO又可分为三

12、类:l 命令返回消息CRM-DTOCRM-DTO发生在Polling通信模式下,是针对主设备发送的CRO的反馈消息。当从设备收到主设备发送的一则CRO后,按照CCP规定,必须反馈一则DTO,这则DTO就称为CRM-DTO。l 事件消息(Event Message-DTO)事件消息是党ECU内部发生错误时,由ECU自主发送。这类DTO不需要事先收到主设备的CRO,一旦ECU发生内部错误,会自动向主设备发送一则事件消息,报告内部发生的情况,请求主设备暂停当前工作并进行处理。l DAQ-DTO(Data Acquisition-DTO)3、 CCP命令代码简介CCP协议共规定了28条命令,其中11条

13、为必选命令,17条为可选命令。由于CCP是开放协议,因此用户可之选其中一部分予以实现。每条命令在CCP协议中均有自己独立的CMD代码,从设备即通过CRO中的CMD代码来对收到的CCP命令进行解释并执行。下表描述了28条命令代码。命令CMD代码ACK应答时间(ms)备注CONNECT0x0125GET_CCP_VERSION0x1B25EXCHANGE_ID0x1725GET_SEED0x1225可选ULOCK0x1325可选SET_MTA0x0225DNLOAD0x0325DNLOAD_60x2325可选UPLOAD0x0425SHORT_UP0x0F25可选SELECT_CAL_PAGE0x

14、1125可选GET_DAQ_SIZE0x1425SET_DAQ_PTR0x1525WRITE_DAQ0x1625START_STOP0x0625DISCONNECT0x0725SET_S_STATUS0x0C25可选GET_S_STATUS0x0D25可选BUILD_CHECKSUM0x0E30000可选CLEAR_MEMORY0x1030000可选PROGRAM0x18100可选PROGRAM_60x22100可选MOVE0x1930000可选TEST0x0525可选GET_ACTIVE_CAL_PAGE0x0925可选START_STOP_ALL0x0825可选DIG_SERVICE0x2

15、0500可选ACTION_SERVICE0x215000可选4、 ERR代码列表CRM-DTO的ERR代码知识了CRO命令的执行情况,事件消息中的ERR代码表示ECU内部发生的错误类型,CCP协议对ERR代码的定义见下表。代码描述错误等级备注0x00确认/无错误-0x01DAQ处理器超载C0无(等待直到ACK或时间溢出)0x10指令处理器忙C1无(等待直到ACK或时间溢出)0x11DAQ处理器忙C1无(等待直到ACK或时间溢出)0x12内部超时C1无(等待直到ACK或时间溢出)0x18请求密钥C1无(等待直到ACK或时间溢出)0x19阶段状态请求C1无(等待直到ACK或时间溢出)0x20冷启动

16、请求C2冷启动0x21标定数据初始化请求C2标定数据初始化0x22DAQ列表初始化请求C2DAQ列表初始化0x23更新代码请求C2(冷启动)0x30未知指令C3(错误)0x31指令句法错误C3错误0x32参数超出许可范围C3错误0x33访问被拒绝C3错误0x34超载C3错误0x35访问锁址保护C3错误0x36资源/功能暂不可用C3错误错误登记分类及措施级别描述措施重试次数超时无握手信号重试2C0警告-C1伪错误(comm错误,忙.)等待(ACK或超时)2C2可修复的(温度、掉电.)初始化1C3不可修复的(重启,超载.)终止-5、 CCP指令1) 连接指令(CONNECT)按照CCP协议,主设备

17、必须先与总线上的某个从设备建立逻辑连接,才能与其开始通信。CONNECT命令就是主设备用来与从设备建立逻辑连接的,其中包括了从设备ECU的站地址。下面是CONNECT命令的CRO数据结构。位置类型描述0字节命令代码=0x011字节命令序号=CTR2,3字ECU地址(Intel格式,低字节在前)47字节无效针对CONNECT命令反馈DTO数据结构如下表所示。位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR47字节无效2) 交换站标识符(EXCHANGE_ID)EXCHANGE_ID命令的CRO数据结构,如下所示位置类型描述0字节命令代码=0x171字

18、节命令序号=CTR2字节CCP主设备ID信息(可选,根据实际应用情况而定)37字节无效应答DTO数据结构。位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR3字节从设备ID标识符的长度4字节从设备ID数据类型5字节资源可用状态字节6字节资源保护状态字节7字节无效从设备收到该命令后,会自动将地址指针定义到存放ID标识符的起始地址,主设备随后就以该起始地址使用UPLOAD指令上传ID信息。3) 申请密钥(GET_SEED)GET_SEED命令的CRO数据结构位置类型描述0字节命令代码=0x121字节命令序号=CTR2字节请求从设备开放功能37字节无效应答

19、DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR3字节请求功能当前受保护状态47字节密钥数据4) 接触保护(UNLOCK)UNLOCK命令的CRO数据结构位置类型描述0字节命令代码=0x131字节命令序号=CTR27字节钥匙应答DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR3字节各项功能当前状态47字节无效5) 设置MTA地址(SET_MTA)MTA地址的英文全称是Memory Transfer Address,相当于一个地址指针的概念。CCP协议定义了两个MTA地址:MT

20、A0与MTA1,分别针对不同的命令。DNLOAD,UPLOAD、DNLOAD_6、SELECT_CAL_PAGE、CLEAR_MEMORY、PROGRAM及PROGRAM_6命令使用MTA0,MOVE命令使用MTA1,SET_MTA命令CRO数据结构如下所示。位置类型描述0字节命令代码=0x021字节命令序号=CTR2字节MTA序号(0或1)3字节地址偏移47无符号长整型地址应答DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR37字节无效6) 数据下载(DNLOAD)DNLOAD指令负责将CRO中的数据下载到ECU中,起始地址为先前设

21、定的MTA0,下载完毕后MTA0指针自增,自增的字节数为下载数据的字节数。DNLOAD命令的CRO数据结构,如下所示。位置类型描述0字节命令代码=0x031字节命令序号=CTR2字节下载数据大小(字节数)37字节下载数据(最多为5个字节)应答DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR3字节MTA0偏移量(自增后)47无符号长整型MTA0地址(自增后)7) 6字节数据下载(DNLOAD_6)该命令的功能与DNLOAD命令相同,区别在于DNLOAD命令一次下载数据可为15个字节不等。DNLOAD_6下载固定为6字节大小的数据,起始地

22、址为MTA0,下载结束后MTA0指针会自增6个字节。DNLOAD_6的CRO数据结构如下所示。位置类型描述0字节命令代码=0x231字节命令序号=CTR27字节下载数据(6个字节)应答DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR3字节MTA0偏移量(自增后)47无符号长整型MTA0地址(自增后)8) 数据上传(UPLOAD)主设备通过UPLOAD命令,请求从设备以MTA0起始地址,将命令中规定字节数的数据上传。随后MTA0指针自动增加相应的字节数(上传的字节数)。UPLOAD命令的CRO数据结构,如下所示。位置类型描述0字节命令代

23、码=0x231字节命令序号=CTR2字节请求上传的数据大小(字节数)37字节无效应答DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR37字节所请求的数据9) 数据短上传(SHORT_UP)该命令的功能同UPLOAD命令,同样用于主设备要求从设备上传数据。区别在于UPLOAD命令中上传数据的起始地址是MTA0,SHORT_UP中的起始地址由命令本身指定,从设备按该起始地址上传数据。上传后MTA0指针保持不变。SHORT_UP命令的CRO数据结构如下所示。位置类型描述0字节命令代码=0x0F1字节命令序号=CTR2字节请求上传的数据大小(

24、15字节)3字节地址偏移量47无符号长整型无效应答DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR37字节所请求的数据10) 选择标定数据页(SELECT_CAL_PAGE) 该命令的功能取决于ECU的内部实现。执行该条命令后,先前设置的MTA0地址将会自动指向该命令激活的标定页。SELECT_CAL_PAGE命令的CRO数据结构如下所示。位置类型描述0字节命令代码=0x111字节命令序号=CTR27字节无效应答DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR37字节无效11

25、) 获取DAQ列表大小(GET_DAQ_SIZE) 该命令用来湖区某个特定DAQ列表的大小,即其中ODT列表的个数,并清空当前DAQ列表内的数据,为下次DAQ通信做准备。同时该命令还对DAQ列表进行初始化并终止该DAQ列表当前的通信。GET_DAQ_SIZE命令的CRO数据结构如下所示。位置类型描述0字节命令代码=0x141字节命令序号=CTR2字节DAQ列表号3字节无效47无符号长整型该DAQ列表,其所对应的DTO的CAN ID标识符应答DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR3字节DAQ列表大小(ODT列表数)47字节无效

26、12) 设置DAQ列表指针(SET_DAQ_PTR) 在进行DAQ模式通信前,必须先对DAQ列表进行配置,经数据写入到相应DAQ列表的ODT元素中。SET_DAQ_PTR命令用来为写入DAQ列表数据设置入口地址指针。SET_DAQ_PTR命令的CRO数据结构如下所示。位置类型描述0字节命令代码=0x141字节命令序号=CTR2字节DAQ列表号3字节ODT序号4字节该ODT中的第几个元素57字节无效应答DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR37字节无效13) 写入DAQ列表(WRITE_DAQ) 在进行DAQ模式通信前,必须先

27、对DAQ列表进行配置,将所需上传的数据先写入DAQ列表的ODT列表中,该条命令的功能是将数据写入DAQ列表,先前由SET_DAQ_PTR命令所定义的地址即为该条命令的数据写入地址。在该命令中,一次写入的数据称为一个DAQ元素。WRITE_DAQ命令的CRO数据结构如下所示。位置类型描述0字节命令代码=0x161字节命令序号=CTR2字节DAQ元素的大小(1,2或4)3字节DAQ元素的地址偏移47字节DAQ元素的地址应答DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR37字节无效14) 开始/终止数据传输(START_STOP) 该条命

28、令用于DAQ通信模式,其作用是开始或终止某个DAQ列表的数据上传。START_STOP命令的CRO数据结构如下所示。位置类型描述0字节命令代码=0x061字节命令序号=CTR2字节模式:开始/终止/准备0-终止,1-开始,2-准备3字节DAQ列表号4字节最后一个ODT序号5字节事件通道号(对应上传的周期)67字节传输速率预分频值应答DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR37字节无效15) 断开(DISCONNECT)DISCONNECT命令的CRO数据结构位置类型描述0字节命令代码=0x071字节命令序号=CTR2字节命令参

29、数:0-暂时断开,1-终止3字节无效4,5字节ECU地址6,7字节无效应答DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR37字节无效16) 设置当前通信状态(SET_S_STATUS)该命令的CRO数据结构位置类型描述0字节命令代码=0x0C1字节命令序号=CTR2字节状态字节(见下表)37字节无效位置名称描述0CAL标定数据初始化完成1DAQDAQ列表初始化完成2RESUME请求ECU断点时自动保存DAQ列表设置,在下次启动时再自动启动DAQ列表35保留保留6STORE请求ECU断电时保存标定数据7RUN正处于运行状态应答DTO数

30、据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR37字节无效17) 获取当前通信状态(GET_S_STATUS)该命令的CRO数据结构。位置类型描述0字节命令代码=0x0D1字节命令序号=CTR27字节无效应答DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR3字节状态字节4字节其他状态信息限定5字节其他状态信息(可选)18) 建立checksum表(BUILD_CHKSUM)Checksum是CCP提供的一个可选功能。为了提高效率,在每次对ECU进行标定前,CCP支持先对需要进行标定

31、的内存区域进行checksum算法,如果checksum结果与下载数据不一致,表明内存中的数据与标定数据不同,主设备才开始下载标定数据。BUILD_CHKSUM命令的CRO数据结构位置类型描述0字节命令代码=0x0E1字节命令序号=CTR25字节Block大小6,7字节无效应答DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR3字节Checksum数据长度47字节Checksum数据19) 清空内存(CLEAR_MEMORY)该命令的CRO数据结构如下所示。位置类型描述0字节命令代码=0x101字节命令序号=CTR25字节内存区域大小6

32、,7字节无效应答DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR37字节无效20) 编程(PROGRAM)不同与DNLOAD命令,PROGRAM命令用以将一块大小确定的数据少些到ECU的非易失性存储器中,起始地址为MTA0。PROGRAM命令的CRO数据结构如下所示。位置类型描述0字节命令代码=0x181字节命令序号=CTR2字节数据大小37字节数据(最多为5个)应答DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR3字节MTA0偏移(自增后)47字节MTA0地址(自增后)21

33、) 6字节数据编程(PROGRAM_6)该命令的CRO数据结构位置类型描述0字节命令代码=0x181字节命令序号=CTR27字节数据应答DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR3字节MTA0偏移(自增后)47字节MTA0地址(自增后)22) 内存转移(MOVE)MOVE可将固定长度的一块内存区域中的内容由MTA0起始地址出转移到MTA1起始地址处MOVE命令的CRO数据结构位置类型描述0字节命令代码=0x181字节命令序号=CTR2字节数据大小37字节数据(最多为5个)应答DTO数据结构位置类型描述0字节Packet ID:0xFF1字节命令返回代码=ERR2字节命令序号=CTR3字节MTA0偏移(自增后)47字节MTA0地址(自增后)23) 诊断服务(DIAG_SERVICE)该命令使从设备自动执行主设备请求的诊断服务,MTA0会自动重新定位,主设备从新的MTA0起始地址处获取诊断服务的反馈信息。该命令的CRO数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论