Hi Luke,
let's do some calculation. I hope I won't make a mistake:
There's 8MB flash -> 8 388 608 bytes to program.
Considering typical timing:
... programming itself will take (without SW overhead):
- using 64bits programming: 45s
- using 256bits programming:19s
- using 1024bits programming:17s
Data payload of one s-record line is 16bytes (considering output from SRECCONV). Size of whole line is 23bytes. Due to ascii format, 46 characters need to be sent per line.
To cover whole 8MB flash, we need 524 288 s-record lines. That means we need to transfer 24 117 248 characters.
When using speed 115 200 bits/s, we need 86.8us to transfer 1 ascii character (start bit + 8bit data + stop bit). To transfer whole s-record file, we need 2 093s = 34min.
Comparing to binary file:
We have 8 388 608 bytes and speed 86.8us per byte => 728s = 12min
So, optimalization of programming procedure is not so significant (but can help too) but using of binary file can decrease the transferring time to about 1/3.
But it also depends on your image - if there are large gaps in the s-record format, the difference may not be so significant because the gaps need to be transferred too in the binary image.
Transferring of binary image is much simpler than decoding of s-record lines, so it shouldn't be difficult to update the bootloader.
Regards,
Lukas