TechnicalReference_XCPs

MICROSAR XCP
Technical Reference
Version 2.0.0
Authors
Andreas Herkommer
Status
Released


Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Document Information
History
Author
Date
Version
Remarks
Andreas Herkommer 2017-02-13
1.00.00
Initial Version
Andreas Herkommer 2017-11-14
2.00.00
Added new API Xcp_SetStimMode
Reference Documents
No.
Source
Title
Version
[1] AUTOSAR
AUTOSAR_SWS_XCP.pdf
2.3.0
[2] AUTOSAR
AUTOSAR_SWS_DET.pdf
3.4.1
[3] AUTOSAR
AUTOSAR_SWS_DEM.pdf
5.2.0
[4] AUTOSAR
AUTOSAR_BasicSoftwareModules.pdf
V1.0.0
[5] ASAM
ASAM_XCP_Part2-Protocol-Layer-Specification_V1-1-
V1.1
0.pdf
Scope of the Document
This document describes the features, APIs, and integration of the XCP Protocol Layer.
This document does not cover the XCP Transport Layers for CAN, FlexRay and Ethernet,
which are available at Vector Informatik.
Further information about XCP on CAN, FlexRay and Ethernet Transport Layers can be
found in their documentation.
Please also refer to “The Universal Measurement and Calibration Protocol Family”
specification by ASAM e.V.
The XCP Protocol Layer is a hardware independent protocol that can be ported to almost
any hardware. Due to there are numerous combinations of micro controllers, compilers
and memory models it cannot be guaranteed that it will run properly on any of the above
mentioned combinations.
Please note that in this document the term Application is not used strictly for the user
software but also for any higher software layer, like e.g. a Communication Control Layer.
Therefore, Application refers to any of the software components using XCP.
The API of the functions is described in a separate chapter at the end of this document.
Info
The source code of the XCP Protocol Layer, configuration examples and
documentation are available on the Internet at www.vector-informatik.de in a functional
restricted form.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
2
based on template version 6.0.1


Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Caution
We have configured the programs in accordance with your specifications in the
questionnaire. Whereas the programs do support other configurations than the one
specified in your questionnaire, Vector´s release of the programs delivered to your
company is expressly restricted to the configuration you have specified in the
questionnaire.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
3
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Contents
1
Component History .................................................................................................... 10
2
Introduction................................................................................................................. 11
2.1
Architecture Overview ...................................................................................... 11
3
Functional Description ............................................................................................... 13
3.1
Features .......................................................................................................... 13
3.1.1
Deviations ........................................................................................ 13
3.1.2
Additions/ Extensions ....................................................................... 15
3.2
Initialization ...................................................................................................... 15
3.3
States .............................................................................................................. 15
3.4
Main Functions ................................................................................................ 16
3.5
Block Transfer Communication Model .............................................................. 16
3.6
Slave Device Identification ............................................................................... 17
3.6.1
XCP Station Identifier ....................................................................... 17
3.6.2
XCP Generic Identification ............................................................... 17
3.7
Seed & Key ...................................................................................................... 17
3.8
Checksum Calculation ..................................................................................... 18
3.8.1
Custom CRC calculation .................................................................. 18
3.9
Memory Access by Application ......................................................................... 18
3.9.1
Memory Read and Write Protection ................................................. 18
3.9.2
Special use case “Type Safe Copy” ................................................. 19
3.10
Event Codes .................................................................................................... 19
3.11
Service Request Messages ............................................................................. 20
3.12
User Defined Command ................................................................................... 20
3.13
Synchronous Data Transfer ............................................................................. 20
3.13.1
Synchronous Data Acquisition (DAQ) ............................................... 20
3.13.2
DAQ Timestamp ............................................................................... 21
3.13.3
Power-Up Data Transfer .................................................................. 21
3.13.4
Data Stimulation (STIM) ................................................................... 22
3.13.5
Bypassing ........................................................................................ 22
3.13.6
Data Acquisition Plug & Play Mechanisms ....................................... 22
3.13.7
Event Channel Plug & Play Mechanism ........................................... 23
3.13.8
Send Queue ..................................................................................... 23
3.13.9
Data consistency .............................................................................. 23
3.14
The Online Data Calibration Model .................................................................. 24
3.14.1
Page Switching ................................................................................ 24
3.14.2
Page Switching Plug & Play Mechanism .......................................... 24
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
4
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
3.14.3
Calibration Data Page Copying ........................................................ 24
3.14.4
Freeze Mode Handling ..................................................................... 24
3.15
Flash Programming .......................................................................................... 25
3.15.1
Flash Programming by the ECU’s Application .................................. 25
3.15.2
Flash Programming Plug & Play Mechanism ................................... 25
3.15.3
Flash Programming with a Flash Kernel ........................................... 26
3.16
Multi Core Support ........................................................................................... 26
3.16.1
Type Safe Copy ............................................................................... 26
3.16.2
DAQ/STIM with Multi Core ............................................................... 27
3.17
En- / Disabling the XCP module ....................................................................... 28
3.18
XCP measurement during the post event time ................................................. 28
3.19
Error Handling .................................................................................................. 29
3.19.1
Development Error Reporting ........................................................... 29
3.19.2
Production Code Error Reporting ..................................................... 30
4
Integration ................................................................................................................... 31
4.1
Scope of Delivery ............................................................................................. 31
4.1.1
Static Files ....................................................................................... 31
4.1.2
Templates – user modifiable ............................................................. 31
4.1.3
Dynamic Files .................................................................................. 31
4.1.4
Generated a2l files ........................................................................... 31
4.2
Critical Sections ............................................................................................... 32
4.2.1
XCP_EXCLUSIVE_AREA_0 ............................................................ 32
4.2.2
XCP_EXCLUSIVE_AREA_1 ............................................................ 32
4.2.3
XCP_EXCLUSIVE_AREA_2 ............................................................ 32
4.3
Memory Mapping ............................................................................................. 33
5
API Description ........................................................................................................... 34
5.1
Type Definitions ............................................................................................... 34
5.2
Services provided by XCP ............................................................................... 35
5.2.1
Xcp_InitMemory ............................................................................... 35
5.2.2
Xcp_Init ............................................................................................ 35
5.2.3
Xcp_Event ....................................................................................... 36
5.2.4
Xcp_StimEventStatus ...................................................................... 36
5.2.5
Xcp_MainFunction ........................................................................... 37
5.2.6
Xcp_SendEvent ............................................................................... 38
5.2.7
Xcp_PutChar.................................................................................... 38
5.2.8
Xcp_Print ......................................................................................... 39
5.2.9
Xcp_Disconnect ............................................................................... 39
5.2.10
Xcp_SendCrm .................................................................................. 40
5.2.11
Xcp_GetVersionInfo ......................................................................... 40
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
5
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
5.2.12
Xcp_ModifyProtectionStatus ............................................................ 41
5.2.13
Xcp_GetSessionStatus .................................................................... 42
5.2.14
Xcp_GetXcpDataPointer .................................................................. 42
5.2.15
Xcp_SetStimMode ........................................................................... 43
5.3
Services provided by the XCP Protocol Layer and called by the XCP
Transport Layer ................................................................................................ 43
5.3.1
Xcp_TlRxIndication .......................................................................... 43
5.3.2
Xcp_TlTxConfirmation ...................................................................... 44
5.3.3
Xcp_SetActiveTl ............................................................................... 44
5.3.4
Xcp_GetActiveTl .............................................................................. 45
5.4
XCP Transport Layer Services called by the XCP Protocol Layer .................... 46
5.4.1
<Bus>Xcp_Send .............................................................................. 46
5.4.2
<Bus>Xcp_SendFlush ..................................................................... 47
5.4.3
<Bus>Xcp_TlService ........................................................................ 47
5.5
Application Services called by the XCP Protocol Layer .................................... 48
5.5.1
XcpAppl_GetTimestamp .................................................................. 49
5.5.2
XcpAppl_GetPointer......................................................................... 49
5.5.3
XcpAppl_GetIdData ......................................................................... 50
5.5.4
XcpAppl_GetSeed ........................................................................... 51
5.5.5
XcpAppl_Unlock ............................................................................... 51
5.5.6
XcpAppl_CalibrationWrite ................................................................ 52
5.5.7
XcpAppl_MeasurementRead ........................................................... 53
5.5.8
XcpAppl_CheckReadAccess ............................................................ 53
5.5.9
XcpAppl_CheckProgramAccess....................................................... 54
5.5.10
XcpAppl_UserService ...................................................................... 54
5.5.11
XcpAppl_OpenCmdIf ....................................................................... 55
5.5.12
XcpAppl_SendStall .......................................................................... 55
5.5.13
XcpAppl_DisableNormalOperation ................................................... 56
5.5.14
XcpAppl_StartBootLoader ................................................................ 57
5.5.15
XcpAppl_Reset ................................................................................ 57
5.5.16
XcpAppl_ProgramStart .................................................................... 58
5.5.17
XcpAppl_FlashClear ........................................................................ 58
5.5.18
XcpAppl_FlashProgram ................................................................... 59
5.5.19
XcpAppl_DaqResume ...................................................................... 59
5.5.20
XcpAppl_DaqResumeStore ............................................................. 60
5.5.21
XcpAppl_DaqResumeClear ............................................................. 61
5.5.22
XcpAppl_CalResumeStore............................................................... 61
5.5.23
XcpAppl_GetCalPage ...................................................................... 62
5.5.24
XcpAppl_SetCalPage ....................................................................... 62
5.5.25
XcpAppl_CopyCalPage .................................................................... 63
5.5.26
XcpAppl_SetFreezeMode ................................................................ 64
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
6
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
5.5.27
XcpAppl_GetFreezeMode ................................................................ 65
5.5.28
XcpAppl_CalculateChecksum .......................................................... 65
5.5.29
XcpAppl_ConStateNotification ......................................................... 66
5.5.30
XcpAppl_MemCpy ........................................................................... 66
5.6
Services used by XCP ..................................................................................... 67
6
Configuration .............................................................................................................. 68
6.1
Configuration Variants ...................................................................................... 68
7
Glossary and Abbreviations ...................................................................................... 69
7.1
Abbreviations ................................................................................................... 69
8
Contact ........................................................................................................................ 71
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
7
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Illustrations
Figure 2-1
AUTOSAR 4.1 Architecture Overview ....................................................... 11
Figure 2-2
Interfaces to adjacent modules of the XCP ............................................... 12
Figure 3-1
Connection State Machine ........................................................................ 16
Figure 3-2
Data consistency ...................................................................................... 23
Figure 3-3
Application of Xcp_Event function on Multi Core systems ......................... 28
Tables
Table 1-1
Component history.................................................................................... 10
Table 3-1
Supported AUTOSAR standard conform features ..................................... 13
Table 3-2
Deviations from AUTOSAR standard conform features ............................. 13
Table 3-3
Deviations from ASAM standard conform features .................................... 15
Table 3-4
Features provided beyond the AUTOSAR standard .................................. 15
Table 3-5
States ....................................................................................................... 15
Table 3-6
Event codes .............................................................................................. 20
Table 3-7
Service IDs ............................................................................................... 29
Table 3-8
Errors reported to DET ............................................................................. 30
Table 3-9
Errors reported to DEM ............................................................................. 30
Table 4-1
Static files ................................................................................................. 31
Table 4-2
Templates ................................................................................................. 31
Table 4-3
Generated files ......................................................................................... 31
Table 5-1
Type definitions ......................................................................................... 34
Table 5-2
Xcp_ChannelStruct ................................................................................... 34
Table 5-3
Xcp_InitMemory ........................................................................................ 35
4
Xcp_Init .................................................................................................... 35
Table 5-5
Xcp_Event ................................................................................................ 36
Table 5-6
Xcp_StimEventStatus ............................................................................... 37
Table 5-7
Xcp_MainFunction .................................................................................... 37
Table 5-8
Xcp_SendEvent ........................................................................................ 38
Table 5-9
Xcp_PutChar ............................................................................................ 39
Table 5-10
Xcp_Print .................................................................................................. 39
Table 5-11
Xcp_Disconnect ........................................................................................ 40
Table 5-12
Xcp_SendCrm .......................................................................................... 40
Table 5-13
Xcp_GetVersionInfo .................................................................................. 41
Table 5-14
Xcp_ModifyProtectionStatus ..................................................................... 41
Table 5-15
Xcp_GetSessionStatus ............................................................................. 42
Table 5-16
Xcp_GetXcpDataPointer ........................................................................... 43
Table 5-17
Xcp_SetStimMode .................................................................................... 43
Table 5-18
Xcp_TlRxIndication ................................................................................... 44
Table 5-19
Xcp_TlTxConfirmation .............................................................................. 44
Table 5-20
Xcp_SetActiveTl ....................................................................................... 45
Table 5-21
Xcp_GetActiveTl ....................................................................................... 46
Table 5-22
<Bus>Xcp_Send ....................................................................................... 46
Table 5-23
<Bus>Xcp_SendFlush .............................................................................. 47
Table 5-24
<Bus>Xcp_TlService ................................................................................ 48
Table 5-25
XcpAppl_GetTimestamp ........................................................................... 49
Table 5-26
XcpAppl_GetPointer ................................................................................. 50
Table 5-27
XcpAppl_GetIdData .................................................................................. 51
Table 5-28
XcpAppl_GetSeed .................................................................................... 51
Table 5-29
XcpAppl_Unlock ....................................................................................... 52
Table 5-30
XcpAppl_CalibrationWrite ......................................................................... 52
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
8
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Table 5-31
XcpAppl_MeasurementRead .................................................................... 53
Table 5-32
XcpAppl_CheckReadAccess .................................................................... 54
Table 5-33
XcpAppl_CheckProgramAccess ............................................................... 54
Table 5-34
XcpAppl_UserService ............................................................................... 55
Table 5-35
XcpAppl_OpenCmdIf ................................................................................ 55
Table 5-36
XcpAppl_SendStall ................................................................................... 56
Table 5-37
XcpAppl_DisableNormalOperation ........................................................... 56
Table 5-38
XcpAppl_StartBootLoader ........................................................................ 57
Table 5-39
XcpAppl_Reset ......................................................................................... 58
Table 5-40
XcpAppl_ProgramStart ............................................................................. 58
Table 5-41
XcpAppl_FlashClear ................................................................................. 59
Table 5-42
XcpAppl_FlashProgram ............................................................................ 59
Table 5-43
XcpAppl_DaqResume .............................................................................. 60
Table 5-44
XcpAppl_DaqResumeStore ...................................................................... 61
Table 5-45
XcpAppl_DaqResumeClear ...................................................................... 61
Table 5-46
XcpAppl_CalResumeStore ....................................................................... 62
Table 5-47
XcpAppl_GetCalPage ............................................................................... 62
Table 5-48
XcpAppl_SetCalPage ............................................................................... 63
Table 5-49
XcpAppl_CopyCalPage ............................................................................ 64
Table 5-50
XcpAppl_SetFreezeMode ......................................................................... 64
Table 5-51
XcpAppl_GetFreezeMode......................................................................... 65
Table 5-52
XcpAppl_CalculateChecksum ................................................................... 66
Table 5-53
XcpAppl_ConStateNotification .................................................................. 66
Table 5-54
XcpAppl_MemCpy .................................................................................... 67
Table 5-55
Services used by the XCP ........................................................................ 67
Table 7-1
Abbreviations ............................................................................................ 70
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
9
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
1 Component History
The component history gives an overview over the important milestones that are
supported in the different versions of the component.
Component Version New Features
1.00.xx
Initial Version of re-factored AR4 Protocol Layer.
2.00.xx
Series production of MultiCore feature.
3.00.xx
Bugfixes and Continuous STIM feature.
Table 1-1 Component history
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
10
based on template version 6.0.1


Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
2 Introduction
This document describes the functionality, API and configuration of the AUTOSAR BSW
module XCP as specified in [1].
Supported AUTOSAR Release*:
4
Supported Configuration Variants:
pre-compile
Vendor ID:
XCP_VENDOR_ID
30 decimal
(= Vector-Informatik,
according to HIS)
Module ID:
XCP_MODULE_ID
212 decimal
(according to ref. [4])
* For the detailed functional specification please also refer to the corresponding AUTOSAR SWS.
2.1
Architecture Overview
The following figure shows where the XCP is located in the AUTOSAR architecture.
Figure 2-1 AUTOSAR 4.1 Architecture Overview
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
11
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
The following figure shows the interfaces to adjacent modules of the XCP. The interfaces
of the XCP Protocol Layer and the application call-back header are described in chapter 5.
class Module Structure Adj acency
Must be implemented
Application
by the user
XcpAppl
XCP
DET
XcpOnCan
XcpOnFr
XcpOnTcpIp
CanIf
FrIf
SoAd
Figure 2-2 Interfaces to adjacent modules of the XCP
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
12
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
3 Functional Description
3.1
Features
The Universal Measurement and Calibration Protocol (XCP) is standardized by the
European ASAM working committee for standardization of interfaces used in calibration
and measurement data acquisition. XCP is a higher level protocol used for communication
between a measurement and calibration system (MCS, i.e. CANape) and an electronic
control unit (ECU). The implementation supports the ASAM XCP 1.1 Specification.
The AUTOSAR standard functionality is specified in [1], the corresponding features are
listed in the tables
> Table 3-1 Supported AUTOSAR standard conform features
> Table 3-2 Deviations from AUTOSAR standard conform features
> Table 3-3 Deviations from ASAM standard conform features
Vector Informatik provides further XCP functionality beyond the AUTOSAR standard. The
corresponding features are listed in the table
> Table 3-4 Features provided beyond the AUTOSAR standard
The following features specified in [1] are supported:
Supported AUTOSAR Standard Conform Features
ASAM XCP Version 1.1
Table 3-1 Supported AUTOSAR standard conform features
3.1.1
Deviations
The following features specified in [1] are not or only partly supported:
Category
Description
ASR
Version
Functional The following features are not supported:
4.2.2
• The command GET_SLAVE_ID
• A CDD as transport layer
API
The following APIs are not provided by XCP:
4.2.2
• Xcp_SetTransmissionMode
API
The API Xcp_<Module>TriggerTransmit is only supported for transport
4.2.2
layer FrIf.
Table 3-2 Deviations from AUTOSAR standard conform features
Category
Description
ASAM
Version
Functional 1.6.4.1.2.4 Get general information on DAQ processor:
1.1
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
13
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
• Bitwise stimulation is not supported
Functional 1.6.4.2 Static DAQ list configuration (stat):
1.1
• Static DAQ lists are not supported; only dynamic DAQ lists are
supported
Functional 1.7.2.3 Interleaved Communication Model:
1.1
• Multiple request messages are not allowed to be transmitted by the
XCP master before receiving the corresponding response
message
Functional 1.6.5.2.4 Set Data Format before Programming:
1.1
• Only the default programming format is supported, therefore the
command PROGRAM_FORMAT is not supported
Functional 1.6.5.2.2 Get specific information for a sector:
1.1
• The command GET_SECTOR_INFO does not return a Program
Sequence Number
Functional 1.6.5.2.7 Program Verify:
1.1
• The command PROGRAM_VERIFY is not supported
Functional Daq configuration:
1.1
• Number of DAQ lists is limited to 0xFF
• Maximum DTO length is limited to 0xFF
• DAQ does not support address extension
• DAQ-list and event channel prioritization is not supported
• DAQ bit offset not supported
• The resume bits in DAQ lists are not set (no indication in response
of command GET_DAQ_LIST_MODE)
Functional 5.1.10 ODT Optimization:
1.2
• The ODT Optimization is not supported
Functional 1.2 Table of Event Codes:
1.1
• XCP does not send any event packet natively. If required, the
implementation has to be added to application
Functional Overload indication by an event is not supported
1.1
Functional 1.3 Table of Service Request Codes (SERV):
1.1
• The Service Request SERV_RESET is not supported
Functional 1.6.1.2.9 Build Checksum over memory range:
1.1
• The checksum type XCP_CRC_16 or XCP_CRC_32 is only supported
if the checksum calculation is forwarded to a AUTOSAR CRC
module
• Maximum checksum block size is 0xFFFF
Functional 1.6.3 Page Switching Commands (PAG):
1.1
• The command GET_PAGE_INFO is not supported
• The command GET_SEGMENT_INFO is not supported
• Only one segment and two pages are supported
Functional Seed and Key:
1.1
• The seed size and key size must be equal or less MAX_CTO-2
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
14
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Functional Consistency only supported on ODT level.
1.1
Functional No other identification field type supported than “absolute ODT number”.
1.1
Table 3-3 Deviations from ASAM standard conform features
3.1.2
Additions/ Extensions
The following features are provided beyond the AUTOSAR standard:
Features Provided Beyond The AUTOSAR Standard
Support of CAN-FD
Support transmission and reception of DTO on multiple cores simultaneously.
Table 3-4 Features provided beyond the AUTOSAR standard
3.2
Initialization
The XCP gets initialized by call of the following services:
• 5.2.1 Xcp_InitMemory
• 5.2.2 Xcp_Init
Xcp_InitMemory has to be called if memory is not initialized by start-up code.
The EcuM takes care of initialization, if no EcuM is used these functions have to be called
by application in correct order.
3.3
States
The XCP’s connection state machine is shown in Figure 3-1, comprises the following
states:
State Name
Description
XCP_CON_STATE_DISCONNECTED In this state neither CTO nor DTO messages can be received or
transmitted, except of the Connect CTO.
XCP_CON_STATE_CONNECTED
In this state communication is fully supported.
XCP_CON_STATE_RESUME
In this state CTO messages (except of Connection CTO) are
rejected, whereas DTO messages can be received and
transmitted.
Table 3-5 States
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
15
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
stm Connection State Machine
Initial
Xcp_Init
Resume Mode
[OFF]
[ON]
DISCONNECTED
Xcp_CmdStd_Connect
CONNECTED
RESUME
Xcp_CmdStd_Connect
Xcp_Disconnect
Figure 3-1 Connection State Machine
The states can be changed by the XCP master by sending the CTOs Connect and
Disconnect. Additionally, the connection can be broken by the service:
• 5.2.9 Xcp_Disconnect
3.4
Main Functions
The Xcp provides a MainFunction:
• 5.2.5 Xcp_MainFunction
It must be called cyclically and performs the following tasks:
> Checksum calculation which is done asynchronously in configurable chunks to prevent
extensive runtime
> Resume Mode Handling
The Xcp MainFunction is normally called by the SchM. If you use a 3rd party SchM you
must configure it accordingly such that the function is called cyclically.
3.5
Block Transfer Communication Model
In the standard communication model, each request packet is responded by a single
response packet or an error packet. To speed up memory uploads, downloads and flash
programming the XCP commands UPLOAD, DOWNLOAD and PROGRAM support a block transfer
mode similar to ISO/DIS 15765-2.
In the Master Block Transfer Mode can the master transmit subsequent (up to the
maximum block size MAX_BS) request packets to the slave without getting any response
in between. The slave responds after transmission of the last request packet of the block.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
16
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
In Slave Block Transfer Mode the slave can respond subsequent (there is no limitation) to
a request without additional requests in between.
The Block Transfer Mode is limited to a block size of 255 Bytes. On bus systems with a
large max CTO (e.g. 254 Bytes) this Mode might be counterproductive and should stay
disabled.
3.6
Slave Device Identification
3.6.1
XCP Station Identifier
The XCP station identifier is an ASCII string that identifies the ECU’s software program
version.
The MCS can interpret this identifier as file name for the ECU database. The ECU
developer should change the XCP station identifier with each program change. This will
prevent database mix-ups and grant the correct access of measurement and calibration
objects from the MCS to the ECU. Another benefit of the usage of the XCP station
identifier is the automatic assignment of the correct ECU database at program start of the
MCS via the plug & play mechanism. The plug & play mechanism prevents the user from
selecting the wrong ECU database.
3.6.2
XCP Generic Identification
The XCP provides a generic mechanism for identification by the GET_ID command. For this
purpose a call-back exist which can be implemented by the user to provide the requested
information (see 5.5.3 XcpAppl_GetIdData).
3.7
Seed & Key
The seed and key feature allows individual access protection for calibration, flash
programming, synchronous data acquisition and data stimulation. The MCS requests a
seed (a few data bytes) from the ECU and calculates a key based on a proprietary
algorithm and sends it back to the ECU.
If Seed & Key is enabled in the configuration tool the following APIs need to be
implemented by the user:
• 5.5.4 XcpAppl_GetSeed
• 5.5.5 XcpAppl_Unlock
The XcpAppl_GetSeed call-back function returns a seed that is transferred to the MCS.
The XcpAppl_Unlock call-back function has to verify a received key based on the seed
and then return the resource that shall be unlocked.
The protection state can also individually be modified by the application. The following
service can be used for this purpose:
• 5.2.12 Xcp_ModifyProtectionStatus
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
17
based on template version 6.0.1


Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Note
Annotation for the usage of CANape:
The calculation of the key is done in a DLL, which is developed by the ECU
manufacturer and which must be located in the EXEC directory of CANape. CANape
can access the ECU only if the ECU accepts the key. If the key is not valid, the ECU
stays locked.
3.8
Checksum Calculation
The XCP Protocol Layer supports calculation of a checksum over a specific memory
range. The XCP Protocol Layer supports all XCP ADD algorithms and the CRC16CCITT
checksum calculation algorithm. If the AUTOSAR CRC Module is used also the XCP
CRC32 algorithm can be used.
If checksum calculation is enabled the background task has to be called cyclically.
3.8.1
Custom CRC calculation
The Protocol Layer also allows the calculation of the CRC by the application. For this the
call-back is called:
• 5.5.28 XcpAppl_CalculateChecksum
This call-back can either calculate the checksum synchronously and return XCP_CMD_OK or
it can trigger the calculation and return XCP_CMD_PENDING for asynchronous calculation of
the checksum. In each case the response frame has to be assembled.
3.9
Memory Access by Application
Memory access to measure or to calibrate variables is performed by two call-backs that
can be modified by the user to his needs. Please note that these API are only used for
polling access by default. DAQ/STIM uses direct memory access out of performance
reasons.
DAQ/STIM
access
via
these
call-backs
can
be
enabled
by
/MICROSAR/Xcp/XcpGeneral/XcpDAQMemAccessByApplication.
The following call-backs are called by the Protocol Layer whenever a memory access is
performed:
• 5.5.6 XcpAppl_CalibrationWrite
• 5.5.7 XcpAppl_MeasurementRead
These APIs can be used to perform the memory access synchronously, asynchronously
(e.g. for EEPROM access), and they can deny the memory access, depending on the
return value.
3.9.1
Memory Read and Write Protection
Memory protection can easily be performed by the two above mentioned call-backs
returning XCP_ERR_ACCESS_DENIED.
Additionally the configuration switch
/MICROSAR/Xcp/XcpCmdConfig/XcpStandard/XcpMemoryReadProtection enables the call-
back:
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
18
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
• 5.5.8 XcpAppl_CheckReadAccess
This call-back is required for other services like CRC calculation to check the requested
memory size beforehand.
As Flash programming uses a different memory access mechanism, a different set of call-
backs is used.
The configuration switch
/MICROSAR/Xcp/XcpCmdConfig/XcpProgramming/XcpProgrammingWriteProtection enables
the call-back:
• 5.5.9 XcpAppl_CheckProgramAccess
This call-back can be used to check the memory range whenever a flash segment is
cleared or programmed.
3.9.2
Special use case “Type Safe Copy”
The above mentioned APIs will also be used if the feature “Type Safe Copy” is enabled. If
this is the case polling as well as DAQ/STIM measurement will use these functions to
read/write data. The template code for these functions performs read/write access in an
atomic way for basic data types (e.g. uint16 / uint32).
3.10 Event Codes
The slave device may report events by sending asynchronous event packets (EV), which
contain event codes, to the master device. The transmission is not guaranteed due to the
fact that these event packets are not acknowledged.
The transmission of event codes is enabled with the configuration switch
/MICROSAR/Xcp/XcpCmdConfig/XcpAsynchMessage/XcpEventCodes. The transmission is done
by the service:
• 5.2.6 Xcp_SendEvent.
The event codes can be found in the following table.
Event
Code Description
XCP_EVC_RESUME_MODE
0x00
The slave indicates that it is starting in RESUME
mode.
XCP_EVC_CLEAR_DAQ
0x01
The slave indicates that the DAQ configuration in non-
volatile memory has been cleared.
XCP_EVC_STORE_DAQ
0x02
The slave indicates that the DAQ configuration has
been stored into non-volatile memory.
XCP_EVC_STORE_CAL
0x03
The slave indicates that the calibration data has been
stored.
XCP_EVC_CMD_PENDING
0x05
The slave requests the master to restart the time-out
detection.
XCP_EVC_DAQ_OVERLOAD
0x06
The slave indicates an overload situation when
transferring DAQ lists.
XCP_EVC_SESSION_TERMINATED 0x07
The slave indicates to the master that it autonomously
decided to disconnect the current XCP session.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
19
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
XCP_EVC_TIME_SYNC
0x08
Transfer of externally triggered timestamp.
XCP_EVC_STIM_TIMEOUT
0x09
Indication of a STIM timeout.
XCP_EVC_SLEEP
0x0A
Slave entering SLEEP mode.
XCP_EVC_WAKE_UP
0x0B
Slave leaving SLEEP mode.
XCP_EVC_USER
0xFE
User-defined event.
XCP_EVC_TRANSPORT
0xFF
Transport layer specific event.
Table 3-6 Event codes
3.11 Service Request Messages
The slave device may request some action to be performed by the master device. This is
done by the transmission of a Service Request Packet (SERV) that contains the service
request code. The transmission of service request packets is asynchronous and not
guaranteed because these packets are not acknowledged.
The service request messages can be sent by the following functions:
• 5.2.7 Xcp_PutChar
• 5.2.8 Xcp_Print
3.12 User Defined Command
The XCP Protocol allows having a user defined command with an application specific
functionality.
The
user
defined
command
is
enabled
by
setting
/MICROSAR/Xcp/XcpCmdConfig/XcpStandard/XcpUserDefinedCommand and upon reception of
the user command the following callback function is called by the XCP command
processor:
• 5.5.10 XcpAppl_UserService
3.13 Synchronous Data Transfer
3.13.1 Synchronous Data Acquisition (DAQ)
The
synchronous
data
transfer
can
be
enabled
with
the
container
/MICROSAR/Xcp/XcpCmdConfig/XcpDaqAndStim. In this mode, the MCS configures tables of
memory addresses in the XCP Protocol Layer. These tables contain pointers to
measurement objects, which have been configured previously for the measurement in the
MCS. Each configured table is assigned to an event channel.
The function Xcp_Event(x) has to be called for each event channel with the corresponding
event channel number as parameter. The application has to ensure that Xcp_Event is
called with the correct cycle time. Note that the event channel numbers are given by the
GenTool by configuring /MICROSAR/Xcp/XcpConfig/XcpEventChannel. Symbolic name
values for each event channel are generated by the GenTool.
The ECU automatically transmits the current value of the measurement objects via
messages to the MCS, when the function Xcp_Event is executed in the ECU’s code with
the corresponding event channel number. This means that the data can be transmitted at
any particular point of the ECU code when the data values are valid.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
20
based on template version 6.0.1


Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
The data acquisition mode can be used in multiple configurations that are described within
the next chapters.
Note
Annotation for the usage of CANape:
It is recommended to enable both data acquisition plug & play mechanisms to detect
the DAQ settings.
3.13.2 DAQ Timestamp
There are two methods to generate timestamps for data acquisition signals.
1. By the MCS tool on reception of the message
2. By the ECU (XCP slave)
The time precision of the MCS tool is adequate for the most applications; however, some
applications like the monitoring of the OSEK operating system or measurement on
FlexRay with an event cycle time smaller than the FlexRay cycle time require higher
precision timestamps. In such cases, ECU generated timestamps are recommended.
The timestamp must be implemented in a call-back which returns the current value:
• 5.5.1 XcpAppl_GetTimestamp
There are several possibilities to implement such a timestamp:
> 16bit Counter variable, incremented by software in a fast task (.e.g. 1ms task) for
applications where such a resolution is sufficient and returned in the above mentioned
call-back.
> 32bit General Purpose Timer of the used µC, configured to a certain repetition rate
(e.g. 1µs increment) for applications that require a high resolution of the timestamp
and returned in the above mentioned call-back.
The resolution and increment value of this timer must be configured in the configuration
tool accordingly.
3.13.3 Power-Up Data Transfer
Power-up data transfer (also called resume mode) allows automatic data transfer (DAQ) of
the slave directly after power-up. Automotive applications would e.g. be measurements
during cold start.
The slave and the master have to store all the necessary communication parameters for
the automatic data transfer after power-up. Therefore the following functions have to be
implemented in the slave.
• 5.5.19 XcpAppl_DaqResume
• 5.5.20 XcpAppl_DaqResumeStore
• 5.5.21 XcpAppl_DaqResumeClear
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
21
based on template version 6.0.1


Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
To
use
the
resume
mode
the
compiler
switch
/MICROSAR/Xcp/XcpCmdConfig/XcpDaqAndStim/XcpResumeMode has to be enabled.
Keep also in mind that the Xcp_MainFunction has to be called cyclically in order for the
resume mode to work. If Resume Mode is enabled by the MCS tool the before mentioned
call-back XcpAppl_DaqResumeStore is called by the Xcp_MainFunction.
Note
Annotation for the use of CANape:
Start the resume mode with the menu command Measurement | Start and push the
button “Measure offline” on the dialog box.
3.13.4 Data Stimulation (STIM)
Synchronous Data Stimulation is the inverse mode of Synchronous Data Acquisition.
The STIM processor buffers incoming data stimulation packets. When an event occurs
(Xcp_Event is called), which triggers a DAQ list in data stimulation mode, the buffered
data is transferred to the slave device’s memory.
To
use
data
stimulation
(STIM)
the
configuration
switch
/MICROSAR/Xcp/XcpCmdConfig/XcpDaqAndStim/XcpSynchronousDataStimulation has to be
enabled.
With the API Xcp_SetStimMode the mode of the write operation can be selected.
3.13.5 Bypassing
Bypassing can be realized by making use of Synchronous Data Acquisition (DAQ) and
Synchronous Data Stimulation (STIM) simultaneously.
State-of-the-art Bypassing also requires the administration of the bypassed functions. This
administration has to be performed in a MCS like e.g. CANape.
Also the slave should perform plausibility checks on the data it receives through data
stimulation. The borders and actions of these checks are set by standard calibration
methods. No special XCP commands are needed for this.
3.13.6 Data Acquisition Plug & Play Mechanisms
The XCP Protocol Layer comprises two plug & play mechanisms for data acquisition:
> General information on the DAQ processor
> General information on DAQ processing resolution
The general information on the DAQ processor contains:
> General properties of DAQ lists
> Total number of available DAQ lists and event channels
The general information on the DAQ processing resolution contains:
> Granularity and maximum size of ODT entries for both directions
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
22
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
> Information on the time stamp mode
3.13.7 Event Channel Plug & Play Mechanism
The XCP Protocol Layer supports a plug & play mechanism that allows the MCS to
automatically detect the available event channels in the slave. The associated service is
enabled by /MICROSAR/Xcp/XcpCmdConfig/XcpDaqAndStim/XcpGetDAQEventInfo.
If this option is enabled the MCS can read the configured Event Channels from the XCP
Slave.
3.13.8 Send Queue
The Send Queue is used to store measurement values until they can be transmitted on the
bus. The Send Queue size can be configured in the configuration tool. It is defined by the
parameter /MICROSAR/Xcp/XcpConfig/XcpCoreDefinition/XcpSendQueueSize. Please be
aware that in a Multi Core system multiple Send Queues may be configured. Each Core
the Xcp_Event function is called on requires its own Send Queue. The sizes may vary,
depending on the number of measurement values on each Core. See chapter 3.16 Multi
Core Support.
3.13.9 Data consistency
The XCP supports a data consistency on ODT level. If a consistency on DAQ level is
required, interrupts must be disabled prior calling Xcp_Event and enabled again after the
function returns. The following example demonstrates the integrity on ODT level by
showing the XCP ODT frames as sent on the bus. Two Events (x, y) are configured with
DAQ list DAQ1 assigned to Event(x) and DAQ list DAQ2 assigned to Event(y). A call of the
Xcp_Event function with the respective event channel number will then trigger the
transmission of the associated DAQ list.
Example1: a call of Xcp_Event(x) is interrupted by a call of Xcp_Event(y). This is allowed
as long as the interrupt locks are provided by the Schedule Manager (default with
MICROSAR stack).
Example2: a call of Xcp_Event(x) is interrupted by a call of Xcp_Event(x). As a result a
DAQ list is interrupted by itself. This is not allowed and must be prevented by data
consistency on DAQ level. For this use a interrupt lock when calling Xcp_Event()
DAQ1
DAQ2
ODT0
ODT3
ODT1
ODT4
ODT2
Example1
ODT0 ODT1 ODT3 ODT4 ODT2
Example2
ODT0 ODT1 ODT0 ODT1 ODT2 ODT2
Figure 3-2 Data consistency
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
23
based on template version 6.0.1


Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Note on Multi Core systems: It is in the responsibility of the user to assign only
measurement values relevant for the Core to the corresponding Event Channel called on
the specific Core.
3.14 The Online Data Calibration Model
3.14.1 Page Switching
The MCS can switch between a flash page and a RAM page. The XCP command
SET_CAL_PAGE is used to activate the required page. The page switching is enabled with
the /MICROSAR/Xcp/XcpCmdConfig/XcpPageSwitching definition.
The following application callback functions have to be implemented:
• 5.5.23 XcpAppl_GetCalPage
• 5.5.24 XcpAppl_SetCalPage
Note
Annotation for the use of CANape:
Open the dialog XCP Device Setup with the menu command Tools|Driver
Configuration. Go to the tab “FLASH”. Activate page switching. Enter a flash selector
value e.g. 1 and a Ram selector e.g. 0.
3.14.2 Page Switching Plug & Play Mechanism
The MCS can be automatically configured if the page switching plug & play mechanism is
used. This mechanism comprises
> General information about the paging processor
The page switching plug & play mechanism is enabled with the switch
/MICROSAR/Xcp/XcpCmdConfig/XcpPageSwitching/XcpGeneralPagingInfo.
3.14.3 Calibration Data Page Copying
Calibration data page copying is performed by the XCP command COPY_CAL_PAGE. To
enable
this
feature
the
compiler
switch
/MICROSAR/Xcp/XcpCmdConfig/XcpPageSwitching/XcpCopyPage has to be enabled.
For calibration data page copying the following application callback function has to be
provided by the application:
• 5.5.25 XcpAppl_CopyCalPage
3.14.4 Freeze Mode Handling
Freeze mode handling is performed by the XCP commands SET_SEGMENT_MODE and
GET_SEGMENT_MODE.
To
enable
this
feature
the
parameter
/MICROSAR/Xcp/XcpCmdConfig/XcpPageSwitching/XcpFreezeMode has to be enabled.
For freeze mode handling the following application callback functions have to be provided
by the application:
• 5.5.26 XcpAppl_SetFreezeMode
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
24
based on template version 6.0.1


Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
• 5.5.27 XcpAppl_GetFreezeMode
• 5.5.22 XcpAppl_CalResumeStore
3.15 Flash Programming
There are two methods available for the programming of flash memory.
> Flash programming by the ECU’s application
> Flash programming with a flash kernel
Depending on the hardware it might not be possible to reprogram an internal flash sector,
while a program is running from another sector. In this case the usage of a special flash
kernel is necessary.
3.15.1 Flash Programming by the ECU’s Application
If the internal flash has to be reprogrammed and the microcontroller allows to
simultaneously reprogram and execute code from the flash the programming can be
performed with the ECU’s application that contains the XCP. This method is also used for
the programming of external flash.
The flash programming is done with the following XCP commands PROGRAM_START,
PROGRAM_RESET, PROGRAM_CLEAR, PROGRAM, PROGRAM_NEXT, PROGRAM_MAX, PROGRAM_RESET,
PROGRAM_FORMAT1, PROGRAM_VERIFY1.
The flash prepare, flash program and the clear routines are platform dependent and
therefore have to be implemented by the application.
• 5.5.15 XcpAppl_Reset
• 5.5.16 XcpAppl_ProgramStart
• 5.5.17 XcpAppl_FlashClear
• 5.5.18 XcpAppl_FlashProgram
The
flash
programming
is
enabled
with
the
switch
/MICROSAR/Xcp/XcpCmdConfig/XcpProgramming.
Note
Annotation for the usage of CANape:
Open the dialog XCP Device Setup with the menu command Tools|Driver
Configuration. Go to the tab “FLASH” and select the entry “Direct” in the flash kernel
drop down list.
3.15.2 Flash Programming Plug & Play Mechanism
The MCS (like e.g. CANape) can get information about the Flash and the Flash
programming process from the ECU. The following information is provided by the ECU:
1 Command not supported
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
25
based on template version 6.0.1


Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
> Number of sectors, start address or length of each sector
> The program sequence number, clear sequence number and programming method
> Additional information about compression, encryption
The flash programming plug & play mechanism is enabled with the switch
/MICROSAR/Xcp/XcpCmdConfig/XcpProgramming/XcpSector.
3.15.3 Flash Programming with a Flash Kernel
A flash kernel has to be used for the flash programming if it is not possible to
simultaneously reprogram and execute code from the flash. Even though the
reprogrammed sector and the sector the code is executed from are different sectors.
The application callback function
• 5.5.13 XcpAppl_DisableNormalOperation
• 5.5.14 XcpAppl_StartBootLoader
is called prior to the flash kernel download in the RAM. Within this function the normal
operation of the ECU has to be stopped and the flash kernel download can be prepared.
Due to the flash kernel is downloaded in the RAM typically data gets lost and no more
normal operation of the ECU is possible.
The flash programming with a flash kernel is enabled with the switch
/MICROSAR/Xcp/XcpGeneral/XcpBootloaderDownload.
Note
Annotation for the usage of CANape:
The flash kernel is loaded by CANape into the microcontroller’s RAM via XCP
whenever the flash memory has to be reprogrammed. The flash kernel contains the
necessary flash routines, its own CAN-Driver and XCP Protocol implementation to
communicate via the CAN interface with CANape.
Every flash kernel must be customized to the microcontroller and the flash type being
used. CANape already includes some flash kernels for several microcontrollers. There
is also an application note available by Vector Informatik GmbH that describes the
development of a proprietary flash kernel.
Open the dialog XCP Device Setup with the menu command Tools|Driver
Configuration. Go to the tab “FLASH”, and select in the ‘flash kernel’ drop down list, the
corresponding fkl file for the microcontroller being used.
3.16 Multi Core Support
3.16.1 Type Safe Copy
The XCP Protocol Layer supports a feature called “Type Safe Copy” which provides
atomic access to aligned uint16 and uint32 measurement values. This is important on multi
core platforms where one core is accessing a measurement value while the XCP is trying
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
26
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
to do the same running from another core. The Type Safe Copy is used for polling while
DAQ/STIM usually use direct memory access and copy byte wise.
With this option disabled, all access to measurement values is performed byte wise which
is not an atomic operation.
The following points must be taken into consideration when enabling this option:
> This option allows the XCP to only read/write basic data types used on another core; it
cannot provide data consistency on ODT level.
> This option has a slightly higher runtime.
> Some MCS tools perform an optimization by grouping measurement values. This
option must be disabled; otherwise they do not represent unique data types anymore.
3.16.2 DAQ/STIM with Multi Core
It is possible to execute the Xcp_Event function on a different Core. This must be
configured in the configuration tool accordingly. For each Core the XCP is used on the
following Container must be created: /MICROSAR/Xcp/XcpConfig/XcpCoreDefinition. The
correct Core Definition must be referenced for each configured Event Channel:
/MICROSAR/Xcp/XcpConfig/XcpEventChannel/XcpEventChannelCoreRef. An Event Channel
can only be called on the Core it is configured for; otherwise a DET error is thrown.
The following picture shows the architecture behind the Multi Core support and the way
the Xcp_Event function is called on each Core:
act Activ ity
OsTask
OsTask BSW
Application
OsTask
Core
Core
Utility Core
Calculation of Application
Data
Calculation of Utility Data
Collecting Data
«datastore»
Xcp_Ev ent(5ms_ApplicationCore)
Lock free Core
Specific Queue
Xcp_MainFunction (Trigger
Sequential Transmission)
ActivityFinal
Collecting Data
«datastore»
Xcp_Ev ent(5ms_UtilityCore)
Lock free Core
Specific Queue
ActivityFinal
ActivityFinal
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
27
based on template version 6.0.1


Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Figure 3-3 Application of Xcp_Event function on Multi Core systems
3.17 En- / Disabling the XCP module
The macro XCP_ACTIVATE/XCP_DEACTIVATE can be used to en- or disable the XCP module
during run time. Thus the XCP functionality can be controlled by the application. These
macros control the protocol and transport layer together, i.e. enabling or disabling them as
a whole. It is recommended to perform a Xcp_Disconnect() API call to bring the XCP in a
save state before it is disabled.
3.18 XCP measurement during the post event time
In use cases where there is no further communication request except XCP measurement
the session state of the XCP can be determined to prevent an early shutdown of the ECU.
For this purpose the following API exist:
• 5.2.13 Xcp_GetSessionStatus
An example implementation that is called cyclically could look like the following example:
Example
{
uint16 sessionState;
sessionState = Xcp_GetSessionStatus();
if( 0 != (sessionState & XCP_SESSION_CONNECTED) )
{
/* Is the xcp actively used? */
if( 0 != (sessionState & (XCP_SESSION_DAQ | XCP_SESSION_POLLING)) )
{
/* Yes, reload timer */
swTimer = XCPAPPL_TIMEOUT_TIMER_RELOAD;
}
}
if( swTimer > 0 )
{
/* No timeout so far */
swTimer--;
}
else
{
/* Timer timeout happened, release xcp communication request */
}
}
Please note that polling requests may happen erratically. Therefore it is important not to
choose the timeout value XCP_TIMEOUT_TIMER_RELOAD too small.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
28
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
3.19 Error Handling
3.19.1 Development Error Reporting
By default, development errors are reported to the DET using the service
Det_ReportError() as specified in [2], if development error reporting is enabled:
/MICROSAR/Xcp/XcpGeneral/XcpDevErrorDetect.
If another module is used for development error reporting, the function prototype for
reporting the error can be configured by the integrator, but must have the same signature
as the service Det_ReportError().
The reported XCP ID is 212.
The reported service IDs identify the services which are described in 5.2. The following
table presents the service IDs and the related services:
Service ID
Service
0x00
Xcp_Init
0x03
Xcp_SendEvent
0x04
Xcp_PutChar
0x05
Xcp_Print
0x06
Xcp_Disconnect
0x07
Xcp_SendCrm
0x08
Xcp_GetXcpDataPointer
0x0A
Xcp_GetVersionInfo
0x0B
Xcp_TlRxIndication
0x0C
Xcp_TlTxConfirmation
0x0E
Xcp_GetSessionStatus
0x0F
Xcp_SetActiveTl
0x10
Xcp_GetActiveTl
0x11
Xcp_SetStimMode
0x14
Xcp_ModifyProtectionStatus
0xC8
Xcp_MainFunction
0xC9
Xcp_Event
0xFD
Xcp_StimEventStatus
Table 3-7 Service IDs
The errors reported to DET are described in the following table:
Error Code
Description
0x0A
API service Xcp_Init() called with wrong parameter.
0x0B
API service used with an invalid channel identifier or channel was not configured
for the functionality of the calling API.
0x0C
API service used with an invalid event channel identifier or event channel was
not configured for the functionality of the calling API.
0x0D
API service used with invalid pointer parameter (NULL).
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
29
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Error Code
Description
0x0E
API service used with an invalid channel identifier or channel was not configured
for the functionality of the calling API.
0x10
API service used without module initialization.
0x11
The service Xcp_Init() is called while the module is already initialized.
0x12
The service Xcp_Event() is called with a wrong channel id on a wrong core.
Table 3-8 Errors reported to DET
3.19.2 Production Code Error Reporting
The errors reported to DEM are described in the following table:
Error Code
Description
-
No production errors are reported by the XCP.
Table 3-9 Errors reported to DEM
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
30
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
4 Integration
This chapter gives necessary information for the integration of the MICROSAR XCP into
an application environment of an ECU.
4.1
Scope of Delivery
The delivery of the XCP contains the files which are described in the chapters 4.1.1 and
4.1.3:
4.1.1
Static Files
File Name
Description
Xcp.c
This is the source file of the XCP. It contains the XCP protocol layer.
Xcp.h
This is the header file. It contains global declarations.
Xcp_Priv.h
This is the private header file. It contains declarations only relevant for the XCP
itself.
Xcp_Types.h This is the type definition header file. It contains type definitions used by the XCP.
Table 4-1 Static files
4.1.2
Templates – user modifiable
File Name
Description
XcpAppl.c
This is the source file of the application call-back. This file usually must be
modified by the user to his needs.
XcpAppl.h
This is the header file of the application call-backs. It contains global declarations.
Table 4-2 Templates
4.1.3
Dynamic Files
The dynamic files are generated by the configuration tool.
File Name
Description
Xcp_Cfg.h
XCP Protocol Layer configuration file.
Xcp_Lcfg.c
Parameter definition for the XCP Protocol Layer.
Xcp_Lcfg.h
External declarations for the parameters.
Table 4-3 Generated files
4.1.4
Generated a2l files
The GenTool also generates multiple a2l files which can be used in the MCS tool for easier
integration. The following files are generated:
• XCP.a2l (general protocol layer settings)
• XCP_daq.a2l (DAQ specific settings)
• XCP_events.a2l (DAQ event info)
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
31
based on template version 6.0.1


Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
• XCP_Checksum.a2l (Checksum information)
Example Master.a2l:
...
/begin IF_DATA XCP
/include XCP.a2l
/begin DAQ
/include XCP_daq.a2l
/include XCP_events.a2l
/include XCP_checksum.a2l
...
/end DAQ
/include CanXCPAsr.a2l
/end IF_DATA
...
/include bsw.a2l
...
4.2
Critical Sections
The XCP protocol layer makes use of three critical sections in order to protect functions
that are not re-entrant. The following sections are used:
• XCP_EXCLUSIVE_AREA_0
• XCP_EXCLUSIVE_AREA_1
• XCP_EXCLUSIVE_AREA_2
The individual exclusive areas must not be allowed to interrupt each other. The areas are
used for the following cases:
4.2.1
XCP_EXCLUSIVE_AREA_0
This exclusive area is used to protect non-reentrant functions. This critical section covers
calls to several sub-functions and can have a long run-time.
4.2.2
XCP_EXCLUSIVE_AREA_1
This exclusive area is used by Xcp_Event during DAQ measurement. It is used to provide
data integrity on ODT level and its duration is dependent on the MAX_DTO parameter, i.e.
can be short on CAN and long on Ethernet.
4.2.3
XCP_EXCLUSIVE_AREA_2
This exclusive area is used by Xcp_Event during STIM measurement. It is used to provide
data integrity on ODT level and its duration is dependent on the MAX_DTO parameter, i.e.
can be short on CAN and long on Ethernet.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
32
based on template version 6.0.1


Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
4.3
Memory Mapping
The XCP has requirements regarding memory mapping to avoid misaligned memory
access. The following section: XCP_START_SEC_VAR_NOCACHE_NOINIT_32BIT must be mapped to a
32Bit section in order to guarantee correct alignment.
Caution
If this section is not mapped accordingly, a trap will happen on architectures that do not
support misaligned access, e.g. TriCore.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
33
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
5 API Description
For an interfaces overview please see Figure 2-2.
5.1
Type Definitions
The types defined by the XCP are described in this chapter.
Type Name
C-Type Description
Xcp_TimestampType
c-type
This is a type used for timestamp values. Its size is depending
on the configuration in the tool and can be uint8, uint16 or
uint32.
Table 5-1 Type definitions
Xcp_ChannelStruct
Struct Element Name C-Type Description
Xcp_ChannelStruct
c-type
This is a complex structure containing all the configuration
data of the XCP. This structure needs to be stored in NVM for
resume mode.
Table 5-2 Xcp_ChannelStruct
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
34
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
5.2
Services provided by XCP
5.2.1
Xcp_InitMemory
Prototype
void Xcp_InitMemory ( void )
Parameter
-
-
Return code
-
-
Functional Description
This service initializes the XCP Protocol Layer memory. It must be called from the application program
before any other XCP function is called. This is only required if the Startup Code does not initialize the
memory with zero.
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is reentrant.
> The global interrupts have to be disabled while this service function is executed. This function should be
called during initialization of the ECU before the interrupts have been enabled.
Expected Caller Context
> Task and interrupt level
Table 5-3 Xcp_InitMemory
5.2.2
Xcp_Init
Prototype
void Xcp_Init ( void )
Parameter
-
-
Return code
-
-
Functional Description
This service initializes the XCP Protocol Layer and its internal variables. It must be called from the
application program before any other XCP function is called (except of Xcp_InitMemory).
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is non-reentrant.
Expected Caller Context
> Task level
4 Xcp_Init
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
35
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
5.2.3
Xcp_Event
Prototype
uint8 Xcp_Event ( uint16 EventChannel )
Parameter
EventChannel
Number of event channels to process.
The event channel numbers have to start at 0 and have to be continuous. The
range is: 0..x
Return code
uint8
XCP_EVENT_NOP : Inactive (DAQ not running, Event not configured)
XCP_EVENT_DAQ : DAQ active */
XCP_EVENT_DAQ_OVERRUN : DAQ queue overflow, data lost
XCP_EVENT_STIM : STIM active
XCP_EVENT_STIM_OVERRUN : STIM data not available
Functional Description
Calling Xcp_Event with a particular event channel number triggers the sampling and transmission of all
DAQ lists that are assigned to this event channel.
The event channels are defined by the ECU developer in the application program. An MCS (e.g. CANape)
must know about the meaning of the event channel numbers. These are usually described in the tool
configuration files or in the interface specific part of the ASAM MC2 (ASAP2) database.
Example:
A motor control unit may have a 10ms, a 100ms and a crank synchronous event channel. In this case, the
three Xcp_Event calls have to be placed at the appropriate locations in the ECU’s program:
Xcp_Event (XcpConf_XcpEventChannel_10ms); /* 10ms cycle */
xcp_Event (XcpConf_XcpEventChannel_100ms); /* 100ms cycle */
xcp_Event (XcpConf_XcpEventChannel_Crank); /* Crank synchronous cycle */
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is reentrant (for different Event Channel).
> The XCP Protocol Layer has been initialized correctly and XCP is in connected state.
> Data acquisition has to be enabled
/MICROSAR/Xcp/XcpCmdConfig/XcpDaqAndStim
Expected Caller Context
> Task and interrupt level
Table 5-5 Xcp_Event
5.2.4
Xcp_StimEventStatus
Prototype
uint8 Xcp_StimEventStatus ( uint16 EventChannel, uint8 Action )
Parameter
EventChannel
Event channel number.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
36
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Action
STIM_CHECK_ODT_BUFFER : check ODT buffer
STIM_RESET_ODT_BUFFER : reset ODT buffer
Return code
uint8
XCP_NO_STIM_DATA_AVAILABLE : stimulation data not available
XCP_STIM_DATA_AVAILABLE : new stimulation data is available
Functional Description
Check if data stimulation (STIM) event can perform or delete the buffers.
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is reentrant.
> The XCP Protocol Layer has been initialized correctly and XCP is in connected state.
> Data acquisition has to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpDaqAndStim/XcpSynchronousDataStimulation
Expected Caller Context
> Task and interrupt level
Table 5-6 Xcp_StimEventStatus
5.2.5
Xcp_MainFunction
Prototype
void Xcp_MainFunction ( void )
Parameter
-
-
Return code
-
-
Functional Description
If the XCP command for the calculation of the memory checksum has to be used for large memory areas, it
might not be appropriate to block the processor for a long period of time. Therefore, the checksum
calculation is divided into smaller sections that are handled in the Xcp_MainFunction.
Additionally, the main function handles persisting requests.
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has been initialized correctly
Expected Caller Context
> Task level
Table 5-7 Xcp_MainFunction
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
37
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
5.2.6
Xcp_SendEvent
Prototype
void Xcp_SendEvent ( Xcp_ChannelType XcpChannel, uint8 EventCode, uint8
*EventData, uint8 Length )
Parameter
XcpChannel
The channel number in multi client mode.
EventCode
The event code of the message to send.
EventData
A pointer to the string of the event to send.
Length
The length of the event data.
Return code
-
-
Functional Description
Transmission of event codes via event packets (EV).
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has been initialized correctly and XCP is in connected state.
> Event Codes has to be enabled: /MICROSAR/Xcp/XcpCmdConfig/XcpAsynchMessage/XcpEventCodes
Expected Caller Context
> Task level
Table 5-8 Xcp_SendEvent
5.2.7
Xcp_PutChar
Prototype
void Xcp_PutChar ( Xcp_ChannelType XcpChannel, uint8 *Character )
Parameter
XcpChannel
The channel number in multi client mode.
Character
The char to send.
Return code
-
-
Functional Description
Put a char into a service request packet (SERV).
The service request packet is transmitted if either the maximum packet length is reached (the service
request message packet is full) or the character 0x00 is in the service request packet.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
38
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has been initialized correctly and XCP is in connected state.
> Service Request Message has to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpAsynchMessage/XcpServiceRequestMessage
Expected Caller Context
> Task level
Table 5-9 Xcp_PutChar
5.2.8
Xcp_Print
Prototype
void Xcp_Print ( Xcp_ChannelType XcpChannel, uint8 *Str )
Parameter
XcpChannel
The channel number in multi client mode.
Str
The 0 terminated string to send.
Return code
-
-
Functional Description
Transmission of a service request packet (SERV).
The string str is sent via service request packets. The string has to be terminated by 0x00.
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has been initialized correctly and XCP is in connected state.
> Service Request Message has to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpAsynchMessage/XcpServiceRequestMessage
Expected Caller Context
> Task level
Table 5-10 Xcp_Print
5.2.9
Xcp_Disconnect
Prototype
void Xcp_Disconnect ( Xcp_ChannelType XcpChannel )
Parameter
XcpChannel
The channel number in multi client mode.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
39
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Return code
-
-
Functional Description
If the XCP slave is connected to a XCP master a call of this function discontinues the connection (transition
to disconnected state). If the XCP slave is not connected this function performs no action.
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is reentrant.
> The XCP Protocol Layer has been initialized correctly and XCP is in connected state.
Expected Caller Context
> Task level
Table 5-11 Xcp_Disconnect
5.2.10 Xcp_SendCrm
Prototype
void Xcp_SendCrm ( Xcp_ChannelType XcpChannel )
Parameter
XcpChannel
The channel number in multi client mode.
Return code
-
-
Functional Description
Transmission of a command response packet (RES), or error packet (ERR) if no other packet is pending.
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has been initialized correctly, XCP is in connected state and a command
packet (CMD) has been received.
Expected Caller Context
> Task level
Table 5-12 Xcp_SendCrm
5.2.11 Xcp_GetVersionInfo
Prototype
void Xcp_GetVersionInfo ( Std_VersionInfoType *versionInfo )
Parameter
versionInfo
Pointer to the location where the Version information shall be stored.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
40
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Return code
-
-
Functional Description
Xcp_GetVersionInfo() returns version information, vendor ID and AUTOSAR module ID of the component.
The versions are BCD-coded.
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is reentrant.
> The version info API has to be enabled: /MICROSAR/Xcp/XcpGeneral/XcpVersionInfoApi
Expected Caller Context
> Task level
Table 5-13 Xcp_GetVersionInfo
5.2.12 Xcp_ModifyProtectionStatus
Prototype
void Xcp_ModifyProtectionStatus ( Xcp_ChannelType XcpChannel, uint8 AndState,
uint8 OrState )
Parameter
XcpChannel
The channel number in multi client mode.
AndState
The following flags: XCP_RM_CAL_PAG, XCP_RM_DAQ, XCP_RM_STIM
and XCP_RM_PGM can be used to clear the protection state of the respective
resource. The modified state is persistent until Xcp_Init.
OrState
The following flags: XCP_RM_CAL_PAG, XCP_RM_DAQ, XCP_RM_STIM
and XCP_RM_PGM can be used to set the protection state of the respective
resource. The modified state is persistent until Xcp_Init.
Return code
-
-
Functional Description
This method can be used to enable or disable the protection state of an individual resource during runtime.
The newly set protection state is persistent until the next call of the Xcp_Init function where all flags are set
again.
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is non-reentrant.
> Seed&Key has to be enabled: /MICROSAR/Xcp/XcpCmdConfig/XcpStandard/XcpSeedKey
Expected Caller Context
> Task level
Table 5-14 Xcp_ModifyProtectionStatus
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
41
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
5.2.13 Xcp_GetSessionStatus
Prototype
uint16 Xcp_GetSessionStatus ( Xcp_ChannelType XcpChannel )
Parameter
XcpChannel
The channel number in multi client mode.
Return code
uint16
The function returns a bit mask with the following flags:
XCP_SESSION_CONNECTED: The XCP is in state connected.
XCP_SESSION_POLLING: A polling measurement is ongoing.
XCP_SESSION_DAQ: A DAQ measurement is active.
Functional Description
This service can be used to get the session state of the XCP Protocol Layer. The session state is returned
as a bit mask where the individual bits can be tested.
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is non-reentrant.
> Session Status API has to be enabled: /MICROSAR/Xcp/XcpGeneral/XcpSessionStatusAPI
Expected Caller Context
> Task level
Table 5-15 Xcp_GetSessionStatus
5.2.14 Xcp_GetXcpDataPointer
Prototype
uint16 Xcp_GetXcpDataPointer ( Xcp_ChannelStructPtr * pXcpData )
Parameter
pXcpData
Pointer to XCP channel information.
Return code
-
-
Functional Description
This service can be used to get the complete XCP data. This is required for flash programming with a flash
kernel.
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is non-reentrant.
> Bootloader Download has to be enabled: /MICROSAR/Xcp/XcpGeneral/XcpBootloaderDownload
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
42
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Expected Caller Context
> Task level
Table 5-16 Xcp_GetXcpDataPointer
5.2.15 Xcp_SetStimMode
Prototype
void Xcp_SetStimMode ( uint8 mode )
Parameter
Mode
The STIM mode to select. This can either be
XCP_STIM_SINGLE_SHOT_MODE: Valid STIM data is written a single time
(default).
XCP_STIM_CONTINUOUS_MODE: Valid STIM data is written continuously.
Return code
-
-
Functional Description
This service is used to change the behavior of the Xcp_Event function when new STIM data is written.
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is non-reentrant.
> Data acquisition and STIM has to be enabled
/MICROSAR/Xcp/XcpCmdConfig/XcpDaqAndStim/XcpSynchronousDataStim
Expected Caller Context
> Task level
Table 5-17 Xcp_SetStimMode
5.3
Services provided by the XCP Protocol Layer and called by the XCP Transport
Layer
5.3.1
Xcp_TlRxIndication
Prototype
void Xcp_TlRxIndication ( Xcp_ChannelType XcpChannel, unt8 *CmdPtr )
Parameter
XcpChannel
The channel number in multi client mode.
CmdPtr
Pointer to the XCP protocol message, which must be extracted from the XCP
protocol packet.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
43
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Return code
-
-
Functional Description
Every time the XCP Transport Layer receives a XCP CTO Packet this function has to be called.
The parameter is a pointer to the XCP protocol message, which must be extracted from the XCP protocol
packet.
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
Expected Caller Context
> Task level
Table 5-18 Xcp_TlRxIndication
5.3.2
Xcp_TlTxConfirmation
Prototype
void Xcp_TlTxConfirmation ( Xcp_ChannelType XcpChannel )
Parameter
XcpChannel
The channel number in multi client mode.
Return code
-
-
Functional Description
The XCP Protocol Layer does not call <Bus>Xcp_Send again, until Xcp_TlTxConfirmation has
confirmed the successful transmission of the previous message. Xcp_TlTxConfirmation transmits
pending data acquisition messages by calling <Bus>Xcp_Send again.
Note that if Xcp_TlTxConfirmation is called from inside <Bus>Xcp_Send a recursion occurs, which
assumes enough space on the call stack.
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
Expected Caller Context
> Task level
Table 5-19 Xcp_TlTxConfirmation
5.3.3
Xcp_SetActiveTl
Prototype
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
44
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
void Xcp_SetActiveTl ( Xcp_ChannelType XcpChannel, uint8 MaxCto, uint16 MaxDto,
uint8 ActiveTl )
Parameter
XcpChannel
The channel number in multi client mode.
MaxCto
Max CTO used by the respective XCP Transport Layer
MaxDto
Max DTO used by the respective XCP Transport Layer
ActiveTl
XCP_TRANSPORT_LAYER_CAN: XCP on CAN Transport Layer
XCP_TRANSPORT_LAYER_FR: XCP on Fr Transport Layer
XCP_TRANSPORT_LAYER_ETH: XCP on Ethernet Transport Layer
Return code
-
-
Functional Description
This service is used by the XCP Transport Layers to set the Transport Layer to be used by the XCP
Protocol Layer
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
Expected Caller Context
> Task level
Table 5-20 Xcp_SetActiveTl
5.3.4
Xcp_GetActiveTl
Prototype
uint8 Xcp_GetActiveTl ( Xcp_ChannelType XcpChannel )
Parameter
XcpChannel
The channel number in multi client mode.
Return code
uint8
XCP_TRANSPORT_LAYER_CAN: XCP on CAN Transport Layer
XCP_TRANSPORT_LAYER_FR: XCP on Fr Transport Layer
XCP_TRANSPORT_LAYER_ETH: XCP on Ethernet Transport Layer
Functional Description
This service is used by the XCP Transport Layers to get the currently active Transport Layer used by the
XCP Protocol Layer
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
45
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
Expected Caller Context
> Task level
Table 5-21 Xcp_GetActiveTl
5.4
XCP Transport Layer Services called by the XCP Protocol Layer
5.4.1
<Bus>Xcp_Send
Prototype
void <Bus>Xcp_Send ( Xcp_ChannelType XcpChannel, uint8 len, uint8 *msg )
Parameter
XcpChannel
The channel number in multi client mode.
len
Length of message data
msg
Pointer to message
Return code
-
-
Functional Description
Requests for the transmission of a command transfer object (CTO) or data transfer object (DTO).
Xcp_TlTxConfirmation must be called after the successful transmission of any XCP message. The
XCP Protocol Layer will not request further transmissions otherwise.
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
Expected Caller Context
> Task level
Table 5-22 <Bus>Xcp_Send
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
46
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
5.4.2
<Bus>Xcp_SendFlush
Prototype
void <Bus>Xcp_SendFlush( Xcp_ChannelType XcpChannel, uint8 FlushType )
Parameter
XcpChannel
The channel number in multi client mode.
FlushType
This is one of the following:
XCP_FLUSH_CTO: To flush CTO messages.
XCP_FLUSH_DTO: To flush DTO message.
XCP_FLUSH_ALL: To flush either message.
Return code
-
-
Functional Description
Flush the transmit buffer.
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
Expected Caller Context
> Task level
Table 5-23 <Bus>Xcp_SendFlush
5.4.3
<Bus>Xcp_TlService
Prototype
uint8 <Bus>Xcp_TlService( Xcp_ChannelType XcpChannel, uint8 *pCmd )
Parameter
XcpChannel
The channel number in multi client mode.
pCmd
Pointer to transport layer command string
Return code
uint8
XCP_CMD_OK : Done
XCP_CMD_PENDING : Call Xcp_SendCrm() when done
XCP_CMD_SYNTAX : Error
XCP_CMD_BUSY : not executed
XCP_CMD_UNKNOWN : not implemented optional command
XCP_CMD_OUT_OF_RANGE : command parameters out of range
Functional Description
Transport Layer specific commands are processed within the XCP Transport Layer.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
47
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Particularities and Limitations
> Service ID: see table 'Service IDs'
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
Expected Caller Context
> Task level
Table 5-24 <Bus>Xcp_TlService
5.5
Application Services called by the XCP Protocol Layer
The prototypes of the functions that are required by the XCP Protocol Layer can be found
in the XcpAppl header.
The XCP Protocol Layer provides application callback functions in order to perform
application and hardware specific tasks.
Note: All services within this chapter are called from task or interrupt level. All services are
not reentrant.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
48
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
5.5.1
XcpAppl_GetTimestamp
Prototype
Xcp_TimestampType XcpAppl_GetTimestamp( void )
Parameter
-
-
Return code
Xcp_TimestampType The timestamp which is either uint8, uint16 or uint32, depending on
configuration.
Functional Description
Returns the current timestamp.
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> DAQ and timestamp feature needs to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpDaqAndStim
/MICROSAR/Xcp/XcpGeneral/XcpTimestampType
Expected Caller Context
> Task level
Table 5-25 XcpAppl_GetTimestamp
5.5.2
XcpAppl_GetPointer
Prototype
Xcp_AddressPtrType XcpAppl_GetPointer( Xcp_ChannelType XcpChannel, uint8
AddrExt, const Xcp_AddressPtrType Addr )
Parameter
XcpChannel
The channel number in multi client mode.
AddrExt
8 bit address extension
Addr
32 bit address
Return code
Xcp_AddressPtrType
Pointer to the address specified by the parameters
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
49
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Functional Description
This function converts a memory address from XCP format (32-bit address plus 8-bit address extension) to
a C style pointer. An MCS like CANape usually reads this memory addresses from the ASAP2 database or
from a linker map file.
The address extension may be used to distinguish different address spaces or memory types. In most
cases, the address extension is not used and may be ignored.
This function is used to convert an address from the MCS tool.
Example:
The following code shows an example of a typical implementation of XcpAppl_GetPointer:
Xcp_AddressPtrType XcpAppl_GetPointer( Xcp_ChannelType XcpChannel, uint8 AddrExt, uint32 Addr )
{
return (Xcp_AddressPtrType)Addr;
}
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> DAQ and timestamp feature needs to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpDaqAndStim
/MICROSAR/Xcp/XcpGeneral/XcpTimestampType
Expected Caller Context
> Task level
Table 5-26 XcpAppl_GetPointer
5.5.3
XcpAppl_GetIdData
Prototype
uint32 XcpAppl_GetIdData( uint8 **Data, uint8 Id )
Parameter
Data
Pointer to location where address pointer to Id data is stored.
Id
Identification of the requested information/identification
Return code
uint32
Length of the MAP file names
Functional Description
Returns a pointer to identification information as requested by the Xcp Master.
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Get ID feature needs to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpStandard/XcpGetIdGeneric
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
50
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Expected Caller Context
> Task level
Table 5-27 XcpAppl_GetIdData
5.5.4
XcpAppl_GetSeed
Prototype
uint8 XcpAppl_GetSeed( const uint8 Resource, uint8 *Seed )
Parameter
Resource
Resource for which the seed has to be generated
XCP_RM_CAL_PAG : to unlock the resource calibration/paging
XCP_RM_DAQ : to unlock the resource data acquisition
XCP_RM_STIM : to unlock the resource stimulation
XCP_RM_PGM : to unlock the resource programming
Seed
Pointer to RAM where the seed has to be generated to.
Return code
uint8
The length of the generated seed that is returned by seed.
Functional Description
Generate a seed for the appropriate resource.
The seed has a maximum length of MAX_CTO-2 bytes.
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Seed&Key feature needs to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpStandard/XcpSeedKey
Expected Caller Context
> Task level
Table 5-28 XcpAppl_GetSeed
5.5.5
XcpAppl_Unlock
Prototype
uint8 XcpAppl_Unlock( const uint8 *Key, const uint8 Length )
Parameter
Key
Pointer to key.
Length
Length of the key.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
51
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Return code
uint8
0 : if the key is not valid
XCP_RM_CAL_PAG : to unlock the resource calibration/paging
XCP_RM_DAQ : to unlock the resource data acquisition
XCP_RM_STIM : to unlock the resource stimulation
XCP_RM_PGM : to unlock the resource programming
Functional Description
Functional Description
Check the key and return the resource that has to be unlocked.
Only one resource may be unlocked at one time.
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Seed&Key feature needs to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpStandard/XcpSeedKey
Expected Caller Context
> Task level
Table 5-29 XcpAppl_Unlock
5.5.6
XcpAppl_CalibrationWrite
Prototype
uint8 XcpAppl_CalibrationWrite( Xcp_AddressPtrType Dst, uint8 *Src, uint8 Size
)
Parameter
Dst
Destination address as integer.
Src
Pointer to source of data.
Size
Size of data to copy from Src to Dst.
Return code
uint8
XCP_CMD_DENIED : if access is denied
XCP_CMD_PENDING : access is performed asynchronously (e.g. EEPROM)
XCP_CMD_OK : if access is granted
Functional Description
Functional Description
Check addresses for valid write access and copy data from source to destination.
Particularities and Limitations
> This function can be synchronous and asynchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
Expected Caller Context
> Task level
Table 5-30 XcpAppl_CalibrationWrite
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
52
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
5.5.7
XcpAppl_MeasurementRead
Prototype
uint8 XcpAppl_MeasurementRead( uint8 *Dst, Xcp_AddressPtrType Src, uint8 Size )
Parameter
Dst
Pointer to destination address
Src
Source address of data as integer
Size
Size of data to copy from Src to Dst.
Return code
uint8
XCP_CMD_DENIED : if access is denied
XCP_CMD_PENDING : access is performed asynchronously (e.g. EEPROM)
XCP_CMD_OK : if access is granted
Functional Description
Functional Description
Check addresses for valid read access and copy data from source to destination.
Particularities and Limitations
> This function can be synchronous and asynchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
Expected Caller Context
> Task level
Table 5-31 XcpAppl_MeasurementRead
5.5.8
XcpAppl_CheckReadAccess
Prototype
uint8 XcpAppl_CheckReadAccess( Xcp_ChannelType XcpChannel, Xcp_AddressPtrType
Address, uint32 Size )
Parameter
XcpChannel
The channel number in multi client mode.
Address
Destination address to check.
Size
Size of data to check.
Return code
uint8
XCP_CMD_DENIED : if access is denied
XCP_CMD_OK : if access is granted
Functional Description
Functional Description
Check addresses for valid read access.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
53
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Read Protection feature need to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpStandard/XcpMemoryReadProtection
Expected Caller Context
> Task level
Table 5-32 XcpAppl_CheckReadAccess
5.5.9
XcpAppl_CheckProgramAccess
Prototype
uint8 XcpAppl_CheckProgramAccess( Xcp_AddressPtrType Address, uint32 Size )
Parameter
Address
Destination address to check.
Size
Size of data to check.
Return code
uint8
XCP_CMD_DENIED : if access is denied
XCP_CMD_OK : if access is granted
Functional Description
Functional Description
Check addresses for valid write flash access.
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
Expected Caller Context
> Task level
Table 5-33 XcpAppl_CheckProgramAccess
5.5.10 XcpAppl_UserService
Prototype
uint8 XcpAppl_UserService( uint8 *Cmd )
Parameter
Cmd
Pointer to command string
Return code
uint8
XCP_CMD_OK : if command is accepted.
XCP_CMD_PENDING : if command is performed asynchronously.
XCP_CMD_SYNTAX : if command is not accepted.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
54
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Functional Description
Functional Description
Application specific user command.
Particularities and Limitations
> This function is asynchronous if it returns XCP_CMD_PENDING.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> User command feature need to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpStandard/XcpUserDefinedCommand
Expected Caller Context
> Task level
Table 5-34 XcpAppl_UserService
5.5.11 XcpAppl_OpenCmdIf
Prototype
uint8 XcpAppl_OpenCmdIf( Xcp_ChannelType XcpChannel, uint8 *Cmd, uint8
*Response, uint8 *Length )
Parameter
XcpChannel
The channel number in multi client mode.
Cmd
Pointer to command string
Response
Pointer to response string
Length
Pointer to response length
Return code
uint8
XCP_CMD_OK : if command is accepted.
XCP_CMD_PENDING : if command is performed asynchronously.
XCP_CMD_UNKNOWN : if command is not accepted.
Functional Description
Functional Description
Call back that can be used to extend the XCP commands of the XCP protocol layer.
Particularities and Limitations
> This function is asynchronous if it returns XCP_CMD_PENDING.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> User command feature need to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpOpenCommandInterface
Expected Caller Context
> Task level
Table 5-35 XcpAppl_OpenCmdIf
5.5.12 XcpAppl_SendStall
Prototype
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
55
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
uint8 XcpAppl_SendStall( Xcp_ChannelType XcpChannel )
Parameter
XcpChannel
The channel number in multi client mode.
Return code
uint8
0 : Reject sending of new message.
1 : continue processing.
Functional Description
Functional Description
Resolve a transmit stall condition in Xcp_Putchar or Xcp_SendEvent.
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Service request Messages feature need to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpAsynchMessage/XcpServiceRequestMessage
Expected Caller Context
> Task level
Table 5-36 XcpAppl_SendStall
5.5.13 XcpAppl_DisableNormalOperation
Prototype
uint8 XcpAppl_DisableNormalOperation( Xcp_AddressPtrType Address, uint16 Size )
Parameter
Address
Address (where the flash kernel is downloaded to)
Size
Size (of the flash kernel)
Return code
uint8
XCP_CMD_OK:
download of flash kernel confirmed
XCP_CMD_DENIED: download of flash kernel refused
Functional Description
Functional Description
Prior to the flash kernel download has the ECU’s normal operation to be stopped in order to avoid
misbehavior due to data inconsistencies.
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Bootloader download feature need to be enabled:
/MICROSAR/Xcp/XcpGeneral/XcpBootloaderDownload
Expected Caller Context
> Task level
Table 5-37 XcpAppl_DisableNormalOperation
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
56
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
5.5.14 XcpAppl_StartBootLoader
Prototype
uint8 XcpAppl_StartBootLoader( void )
Parameter
-
-
Return code
uint8
This function should not return.
XCP_CMD_OK :
positive response
XCP_CMD_BUSY :
negative response
Functional Description
Functional Description
Start of the boot loader.
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Bootloader download feature need to be enabled:
/MICROSAR/Xcp/XcpGeneral/XcpBootloaderDownload
Expected Caller Context
> Task level
Table 5-38 XcpAppl_StartBootLoader
5.5.15 XcpAppl_Reset
Prototype
void XcpAppl_Reset( void )
Parameter
-
-
Return code
-
-
Functional Description
Perform an ECU reset after reprogramming of the application.
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Programming feature needs to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpProgramming
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
57
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Expected Caller Context
> Task level
Table 5-39 XcpAppl_Reset
5.5.16 XcpAppl_ProgramStart
Prototype
uint8 XcpAppl_ProgramStart( void )
Parameter
-
-
Return code
uint8
XCP_CMD_OK : Preparation done
XCP_CMD_PENDING : Call Xcp_SendCrm() when done
XCP_CMD_ERROR : Flash programming not possible
Functional Description
Prepare the ECU for flash programming.
Particularities and Limitations
> This function is asynchronous if it returns XCP_CMD_PENDING.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Programming feature needs to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpProgramming
Expected Caller Context
> Task level
Table 5-40 XcpAppl_ProgramStart
5.5.17 XcpAppl_FlashClear
Prototype
uint8 XcpAppl_FlashClear( uint8 *Address, uint32 Size )
Parameter
Address
Address of memory area to clear
Size
Size of memory area to clear
Return code
uint8
XCP_CMD_OK : Flash memory erase done
XCP_CMD_PENDING : Call Xcp_SendCrm() when done
XCP_CMD_ERROR : Flash memory erase error
Functional Description
Clear the flash memory, before the flash memory will be reprogrammed.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
58
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Programming feature needs to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpProgramming
Expected Caller Context
> Task level
Table 5-41 XcpAppl_FlashClear
5.5.18 XcpAppl_FlashProgram
Prototype
uint8 XcpAppl_FlashProgram( const uint8 *Data, uint8 *Address, uint8 Size )
Parameter
Data
Pointer to data.
Address
Address of memory to store data at.
Size
Size of data.
Return code
uint8
XCP_CMD_OK : Flash memory programming finished
XCP_CMD_PENDING : Flash memory programming in progress.
Xcp_SendCrm has to be called when done.
Functional Description
Program the cleared flash memory.
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Programming feature needs to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpProgramming
Expected Caller Context
> Task level
Table 5-42 XcpAppl_FlashProgram
5.5.19 XcpAppl_DaqResume
Prototype
uint8 XcpAppl_DaqResume( Xcp_ChannelType XcpChannel, Xcp_ChannelStruct *Channel
)
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
59
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Parameter
XcpChannel
The channel number in multi client mode.
Channel
Pointer to dynamic DAQ list structure
Return code
uint8
Boolean flag whether valid DAQ list was restored.
Functional Description
Resume the automatic data transfer.
The whole dynamic DAQ list structure that had been stored in non-volatile memory within the service
XcpAppl_DaqResumeStore(..) has to be restored to RAM.
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Resume Mode feature needs to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpDaqAndStim/XcpResumeMode
Expected Caller Context
> Task level
Table 5-43 XcpAppl_DaqResume
5.5.20 XcpAppl_DaqResumeStore
Prototype
void XcpAppl_DaqResumeStore( Xcp_ChannelType XcpChannel, const
Xcp_ChannelStruct *Channel, uint8 MeasurementStart )
Parameter
XcpChannel
The channel number in multi client mode.
Channel
Pointer to dynamic DAQ list structure
MeasurementStart
If > 0 then set flag to start measurement during next init
Return code
-
-
Functional Description
This application callback service has to store the whole dynamic DAQ list structure in non-volatile
memory for the DAQ resume mode. Any old DAQ list configuration that might have been stored in non-
volatile memory before this command, must not be applicable anymore.
After a cold start or reset the dynamic DAQ list structure has to be restored by the application callback
service XcpAppl_DaqResume(..)when the flag MeasurementStart is > 0.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
60
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Resume Mode feature needs to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpDaqAndStim/XcpResumeMode
Expected Caller Context
> Task level
Table 5-44 XcpAppl_DaqResumeStore
5.5.21 XcpAppl_DaqResumeClear
Prototype
void XcpAppl_DaqResumeClear( Xcp_ChannelType XcpChannel )
Parameter
XcpChannel
The channel number in multi client mode.
Return code
-
-
Functional Description
The whole dynamic DAQ list structure that had been stored in non-volatile memory within the service
XcpAppl_DaqResumeStore(..) has to be cleared.
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Resume Mode feature needs to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpDaqAndStim/XcpResumeMode
Expected Caller Context
> Task level
Table 5-45 XcpAppl_DaqResumeClear
5.5.22 XcpAppl_CalResumeStore
Prototype
boolean XcpAppl_CalResumeStore( Xcp_ChannelType XcpChannel )
Parameter
XcpChannel
The channel number in multi client mode.
Return code
boolean
If true the calibration page was stored.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
61
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Functional Description
This application callback service has to store the current calibration data in non-volatile memory for the
resume mode.
After a cold start or reset the calibration data has to be restored by the application.
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Resume Mode feature needs to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpPageSwitching/XcpFreezeMode
Expected Caller Context
> Task level
Table 5-46 XcpAppl_CalResumeStore
5.5.23 XcpAppl_GetCalPage
Prototype
uint8 XcpAppl_GetCalPage( uint8 Segment, uint8 Mode )
Parameter
Segment
Logical data segment number
Mode
Access mode
The access mode can be one of the following values:
1 : ECU access
2 : XCP access
Return code
uint8
Logical data page number
Functional Description
This function returns the logical number of the calibration data page that is currently activated for the
specified access mode and data segment.
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Resume Mode feature needs to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpPageSwitching
Expected Caller Context
> Task level
Table 5-47 XcpAppl_GetCalPage
5.5.24 XcpAppl_SetCalPage
Prototype
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
62
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
uint8 XcpAppl_SetCalPage( uint8 Segment, uint8 Page, uint8 Mode )
Parameter
Segment
Logical data segment number
Page
Logical data page number
Mode
Access mode
The access mode can be one of the following values:
1 : ECU access the given page will be used by the slave device application
2 : XCP access the slave device XCP driver will access the given page
Both flags may be set simultaneously or separately.
Return code
uint8
XCP_CMD_OK : Operation completed successfully
XCP_CMD_PENDING : Call Xcp_SendCrm() when done
XCP_CRC_OUT_OF_RANGE : segment out of range (only one segment
supported)
XCP_CRC_PAGE_NOT_VALID : Selected page not available
XCP_CRC_PAGE_MODE_NOT_VALID : Selected page mode not available
Functional Description
Switch pages, e.g. from reference page to working page.
Particularities and Limitations
> This function is asynchronous if it returns XCP_CMD_PENDING.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Resume Mode feature needs to be enabled:
/MICROSAR/Xcp/XcpCmdConfig/XcpPageSwitching
Expected Caller Context
> Task level
Table 5-48 XcpAppl_SetCalPage
5.5.25 XcpAppl_CopyCalPage
Prototype
uint8 XcpAppl_CopyCalPage( uint8 SrcSeg, uint8 SrcPage, uint8 DestSeg, uint8
DestPage )
Parameter
SrcSeg
Source segment.
SrcPage
Source page.
DestSeg
Destination segment.
DestPage
Destination page.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
63
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Return code
uint8
XCP_CMD_OK : Operation completed successfully
XCP_CMD_PENDING : Call XcpSendCrm() when done
XCP_CRC_PAGE_NOT_VALID : Page not available
XCP_CRC_SEGMENT_NOT_VALID : Segment not available
XCP_CRC_WRITE_PROTECTED : Destination page is write protected.
Functional Description
Copying of calibration data pages.
The pages are copied from source to destination.
Particularities and Limitations
> This function is asynchronous if it returns XCP_CMD_PENDING.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Resume Mode feature needs to be enabled:
> /MICROSAR/Xcp/XcpCmdConfig/XcpPageSwitching/XcpCopyPage
Expected Caller Context
> Task level
Table 5-49 XcpAppl_CopyCalPage
5.5.26 XcpAppl_SetFreezeMode
Prototype
void XcpAppl_SetFreezeMode( uint8 Segment, uint8 Mode )
Parameter
Segment
Segment to set freeze mode
Mode
New freeze mode
Return code
-
-
Functional Description
Setting the freeze mode of a certain segment. Application must store the current freeze mode of each
segment.
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Resume Mode feature needs to be enabled:
> /MICROSAR/Xcp/XcpCmdConfig/XcpPageSwitching/XcpFreezeMode
Expected Caller Context
> Task level
Table 5-50 XcpAppl_SetFreezeMode
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
64
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
5.5.27 XcpAppl_GetFreezeMode
Prototype
uint8 XcpAppl_GetFreezeMode( uint8 Segment )
Parameter
Segment
Segment to read freeze mode
Return code
uint8
Return the current freeze mode, set by XcpAppl_SetFreezeMode().
Functional Description
Reading the freeze mode of a certain segment. Application must store the current freeze mode of each
segment and report it by the return value of this function.
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Resume Mode feature needs to be enabled:
> /MICROSAR/Xcp/XcpCmdConfig/XcpPageSwitching/XcpFreezeMode
Expected Caller Context
> Task level
Table 5-51 XcpAppl_GetFreezeMode
5.5.28 XcpAppl_CalculateChecksum
Prototype
uint8 XcpAppl_CalculateChecksum( uint8 *MemArea, uint8 *Result, uint32 Length )
Parameter
MemArea
Address pointer to memory area
Result
Pointer to response string
Length
Length of mem area, used for checksum calculation
Return code
uint8
XCP_CMD_OK : CRC calculation performed successfully
XCP_CMD_PENDING : Pending response, triggered by call of
Xcp_SendCrm
XCP_CMD_DENIED : CRC calculation not possible
Functional Description
Normally the XCP uses internal checksum calculation functions. If the internal checksum calculation
does not fit the user requirements this call-back can be used to calculate the checksum by the
application.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
65
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Particularities and Limitations
> This function is asynchronous if it returns XCP_CMD_PENDING.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
> Resume Mode feature needs to be enabled:
> /MICROSAR/Xcp/XcpCmdConfig/XcpStandard/XcpCRC/XcpCustomCRC
Expected Caller Context
> Task level
Table 5-52 XcpAppl_CalculateChecksum
5.5.29 XcpAppl_ConStateNotification
Prototype
uint8 XcpAppl_ConStateNotification( Xcp_ChannelType XcpChannel, uint8
ConnectionState )
Parameter
XcpChannel
The channel number in multi client mode.
ConnectionState
The new connection state (XCP_CON_STATE_RESUME,
XCP_CON_STATE_DISCONNECTED, XCP_CON_STATE_CONNECTED).
Return code
-
-
Functional Description
Notifies the application that the connection state has changed and which the new state is.
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
Expected Caller Context
> Task and interrupt level
Table 5-53 XcpAppl_ConStateNotification
5.5.30 XcpAppl_MemCpy
Prototype
uint8 XcpAppl_MemCpy( uint8 * Dst, const uint8 * Src, uint16 Size )
Parameter
Dst
The destination where the data is copied to.
Src
The source where the data is copied from.
Size
The number of byte to be copied.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
66
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
Return code
-
-
Functional Description
Copies data from source to destination.
Particularities and Limitations
> This function is synchronous.
> This function is non-reentrant.
> The XCP Protocol Layer has to be initialized correctly.
Expected Caller Context
> Task and interrupt level
Table 5-54 XcpAppl_MemCpy
5.6
Services used by XCP
In the following table services provided by other components, which are used by the XCP
are listed. For details about prototype and functionality refer to the documentation of the
providing component.
Component
API
DET
Det_ReportError
OS
GetCoreID
Table 5-55 Services used by the XCP
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
67
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
6 Configuration
6.1
Configuration Variants
The XCP supports the configuration variants
> VARIANT-PRE-COMPILE
The configuration classes of the XCP parameters depend on the supported configuration
variants. For their definitions please see the Xcp_bswmd.arxml file.
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
68
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
7 Glossary and Abbreviations
7.1
Abbreviations
Abbreviation
Description
A2L
File Extension for an ASAM 2MC Language File
AML
ASAM 2 Meta Language
API
Application Programming Interface
ASAM
Association for Standardization of Automation and Measuring Systems
BYP
BYPassing
CAN
Controller Area Network
CAL
CALibration
CANape
Calibration and Measurement Data Acquisition for Electronic Control
Systems
CMD
Command
CTO
Command Transfer Object
DAQ
Synchronous Data Acquistion
DLC
Data Length Code ( Number of data bytes of a CAN message )
DLL
Data link layer
DTO
Data Transfer Object
ECU
Electronic Control Unit
ERR
Error Packet
EV
Event packet
ID
Identifier (of a CAN message)
Identifier
Identifies a CAN message
ISR
Interrupt Service Routine
MCS
Master Calibration System
Message
One or more signals are assigned to each message.
ODT
Object Descriptor Table
OEM
Original equipment manufacturer (vehicle manufacturer)
PAG
PAGing
PID
Packet Identifier
PGM
Programming
RAM
Random Access Memory
RES
Command Response Packet
ROM
Read Only Memory
SERV
Service Request Packet
STIM
Stimulation
TCP/IP
Transfer Control Protocol / Internet Protocol
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
69
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
UDP/IP
Unified Data Protocol / Internet Protocol
USB
Universal Serial Bus
XCP
Universal Measurement and Calibration Protocol
VI
Vector Informatik GmbH
Table 7-1 Abbreviations
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
70
based on template version 6.0.1

