About the Customer:
Our customer is an Asian automotive tier-1 pioneering the development of automotive telematics and connected mobility solutions.
For any ECU reprogramming, diagnostics, or telematics application to operate independent of the hardware, it needs SAE J2534 based pass-thru APIs. The automotive ecosystem is adopting this standard so that the same application can work with hardware from different vendors. Our customer had a similar requirement.
They essentially wanted the J2534 pass-thru APIs for a PC based application in .dll format. The challenge was not only to develop J2534 APIs but also to ensure that CAN messages are converted to UART before they are sent to the hardware. In addition, the integration of CAN ISO TP layer was also required. Development of ISO TP layer was in itself a skill-intensive and time-consuming task.
In a nutshell,
- The customer wanted to collaborate with a technology provider with extensive experience in delivering SAE J2534 based solution.
- Ready-to-integrate ISO TP layer would be a huge advantage as it would cut down the cost and reduce time-to-market for the customer.
Since, we had prior experience in implementing SAE J2534 for other diagnostics applications (mostly hand-held devices), we understood that a slightly different approach would be required for a PC based version.
Based on the requirements from our customer’s team we implemented the .dll file which comprised of the following components:
- J2534 Wrapper API: ISO TP along with J2534 stack is written in C code. J2534 wrapper APIs are implemented to provide C++ convention for APIs and also to enable accessing the dll file in the form of an object by PC application.
- J2534 Stack with ISO TP (ISO 15765): Communication over UDS or sending multiple message block require ISO TP layer. In this layer, we provide interface between J2534 and ISO TP so that packetization and depacketization of data is achieved at this layer itself.
- CAN to UART interface layer: CAN data cannot be sent through COM port; hence, it needs to be serialized into UART format. There is a frame format especially defined for this. We developed this interface layer as per the conversion structure provided by the customer.
- Windows API to COM port: These APIs are there to enable communication between USB port and the J2534 dll so that the PC application is able to open the COM port and read/write the files.
- UART to CAN interface layer: UART frames must be converted to CAN frames, so this interface layer is implemented.
The development time was reduced by approximately 6-8 weeks as we were able to integrate ready-to-deploy SAE J 2534 stack and ISO TP (15765) stack from our proprietary library of ECU communication and diagnostics protocol software.
Tools and Technologies:
QT Tool: The dll was developed using QT tool
CANoe: It was used for testing the library
Test/Sample ECU: Used to test the library