Adapted from Imagecraft's FAQ:


Q: What is in the ICC11 C compiler packages?

Package includes a full ANSI C compiler. Also included are an assembler, linker, C-subset library, librarian, and library source. The Windows versions include a Windows Integrated Development Environment (IDE). All versions come with a 90 (or so) page comprehensive manual.


Q: Why is the price so low - what is "missing?"

We know most competitors' ANSI C compilers cost between $700 to $1500 and more. They usually support the full ANSI C library (we provide a subset), they often have support for symbolic debugging with ICEs and may sometimes have tighter optimization (although the code difference is only about 5%-20% in real code).

Also, we include immensely useful features that almost no one else has: for example, other compilers do not include an IDE, or they have an IDE that by itself costs more than our whole compiler package! Our IDE has an integrated Project Manager, and integrated EEPROM (external and internal) and RAM programming using the Special Bootstrap mode... do theirs? Another example: our linker allows you to specify memory ranges for a (text or data) section, allowing you custom-specify your memory locations, such as: "the ROM is from 0x8000 to 0xFFFF, except for the 512 bytes of internal EEPROM at 0xB600." How about the infamous BUFFALO bug of overwriting location 0x4000? Under ICC11, you can work around that easily.

We are supporting more debug solutions. See debuggers for details.

Q: What about technical support?

We often provide quicker turnaround and patches than our competitors do through the Internet. Our technical support is provided directly by the product developer. Please send ICC11 technical support questions by E-mail to support@imagecraft.com for the fastest response.

Check this list of common problems before contacting tech support:

"hello world" does not work:
Is the baud rate set correctly? BUFFALO sets the baud rate to the default 9600 baud, but if you are running a stand-alone program, you have to set the baud rate yourself.
The default putchar function uses the SCI port. Is your RS-232 output on the microcontroller system coming from the SCI port? In particular, the Motorola HC11 EVB boards use the ACIA chip instead of the SCI port. A solution for the Motorola EVB is to write the putchar function to use the BUFFALO character output routine instead.

program hangs after finishing:
If your main() function "returns," the transfer of control goes back to the code in the start-up file crt11.s, and the default behavior is to execute an infinite loop. An alternative behavior, especially when executing under a monitor such as BUFFALO, is to return control to the monitor program. Note that under BUFFALO, a simple "rts" in crt11.s after the call to main would not suffice since the start-up code loads a new value to the stack pointer as the first instruction, which is likely different from the one that BUFFALO was using. Thus when an rts is executed, it would not have the correct return address on the stack. To get the desired behavior, either replace the infinite loop with the "swi" instruction which would cause an interrupt trap back to BUFFALO or delete the "lds" instruction.

interrupt handlers do not work:
Did you enable interrupt via the INTR_ON() macro or the "cli" instruction?
If you are using a C function as an interrupt handler, you must use the interrupt_handler pragma before you define the interrupt handler function.
You need to set up interrupt vectors: stand-alone programs need to use the vectors.c file, and programs running under BUFFALO need to use the pseudo vectors in RAM. Note that each entry in BUFFALO pseudo-vector entry is 3 bytes long, please refer to BUFFALO's documentation for information.
In order to use interrupts on some of the HC11 subsystems, you must turn on the interrupt enable bits. For example, the Timer Output Compare enable bits are in the TMSK1 register. In most cases, you must also clear the interrupted flag by writing a "1" into the flag register in your interrupt handler. For example, the Timer Output Compare flag bits are in the TFLG1 register.

printf does not print floating point number:
You must explicitly link in the libfp.a library. "#include <stdio.h>" in your source code is not sufficient.

programs do not work:

Is the HC11's COP Watchdog timer enabled accidentally? The Watchdog timer would interrupt and reset your target if enabled "on" accidentally. Refer to the HC11 reference manual for details. Basically, ensure that the NOCOP bit is "1" in the CONFIG register (i.e. the 3rd bit of 0x103F is 1).
Program areas should not overlap. Check your map files! In particular, setting data and text to the same address would cause problems.
If your program is a stand-alone program, then it needs a reset vector!
BUFFALO has a bad habit of writing to location 0x4000 due to an artifact of the Motorola EVB. You can either delete the offending code in BUFFALO and burn a new BUFFALO ROM, or use the linker address range to skip over the 0x4000 location.
Did you accidentally check the "No Startup File" checkbox in Option->Compiler->Linker? This option is useful only for building stand-alone modules such as ROM library code.

bootstrap mode downloading does not work:
Is the HC11 running with a 8Mhz clock? Does the target board support bootstrap mode?
If you are using one of Technological Arts Adapt-11boards, make sure that the "write enable" switch is off every time you power on or reset the board. Also choose the right type of memory device you are downloading in the bootstrap mode option.

assembler cannot assemble assembler modules:
The ias6811 assmbler uses different syntax than Motorola freeware assembler. In particular, the bclr/bset/brclr/brset syntax is different.
Direct page reference must be preceded with the '*' character.


Q: "Please leave a message..."

If we are not near our main phone, we try to have the line forwarded to our current location. In the event that you do not reach a "live person" on the phone, YES, we DO answer all our phone messages, often within 15-20 minutes. Please DO leave a message, otherwise we have no way to know you are trying to contact us! (E-mail responses may often be even quicker.)

Please send technical support requests by E-mail to info@imagecraft.com for the fastest response.



Q: What about pricing on version upgrades?

Registered owners of previous versions who wish to purchase the latest version may receive upgrade discounts.


Q: What features are in the Windows IDE?

Integrated Project Manager, syntax aware editor, terminal, plus integration with the compiler tools. ICC11: Internal / external EEPROM and external RAM programming via the Special Bootstrap mode. ICC12: BDM downloading w/EVB912 and Kevin Ross' BDM POD.


