We have two different projects that were developed under Crossworks 2.x series (we've been using Crossworks for ARM for about 6 or 7 years, starting with the 1.x series). A number of our legacy customers use the 2.x tool still, and we provide source with libraries that get linked into the project to them. The projects have since been moved to Crossworks 3.x. No changes to the project files have been made (both 2 and 3 can open the same solution). However:
1) The compiled size of the 3.x series varies from 2.x (25% less in one project, 5% bigger in the other!). Libraries compiled in one project are not compatible with the other (EABI0 vs. EABI5), so this could be part of it of course.
2) Both projects are slightly and very unstable in 3.x. Addition of a structure containing 4 bytes, for example, was successful. However, when one of the variables within was changed to a different initial value, compiled and run, a hard fault resulted on 3.x. This variable was not used in code however. So should have been optimized out, or at the least had no impact at all. Inspection of the hex file from the 3.x series showed only 3 bytes different between compiles (which should have been the variable initial value being changed), yet it hard faults. Not with the same code and a 2.x build however.
3) There have also been many instances where simply loading a project in 3.x crashes Crossworks (using Win 7, 64 bit machine).
In general, we need to move to the 3.x (and it has features that are nice upgrades). But it still feels a little bit rickety and we have to evaluate the right way forward. Is there a migration guide or other comprehensive documentation that shows (besides release notes, which are bullet points) or explains what is so significantly different between 3.x and 2.x? For example, if there is an optimization setting in 3.x that isn't valid or is ignored by 2.x, that would be good to know. The fact that the solution files are loaded by each project without a problem is nice, but if there are differences like this that would affect our use, it would be good to have some warning.
And maybe at a minimum, is there a way to force compilation under 3.x to match that of 2.x?
To be clear, we don't want to stick with 2.x. But both projects act flaky enough on 3.x that our confidence is a little iffy right now....
Please sign in to leave a comment.