Jon Wilder
Active Member
Hi all. Something I've always been really big on is copyright infringement and other companies stealing firmware code. I can see where it would become difficult to prove if they can produce functionally identical code that was either written in the same language but differently from how your source is written, or if they wrote it in a different language altogether.
However...a couple of scenarios where I would think you could prove that your firmware was stolen would be -
(a) If the manufacturer in question couldn't produce the source code for the firmware in question
(b) If checking the binaries from both manufacturers against each other proves them to be an identical match
If you write in assembly, option b would be a very easy way to prove that the company in question is definitely using your firmware as the same source file is going to assemble the same every time. However, in higher level languages I'm not so sure. My question here is if you take your C source files and compile them multiple times, does the compiler usually compile it the same way every time? Or is there a chance that the compiled binary may end up being compiled with a different set of instructions and program memory locations each time you compile the source (assuming no changes were made to the source files)?
I always set the read protect bits on the code memory in the final release source code, which does offer readback protection. I'm just trying to think of the scenario where someone may know of some way to get around this.
However...a couple of scenarios where I would think you could prove that your firmware was stolen would be -
(a) If the manufacturer in question couldn't produce the source code for the firmware in question
(b) If checking the binaries from both manufacturers against each other proves them to be an identical match
If you write in assembly, option b would be a very easy way to prove that the company in question is definitely using your firmware as the same source file is going to assemble the same every time. However, in higher level languages I'm not so sure. My question here is if you take your C source files and compile them multiple times, does the compiler usually compile it the same way every time? Or is there a chance that the compiled binary may end up being compiled with a different set of instructions and program memory locations each time you compile the source (assuming no changes were made to the source files)?
I always set the read protect bits on the code memory in the final release source code, which does offer readback protection. I'm just trying to think of the scenario where someone may know of some way to get around this.
Last edited: