You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* eBPF based process and syscall monitoring example
* Build script improved for more control over what is build
* Fixed DAQ event macros: Trigger DAQ event on first call
* Removed hack for rust version which detects unused calibration segment management and then use the callbacks
* Option to completely disable calibration segment management
Copy file name to clipboardExpand all lines: README.md
+15-6Lines changed: 15 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,8 +7,11 @@ XCP is a measurement and calibration protocol commonly used in the automotive in
7
7
It provides real time signal oriented data acquisition (measurement, logging) and modification of parameter constants (calibration) in a target micro controller system (ECU), to help observing and optimizing cyber physical control algorithms in real time.
8
8
9
9
Timestamped events, measurement variables and parameter constants are described by an ASAM-A2L description file, another associated ASAM standard. A2L is a human readable ASCII format.
10
-
Data objects are identified by address. In a micro controller system programmed in C or C++, these addresses are used to directly access the ECUs memory. This concept has minimum impact on the target system in terms of memory consumption, runtime and needs minimum code instrumentation. The A2l is a kind of annotated ELF Linker-Address-Map, with meta information on data instances and data types (MC specific types - lookup-tables, axis scaling, physical limits and units, conversion rules, ...).
11
-
In a Microprocessor system developed in a system programming language like C, C++ or Rust, this concept is still usefull and efficient. Measurement signals and calibration parameters must have a static lifetime and a defined memory layout, but no predefined memory location and no static storage class. Data acquisition and modification is achieved by appropriate code instrumentation for measurement and wrapper types for groups of calibration parameters.
10
+
In a micro controller system programmed in C or C++, measurement data items are directly accessed in their original memory locations. This concept has minimum impact on the target system in terms of memory consumption, runtime and needs minimum code instrumentation. The A2l is a kind of annotated ELF Linker-Address-Map, with meta information on data instances and data types (MC specific types - lookup-tables, axis scaling, physical limits and units, conversion rules, ...).
11
+
12
+
In a Microprocessor system developed in a system programming language like C, C++ or Rust, this concept is still useful and efficient. Measurement signals and calibration parameters usually have a static lifetime and a defined memory layout, but no predefined memory location and are not limited to static storage classes. Data acquisition and modification is achieved by appropriate code instrumentation for measurement and wrapper types for groups of calibration parameters.
13
+
14
+
From a software developer perspective, XCP may be considered to be a high-frequency application level tracing solution, using statically instrumented trace points with configurable associated data. Tracing can be started, stopped and reconfigured during runtime. What is not configured, does not consume bandwidth, memory and other resources. The acquired context data is always consistent and trace events are precisely time stamped. Data types and instances of available context data items are defined as code or obtained by a XCP tool from ELF/DWARF debug information. Data instances may be in global, local, thread local and heap storage locations. In addition to that, XCP provides the capability to modify application variables and state in a thread safe and consistent way.
12
15
13
16
The ASAM-XCP standard defines a protocol and a transport layer. There are transport layers for all common communication busses used in the automotive industry, such as CAN, CAN-FD, FLEXRAY, SPI and Ethernet.
14
17
@@ -23,10 +26,10 @@ Visit the Virtual VectorAcademy for an E-Learning on XCP:
23
26
24
27
XCPlite is an implementation of XCP for Microprocessors in pure C, optimized for the XCP on Ethernet Transport Layer for TCP or UDP with jumbo frames.
25
28
It is optimized for 64 Bit platforms with POSIX based Operating Systems, but also runs on 32 Bit platforms and on Windows with some restrictions.
26
-
The A2L measurement and calibration object database can be generated during runtime and uploaded by the XCP client on connect.
29
+
The A2L measurement and calibration object database can be generated during runtime and uploaded by the XCP client tool on connect.
27
30
28
31
XCPlite is provided to test and demonstrate calibration tools such as CANape or any other XCP client implementation.
29
-
It may serve as a base for individually customized XCP implementations on Microprocessors.
32
+
It may serve as a base for individually customized XCP on Ethernet implementations on Microprocessors.
30
33
It implements and demonstrates some techniques how to deal with variables in dynamically allocated memory and how to do measurement and calibration in multi-threaded applications.
31
34
32
35
XCPlite is used as a C library by the implementation of XCP for Rust in:
@@ -82,13 +85,12 @@ There is a CANape project for each example in a directory folder "examples/<Exam
82
85
To load a project into CANape, select load project and navigate to the CANape.ini file in this folder.
83
86
All CANape project examples are configured to upload the A2L file via XCP. The IP address of the XCP server is stored in the A2L file uploaded last time. If CANape can not connect, check that the correct IP address is configured in "Device Configuration/Devices/<DeviceName>/Protocol/Transport Layer".
84
87
85
-
The examples should run with a CANape demo version, which can be downloaded from https://www.vector.com/de/de/support-downloads/download-center.
88
+
The examples should run with a CANape demo version, which can be downloaded from <https://www.vector.com/de/de/support-downloads/download-center>.
86
89
The demo installation must be explicitly enabled in the installer and has some limitations:
87
90
It will store only the first seconds of measurement data and the number of measurement signals is limited.
88
91
89
92
Note: Some of the examples use display windows without title bars to make it look cleaner. This option can be turned of with "Options/Display/View/Display Headline".
90
93
91
-
92
94
### Example Details
93
95
94
96
hello_xcp:
@@ -135,6 +137,13 @@ cpp_demo:
135
137
Demonstrates measurement of member variables and stack variables in class instance member functions.
136
138
Shows how to create a class with calibration parameters as member variables.
137
139
140
+
threadx_demo:
141
+
Planned
142
+
143
+
bpf_demo:
144
+
Experimental, work in progress.
145
+
Demonstrates tracing of process creations and selected syscalls.
0 commit comments