Sunday, July 24, 2016

A tryst with UDS Pt. 2

In Pt 1 we took a look at what is UDS. Lets see what it took me to integrate UDS with existing firmware.
We got hold of readymade UDS library which contained partial implementation of UDS. So I had to import the C sources into existing firmware code. Then debug them. And integrate UDS transport layer with eCAN module.
At the same time since we did not have any kind of tester available I ended up writing a small tester application in C++. This application would enable me to verify that the integration of UDS library is correct.
One clever hack I did was get the integrated firmware running somewhat on desktop and then replaced eCAN code with VCAN code (Linux Virtual CAN - socketCAN ). This way I got rid of hardware dependency, or otherwise it would have taken me months to test everything. As it is with this desktop version I was able to speed up the integration and finished it up in about a fortnight.
After I verified that the UDS transport layer is working fine and is indeed complete, I went through the application layer. In application layer I found out that most of the services are left as empty stubs and so another herculean task started. This is implementing all the services as per firmware characteristics. And it goes on till date as of now one month since with about six services implemented.

No comments:

Post a Comment