views:

268

answers:

1

I'll admit upfront that I don't know a whole lot about ARM development, so I probably have by information wrong here.

Visual Studio comes with an ARM assembler (armasm.exe), which is extremely convenient because I use the tools included with VS for basically everything and I'm not too wild about paying for an ARM assembler that comes bundled with a C compiler that I'll never use from other companies.

Now, my understanding is that ARM binaries that are run on-the-metal need to be in a pure binary format instead of something like ELF or PE. Is ARMASM capable of outputting binaries that can run without an operating system? The MSDN documentation for ARMASM appears to be lacking in regards to that type of information.

If not, can you recommend a free ARM assembler that provides macro support and doesn't come bundled with a bunch of extra fluff?

+2  A: 

The assembler just produces object files. It's up to the linker to produce the final, executable, file. I'm pretty sure Microsoft uses pretty much their usual linker, which produces PE format executables (which is a COFF variant, in case you care). Offhand, I don't know of a linker/locator that will take MS-COFF format object files and produce a pure binary output file (though that hardly means one doesn't exist -- I've never really looked for one).

Also note that running on the bare metal most means burning your file to some variant of ROM. That means you really don't need a pure binary output file -- what you really need is a file suitable for a ROM burner. That usually means Motorola S-records or Intel hex format (quite a few ROM burners accept both).

I know that doesn't give you a "final answer", but it should at least give you a few terms suitable for Googling to get more relevant information...

Jerry Coffin
I feel really silly for forgetting that the linker produces the final output. :P Thank you for the information! I'll see if I can dig anything else up now that I know what I'm looking for.
David Brown