I am using CCS 5.5 on a variety of Tiva chips. I output .out files for debug and .hex files for the factory. The last step of development is to:
- commit and tag all projects to SVN (from the dev area)
- export them to a new empty directory (the export area)
- create a new workspace
- import the four projects
- rebuild
- compare the hex files in the dev and export areas
If the hex files compare, then there is reasonable assurance that a engineer recovering the development package months or years down the road, using the same compiler package, will be able to generate the exact same hex file.
The problem is the hex files do not compare - for one of four targets, each using four CCS projects (one app and three libraries). The differences are significant. Looking at the resulting map files, it appears that the size of many modules change, as if optimization levels are different.
I run a directory comparison between the dev and export areas and all *.c, *.h, .project, .cproject, .ccsproject prove to be identical. The three projects having library outputs end up with libraries where the library table of contents from armar have all obj files of different sizes.
I save the output from the CCS build's Console window into text files and compare the two builds, except for the root of the file locations, all compare identically, i.e. the options are the same, the compiler path is the same, the optimization is the same, ...
I copy the files from the export to the dev area and rebuild and get what was built in the dev area. So the changes seem to be locked to the CCS workspace. But I have started from a new workspace on both sides repeatedly.
I have found one difference in 'makefile' where the line:
CommonLib.lib: $(OBJS) $(LIB_SRCS)
would contain $(OBJ_SRCS) where this is defined as:
OBJ_SRCS :=
So I do not think the difference is a player, but why would CCS add it in one makefile and not the other?
For three targets, the hex files compare exactly.
So how can I have identical source and project files, use the same compiler and get a different hex file?