 All right, so our last lightning talk is Stefano Babic and he will talk about SW update over canvas Okay. Thank you all So just a note about me. So I'm feeling so better developer. I'm working mostly for Thanks system engineer in Germany. I am Mantine for the NXP processor the I'm X for you boot but my Point so a point of this presentation or is about update I'm an outdoor a maintainer or SW that is one of a update agent for Betty Linux so just Say which what is W update is an update agent So after your builder in Yotto, Debian or whatever you are using you have to put all the Vega together or your artifacts so to pack and Establish it provide the way to pack all together and to install at the end on your embedded Linux device. So Supports any kind of Storage and Betty storage and you see rune and no flesh or whatever You can update the female Connecting microcontroller to a main Linux processor. There's different supporting interface for SW data like an integrated web server. There's a fleet management. This is the open server Yeah, you can start the loader from an external server. You can use any local interface Signing encryption and so on Supported security into a study of data. The point is now moving to another Type of bus that means on the vehicle Can bus so a stab you did was also used on some devices, but really there's no big difference with the standard in a stab you did usage because the device is still connected with a mobile network like Whatever to an external device the running stack is based on a TCP IP as well So really this is not The big difference the big difference that I have so what they want to show is my short experience in a project I have to update an embeddling device So this is a part was a network and this was an ECU and the only connection is the can bus so you can assess to the device via OBD2 or There's also a over there, but at the end of the ECU is Connected just via can bus. So we have some Difference so I have no TCP a most problematic is the can bandwidth on the can bus With just 20 there are 15 kHz and 8-bit payload There's no way at least in my project to switch to an a higher frequency for the can bus because the There's a lot of older devices connected to the can bus and nobody knows what happened a frequency was changed ECU that I have had also a small display because it was to control something for a refrigerator and The there's a cute application. So besides is not so small is 140 megabytes Reason not to do this via can bus is because there's a very only interface available. There's is Require a lot of effort to amount of the device face you and to put in a safe environment Just for updated and there's also an exit to have a over there not done that it will be Embedded in this device, but there are something on the truck that can connect Over there and then the the update packages should be transfer via can bus There's some Requirement to transfer on the can bus. So one point is how we get the can address for the ECU. This is done via the J 939 and The as you can understand the update packages are big So there's when this is to transfer big packages over the can bus and this is done via the isotip Specification that allows to Put together to manage a fragmentation and to have Messages bigger than it bite on the top of this tool specification They transfer to the ECU is done using a unique third university services that is the interface to the application so when I Take this there's just other constraints because Yes, I can propose a lot of things but in their automotive The automotive is quite conservative. So I Cannot use whatever I want Both a J 939 isotipi are part of the camera. There's a lot of very nice work in the kernel and these think still 56 was Mainline I Could use this adjuster in a hybrid approach So I can use the J 939 from kernel for ades claiming and get the ades of a ECU but for isotipi and UDS I have to use a customer library because my customers already used this and They have done also some certification So this is what is a realization at the end. So there's Underline came driver. They have a J 939 still in the kernel Isotipi and the UDS as part of a Process communicating with the rest and a small part I call being this this UDS proxy communicate with a real UDS application VSU and As the update provides also a library to send the package and to monitor the packages So to monitor how an update is going on. So incoming packages incoming comments from Canbass are then forwarded to the SW updates if they are related to the update and to do this there are some Comments in UDS but can be used that means all Messages that are not part of this list are transferred or forwarded to the UDS application of VCU And the VCRs intercepted and sent to SW update first there is a request download the question loader is more or less to check if Check for condition and check if an update can take place. So Just for Check and test if can go on Second is a request Five transfer in UDS is used to put a file into a file system of VCU In this case is not used at all It's just because SW data is working a streamer. So In the in zero copy. So you don't need to put the incoming stream of incoming package Into the file system. Everything is installed on the fly So this is just used to trigger and In update so as to be able to know something is coming when there's a lot of transfer data, of course So the whole package is past To close the transaction for the transfer request transfer exit and this closer way The transfer at this point the update is already installed by a study of data and it's also request because the activation of a software should be done in a controlled way So the system does not reboot automatically, but there's an additional UDS command is Routine control and this says a study of data. Okay. Now is time to restart the application Just to give you some time of course Requires a lot of time if everything is transferred that requires nine hours. This is not used or I think is used just in Vehicle workshop so when for service But the user way is to transfer just the application of the update takes ten minutes The way is to split between application and OS Libraries are part of us as I said also the Qt libraries are part of us there's they needed to make some consistency check and Well To be sure that the application is Compliant with libraries. So this is what is done in a study. Everything is then managed by a study of data There's a full partition now everything is managed in a B approach so there's two partition for us to for application and there's a priority that When an OS is updated it contains the application and the two other Partition for the application is not used until of course a new application will be updated This is just what is done inside. There's the data. So inside our sdw package Really, there are some hooks so there's the possibility to have a code inside our package better is Handled by a study of data and in this way is check which is the right partition to be updated and so on and so on so to Summarize so sites is always a challenge because of a can bus cannot do anymore In any case, there's an increased number of linux ECU so the update the process should be done and as I said also just via ACI and How to can be optimized depends really from the whole environment? So as I said, I could not do a lot more There are some way to have some kind of delta update. This is also what is done of splitting application and OS Thank you very much