We've found that the variety of data types offered by the compiler is
of paramount importance to the ease and effectiveness of embedded
programming. Having lots of data types makes implementing your
programming solution easier. It also removes a big source of error:
the hand-optimization needed to encode data in assembly programs.
Starting in 2007 we're offering a large variety of fixed point data
types in new releases of our compilers. Fixed point data types handle
fractional values ("Fractional" types) and occasionally types with
This reference design demonstrates the new thread-based programming style that we created to complement the RS08, but it's used on an HC08.
There's only so much debugging information an LED or LCD display can report. What's worse, embedding debugging code in the executable can provoke misuse, while stripping it out can cause heisenbugs.
Your C compiler can help manage debugging information for you in a way that doesn't interfere with your product. Here's how:
I just read Jack's editorial on Embedded.com on the RS08 processor. This is a fun little processor.
We did some work on the instruction set design on this processor, and wrote a C compiler for the RS08. This is a remarkable little processor that, in the end, outperformed many people's expectations (including mine).
Jack Ganssle's latest column in embedded.com reminds us that there is still life in 8-bit architectures.
He mentions the Freescale RS08, which is supported by our C6808 Code Development System.
UPDATE: Jack cites an article on Circuit Cellar by Tom Cantrell, who also talks about RS08.
C6808 creates a stack through program code: it preserves the Shadow PC (
SPC) in a local variable and restores it prior to returning.
As an optimization, it eliminates this code whenever possible. When a function calls no subordinate functions, or when the call to a subordinate function happens at specific points in program flow, the compiler eliminates the saved PC and the memory location it would require.
This approach uses no extra memory compared to a hardware stack.
There's no reason not to use C to program even the smallest computers. C compilers improve on assemblers by:
- Allowing the developer to work in the problem space (choosing the symbolic operations), not the solution space (choosing the machine instructions).
- Calculating opportunities for optimization with both the algorithm and target hardware in mind.
I recently got an interesting code sequence out of the compiler.