I have archived a PSOC Creator 4.1 project using the "Minimal" setting in order to create the minimal amount of files that I need to create a GIT repository. I then opened the archived zip file and copied the top level directory and its entire contents to a separate directory. In that new directory, I deleted the path ".\CortexM0\ARM_GCC_541\Release" which contains the output hex file. I also deleted the path ".\Generated_Source\PSoC4" which contains all of the generated source code. I then opened up this new project and clean and built the code. I then compared the original Intel hex file to the new hex file and discovered that the 2 files are significantly different.
So I started again with the archive file and copied the entire contents to another new directory. In this new directory, I again deleted the path ".\CortexM0\ARM_GCC_541\Release" which contains the output hex file. But now, what I did was delete all of the files in the path ".\Generated_Source\PSoC4" which contains all of the generated source code but i did NOT delete the path (an empty directory ".\Generated_Source\PSoC4" still exists). I then opened up this new project and clean and built the code. I then compared the original Intel hex file to the new hex file and discovered that the 2 files are IDENTICAL.
Can someone explain. Since our project will eventually become an FDA medical device, we need to be able to identically reproduce the Intel Hex file
NOTE: I did not touch any of the default project settings.
Can you compare the generated files (between your archive and what generated)? Also, are you building in debug mode? If so, the debug information could have references to the project paths, or time-stamps)
I've built the code for the Release Configuration and the Debug Configuration with the same results. I would be shocked if the hex files (i.e. any linked library or object files) would have date/time stamps or project path info in them, but who knows.
Given the above the test condition in my first post, I've done some further investigation and it seems as soon as one deletes the "generated source" path and rebuilds, the .cyprj file changes dramatically.
As per Hendrik's suggestion, please do a diff of the Generated_Source directories corresponding to the two different hex files. That might help in debugging the issue.
Just did a comparison of the Generated Sources directory (with WinMerge) and all files are identical. It looks like the link order of the object files is changing and thus changing the hex file contents. I'm guessing the link order may be affected by changes to the .cyprj that is occurring. BTW: either hex file that is programmed on the target hardware works properly, but as noted previously, it is imperative that I can rebuild identical hex files for the FDA.
I actually created a new project from scratch and performed the above test case and could NOT reproduce the failure. The Intel hex files were identical. Not sure if this has anything to do with the issue, but the project in question was upgraded several months ago from 4.0 to 4.1
It seems the issue is project specific. I tried the same steps in an example project and getting the HEX file same.
We might need to have a look into the migrated project to debug. You can share here or create techsupport case and share, if it is confidential.