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.
"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. |
Refer questions, comments, or errors regarding this website to the webmaster@mrrobot.com
Copyright 2003, Mr Robot TM