I have some very old firmware builds I need to maintain, which were built using uvision3 on windows 7. As windows 7 support is due to end we are migrating to windows 10. Our modern builds using uvision4 are building and running fine. However, when I build the old projects under windows 10 using uvision3 the build succeeds, but won't run. Looking at the object code there are clear differences between the image built on windows7 and windows 10 using the same uvision3 project. Has anyone got uvision3 to perform under windows 10 as it did in windows 7? I have experimented with compatibility settings without success.
uVision versions are not what you have to compare --- that's just the outer hull. The crucial differences are almost certainly further in, most likely in versions of the compiler, assembler, linker, etc...
Looking at "object code" is the wrong approach, anyway. You have to compare, in this order:
1) hex files 2) map files 3) compiler listings (or absolute linker listings)
Thankyou for your reply.
According to the about uvsion3 pop up the versions are the same for win7 and win10, see below. uvision3 was installed on both machine using the same executable.
Looking at the hex files, they are quite different, in content and size! The map file is more helpful.Under win10 most of the compiler objects are *_clz.o, whereas win10 is *.o. For example __aeabi_i2f comes from fflt.o on win7 and fflt_clz.o on win10.
Tool Version Numbers: Toolchain: RealView MDK-ARM Version: 3.70 Toolchain Path: C:\Keil370\ARM\BIN40\ C Compiler: Armcc.Exe V4.0.0.524 Assembler: Armasm.Exe V4.0.0.524 Linker/Locator: ArmLink.Exe V4.0.0.524 Librarian: ArmAr.Exe V4.0.0.524 Hex Converter: FromElf.Exe V4.0.0.524 CPU DLL: SARM.DLL V3.70 Dialog DLL: DARMATS9.DLL V1.14 Target DLL: BIN\UL2ARM.DLL V1.49 Dialog DLL: TARMATS9.DLL V1.14
It doesn't sound right at all. I've used and re-installed various versions of uVision on various versions of Windows. So long as the uVision for a particular build of project is the same I expect to see (and do see) 100% identical final image builds.
Not installed uVision on Windows 10, but really can't believe that it is causing uVision to create different final images.
Under win10 most of the compiler objects are *_clz.o, whereas win10 is *.o.
Setting aside that you wrote Win10 for both, which doesn't make sense, those aren't quite "compiler objects". They're objects pulled from a library. That leaves two main possibilities:
1) somehow the project files ended up slightly different (or you picked a different target inside the project), causing different compiler/linker options to be used in the area of floating point support
2) the difference is in the libraries. E.g. one of the installation may have been updated at some point, and the other was not. Or maybe one is a fully licensed version, the other isn't (yet). Or you have library paths configured to look in strange places.
Time to take a thorough look at the tool invocations as documented in the list and map files.
Once again thank you for your help on these issues.
Following your suggestion, I found the library the objects are pulled from, Fz_5s.l.
When I compare this library, between the win7 and win10 installation, they are different. In fact, on win10, the uvision3 installation has the uvision4 library files under C:\Keil370\ARM\RV31\LIB\armlib. I have uvision4 installed under C:Keil\...; I suspect the installation wasn't performed correctly.
When I copied the win7 libary files accross to the win10 installation, the win10 build produced an identical hex file to the win7 build.
I think the safest thing to do is uninstall uvision3 and uvision4 and try installing again; then check the library files match the win7 installation.
Thanks again for your help.