Q: Do the compilers include a macro assembler?

We include a stand-alone assembler, but it does not have macro capability. It does have include file support.


Q: What about HC11 assembly code already written with the Motorola freeware assembler?

We have a conversion program that translates 95+% of the code into our format.


Q: What variants of HC11, HC12 and HC16 do the ImageCraft compilers support?

We support all variants of the HC11 (not including paged memory mode support for K4) and HC12 (currently not including paged memory support). We support all variants of the HC16. All modes of operation including single chip mode and expanded mode are supported.


Q: Do the compilers support debuggers? ICEs (In Circuit Emulators)?

The compilers generate Motorola standard S record file format, but ICC12 and ICC16 currently do not generate symbolic information for ICEs. ICC11 supports the TECI ICE, and also provides some symbolic information for our optional debugger NoICE11. ICC16 supports debuggers from P&E & WC Technology; ICC12 also supports those too, as well as Axiom Manufacturing's AX-BDM 12 debugger.



Q: What is NoICE11?

It is a DOS based remote debugger which works with both the ICC11 Windows and DOS versions. Although not a full source level debugger, it does understand some source level constructs such as file names, source lines, and global symbols. It has all the features of a monitor debugger including breakpoints, tracing, disassembly, etc. It also has a DOS GUI with multiple windows and mouse support.


Q: What do you need to use NoICE11?

You need to run a small (about 1K bytes) ROM monitor on your target. It can only debug RAM based code and needs a serial port to communicate to the DOS debugger program. Once your program is working from RAM, you can then relink it to ROM addresses.


Q: What platforms do the compilers run on?

The compiler tools run on 386 or higher processors. Currently the command line tools run on DOS, DOS boxes and emulators under Windows 3.X, Windows 95, Windows NT, OS/2, Mac and Unix, etc. The Windows IDE works under Windows 3.1, Windows 95, and Windows NT. The Windows IDE does NOT work on a Windows subsystem under OS/2. Linux and FreeBSD versions are now available. These have all the compiler tools except for the Windows IDE.


Q: What other processors will ImageCraft support?

The AVR compiler is available upon request, ask your Mr Robot sales rep for the best price.

Q: Are site licensing or volume discounts available?

Yes. Call 804-426-3394

Q: Why is this C compiler priced so low?

Well in the author's own words:

  
    Actually, a better question would be to ask the other vendors, why are their prices so high? If you ask them, they will say it is because they have great features, high level optimizations, great support, great debugging capabilities, etc. etc. But the simple answer really is "because it has always been done that way."

      In the "Jurassic Era" of embedded programming (about 15 years ago), when the first C cross compilers come out, their prices were high. After all, the embedded systems market was small, and the few customers at the time were all working for large companies. A $1200 compiler is a "peanut" investment in a project costing hundreds of thousands or even million dollars. In fact, the venerable HC11 was designed and produced to control car engines for a certain large U.S. automobile manufacturer.

      Folks who remember the history of PC compilers may see a parallel here. The first generation of C compilers for PCs cost around $800. One day, however, along came Borland with Turbo C and blew the market wide open. After the dust settled, competition drove PC compiler prices way down (until a certain 800-pound gorilla gobbled up all the small fry, which is another story....).

      For the embedded market at that time, no such opportunity existed. While Borland sold more than 500,000 copies of Turbo C in the first year, it is doubtful that the total number of embedded systems cross compilers ever sold has yet come anywhere close to that figure. So, instead of dropping the prices of embedded compilers, the vendors actually increased their prices as their overhead grew. Sure, they provided new features like C++, source level debuggers etc. but in fact, to keep their high prices, embedded tools providers start to move toward supporting the higher end chips. Why? Because the high end chips are used by the large companies in their new embedded system designs. Once again, justifying a $2,000 compiler is nothing when a project budget of $20,000+ is the norm.

      Today, there are billions and billions of embedded systems in use. As embedded systems have become more pervasive, and since now anyone can get reasonably-priced microcontrollers (under a $1 for the low end ones), the potential for a low cost market has blossomed, but, until recently, there was no one to fill it. (Actually, to be accurate, people can always program in assembler, which manufacturers usually give away free. Also, there are Small C or other free C compilers, usually for the older K&R dialect of the C language. For many reasons, however, these are not ideal tools.)

      The time is ripe for low cost full ANSI C development tools. ImageCraft's mission is to address the embedded systems market for customers who cannot afford the traditional high cost of embedded systems tools. Our compilers accept the ANSI C language with 4 byte longs and 4 byte floating point. Our IDE (Integrated Development Environment) is very easy to use and has been described as much easier to use than the IDE's of the other companies. Our code quality is quite competitive. Perhaps the reason for this is that we use our products ourselves; if there is a feature that is missing, superfluous, not useful, etc. we tend to really notice it.

      Best of all, when you need technical support, you get it straight from the developer, not through several levels of some "technical support" help desk.

      So, all this sounds too good to be true? Find out for yourself. Download our demo compilers from
our Downloads Page, and see the compilers in action. As demos, they don't generate valid output (s19) but you can discover yourself why there is no need to pay "Jurassic Era" prices for your embedded tools.

      What's the next mountain that we will conquer? Besides new compilers for other popular chips including the so-called high end ones, watch out for a low cost debugging solution. We will be there.

--// richard


10220 Robious Road, Richmond, VA 23235

Start over at the Front Page (http://www.mrrobot.com/)

Refer questions, comments, or errors regarding this website to the webmaster@mrrobot.com
Copyright 2003, Mr Robot TM