Technical ReferenceTechnical Reference MICROSAR XCPMICROSAR XCP
8 Contact
Visit our website for more information on
> News
> Products
> Demo software
> Support
> Training data
> Addresses
www.vector.com
© 2017 Vector Informatik GmbH
Version 2.0.02.0.0
71
based on template version 6.0.1
Document Outline
- 1 Component History
- 2 Introduction
- 3 Functional Description
- 3.1 Features
- 3.2 Initialization
- 3.3 States
- 3.4 Main Functions
- 3.5 Block Transfer Communication Model
- 3.6 Slave Device Identification
- 3.7 Seed & Key
- 3.8 Checksum Calculation
- 3.9 Memory Access by Application
- 3.10 Event Codes
- 3.11 Service Request Messages
- 3.12 User Defined Command
- 3.13 Synchronous Data Transfer
- 3.14 The Online Data Calibration Model
- 3.15 Flash Programming
- 3.16 Multi Core Support
- 3.17 En- / Disabling the XCP module
- 3.18 XCP measurement during the post event time
- 3.19 Error Handling
- 4 Integration
- 5 API Description
- 5.1 Type Definitions
- 5.2 Services provided by XCP
- 5.2.1 Xcp_InitMemory
- 5.2.2 Xcp_Init
- 5.2.3 Xcp_Event
- 5.2.4 Xcp_StimEventStatus
- 5.2.5 Xcp_MainFunction
- 5.2.6 Xcp_SendEvent
- 5.2.7 Xcp_PutChar
- 5.2.8 Xcp_Print
- 5.2.9 Xcp_Disconnect
- 5.2.10 Xcp_SendCrm
- 5.2.11 Xcp_GetVersionInfo
- 5.2.12 Xcp_ModifyProtectionStatus
- 5.2.13 Xcp_GetSessionStatus
- 5.2.14 Xcp_GetXcpDataPointer
- 5.2.15 Xcp_SetStimMode
- 5.3 Services provided by the XCP Protocol Layer and called by the XCP Transport Layer
- 5.4 XCP Transport Layer Services called by the XCP Protocol Layer
- 5.5 Application Services called by the XCP Protocol Layer
- 5.5.1 XcpAppl_GetTimestamp
- 5.5.2 XcpAppl_GetPointer
- 5.5.3 XcpAppl_GetIdData
- 5.5.4 XcpAppl_GetSeed
- 5.5.5 XcpAppl_Unlock
- 5.5.6 XcpAppl_CalibrationWrite
- 5.5.7 XcpAppl_MeasurementRead
- 5.5.8 XcpAppl_CheckReadAccess
- 5.5.9 XcpAppl_CheckProgramAccess
- 5.5.10 XcpAppl_UserService
- 5.5.11 XcpAppl_OpenCmdIf
- 5.5.12 XcpAppl_SendStall
- 5.5.13 XcpAppl_DisableNormalOperation
- 5.5.14 XcpAppl_StartBootLoader
- 5.5.15 XcpAppl_Reset
- 5.5.16 XcpAppl_ProgramStart
- 5.5.17 XcpAppl_FlashClear
- 5.5.18 XcpAppl_FlashProgram
- 5.5.19 XcpAppl_DaqResume
- 5.5.20 XcpAppl_DaqResumeStore
- 5.5.21 XcpAppl_DaqResumeClear
- 5.5.22 XcpAppl_CalResumeStore
- 5.5.23 XcpAppl_GetCalPage
- 5.5.24 XcpAppl_SetCalPage
- 5.5.25 XcpAppl_CopyCalPage
- 5.5.26 XcpAppl_SetFreezeMode
- 5.5.27 XcpAppl_GetFreezeMode
- 5.5.28 XcpAppl_CalculateChecksum
- 5.5.29 XcpAppl_ConStateNotification
- 5.5.30 XcpAppl_MemCpy
- 5.6 Services used by XCP
- 6 Configuration
- 7 Glossary and Abbreviations
- 8 Contact