Hi, I am currently looking for a Motorola HS12 series (MC9S12DG256) developing tools. Some vendors like Cosmic or Metrowerks offer interesting environments (IDE, code coverage, code test, code profiling, osek support etc.). Maybe someone has experience with such tools and could suggest me the best choice with regard to price and performance.
And TBH, I prefer Makefiles, but that's possible with all of them. Cosmic gives few options to optimize code. MW on the otherhand uses PASCAL calling convention, which is weared esp. if you mix assembly + C. IAR: I have problems using C-Spy with my P&E box, but might be related to my HW dongle. Also,you have to use commandline tools to make libraries.
GCC: It's free and the mailing list is quiete active (though mostly HC11)
There really is no such thing as "the C calling convention." There is a general set of properties for a calling convention that correctly handles C-style variadic functions, but there is no requirement that functions with fixed parameters follow the same conventions as variadic ones, or even that variadic functions use these exact conventions.
FWIW, these properties are: 1) parameters are pushed from right to left (i.e., as you show above, except "10 on stack) 2) caller performs stack cleanup
If this convention is followed, the first function parameter is always on "top" of the stack (usually following the return address), and successive paramters can be found by digging deeper into the stack.
Since Pascal doesn't (didn't?) support variadic functions (but *does* support nested functions), the calling conventions for Pascal tend to be different than those of C. For one thing, in Pascal the callee almost always cleans up the stack (it's usually more efficient).
we prefere Cosmic becouse it supports bool and bit-symbols what are ANSI99 standard. Even in assembler you can write e.g. bset device or in C simply write device=1. No macro construction and no need to remember what bit is connected to what port. Becouse most access in my device are bit access, this saves many time in writing and debug even at assembly level.
Another thing is the support of the Cosmic Linker for Code what needs diffrent placement and run address. This feature is rarely needed to shift code for execution to ram at runtime. Have no idea on how to do this with Metrowerks but I was lucky to have this comfortable features when I introduced in-application flash for CAN based updates to my board.
AFAIK, it is a vital feature nearly all linkers provide. But with some it is easier with some others you'll have to learn how to do it again and again and ....
--
42Bastian
Do not email to bastian42@yahoo.com, it's a spam-only account :-)
Use @epost.de instead !
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.