Hello everybody!
I developed a way to perform differential updates (Delta FUOTA) and it depends heavily on the outputted binary resulting from the build. I compare the diffs between the two different build versions binaries and generate a patch file.
i noticed that when I have a small change in the code, say, a string that is written somewhere gets changed by N bytes. Ideally there should be N bytes of difference between one and the other version binaries. The reality is, the code optimizations and linker totally mess it up to the point that adding few dozen bytes in a string results in about 7kB of changes between one binary and the next.
My question is: Is there a way to implement a deterministic build system so that we can overcome this difficulty and produce smaller deltas? I am using Segger Embedded Studio with the recommended settings for the nRF5 SDK, in Linux, Mac OS and Windows. It is easier for me to experiment in Linux, though. My compiler is GCC as it comes in the stock SES+nRF5.
Thank you for precious insight!
Regards,
//Emanuel A.