NefMoto

Technical => Flashing and Chipping => Topic started by: woj on June 22, 2017, 02:21:36 PM



Title: Flashing and complete ECU reading times?
Post by: woj on June 22, 2017, 02:21:36 PM
I have relatively little experience with ECUs other than the ones that work with for my own cars (two so far), so a stupid question perhaps - what are the best reading and flashing times for custom written boot-mode software for ST10 based ME ECUs? Asking because for my ECU (ME7.9.10) which is 850K in flash size the theoretical limit at 115200 baud is about 1 minute (to just transmit the data), so far my software does it in 1.5 minutes for reading and just under 2 minutes for writing. I simply wonder if further fight to reduce these times has any chance of more improvement?

EDIT: and of course only after I asked I have seen the post a couple of lines below about MED flashing times. Apparently I can still improve it...


Title: Re: Flashing and complete ECU reading times?
Post by: prj on June 22, 2017, 07:03:23 PM
You can do it much faster.

1. Use compression.
2. Use higher baud.
3. CRC each flash block and erase/write only the ones that were changed.


Title: Re: Flashing and complete ECU reading times?
Post by: woj on June 24, 2017, 10:30:48 AM
Can't seem to do higher than 115200 baud, on my Linux box the whole thing just refuses to communicate, not sure at which end though. On the other hand, after fixing a handful of comm related things on the PC side, I can now push in (flashing skipped) and pull out the whole file in 1:16. At this baud rate, the theoretical max is 1:14, so I am good here. Flashing takes additional 20 seconds or so on top the transmission time. Selective block writing I already had, only manual, CRC code based is indeed a better idea.

So I am left with the compression, since most time it would be the data block / segments writing, I am guessing a simple per word run length compression should do the trick?


Title: Re: Flashing and complete ECU reading times?
Post by: woj on June 25, 2017, 04:10:14 PM
OK, so some figures with and without CRC checking and simple RL compression (all with actual flashing included):

- complete forced rewrite (no CRC checks): 1:12

- complete rewrite with CRC checking when only data blocks need writing (typical dummy mode for updating tables): 17 seconds

- forced manual rewrite without CRC checking of just the data blocks (128K, but highly compressable): 7 seconds, with CRC checking (obsolete, data needs updating anyhow) additional 2 s.

I could probably improve some split of a second here and there using better compression, however, right now my boot code fits into the IRAM, which simplifies things a lot.