We have a hardware engineer that has been loading new devices using a ULINK2 on a K64. Long story short, he has been renaming our released .hex file to a .axf file. There is no conversion that he is doing, just simply renaming it.
We created a blank Keil 5.1 project where he goes to the "Options for Target" screen , and clicks on the Output tab, changes the "Name of Executable" to the newRelease.axf and then clicks the Load button.
How does this even work?
File extensions don't mean much. The code can presumably determine if the content is in ELF or Intel Hex formats, it is not a technically complicated determination to be able to make. If it works, let it go. Most places use specific production programming methods, not installations of Keil tools, to program devices for manufacture.