PRESS RELEASE: CorStarter™-STM32, ARM Cortex™-M3 C Starter Kit for $99

Available October 31st, 2013: ImageCraft’s CorStarter™-STM32 is a complete 32-bit ARM Cortex™-M3 C Development Kit for $99. It includes all the hardware and software to develop and debug C programs in a simple to use package.

The CorStarter-STM32 base board, powered by a 72-Mhz STM32 device with 256K flash and 64K SRAM, is more than 20 times faster than 8-bit AVR Arduino boards. With 8-bit Arduino Shield compatible headers, hundreds of Arduino Shields may be used to expand the capabilities of the system. Remaining IO pins are brought out to the header, allowing access to the full power of 32-bit embedded computing. The hardware design files for the CorStarter-STM32 base board are Open Source.

A choice of either the industrial standard Segger JLINK-Edu or ST-LINK/V2 (for ST devices only) provides fast code download and hardware debugging support. These JTAG/SWD pods allow full access to Cortex™-M devices and seamless debugging without source code modification.

To complement the hardware, the Kit also includes an ImageCraft Non-Commercial C compiler (ICCV8 for Cortex™) license. The C compiler includes a professional IDE with an integrated flash downloader and source level debugger. The compiler can be used for other Cortex™-M development projects as well. Finally, the Kit includes example projects and libraries for various Arduino Shields.

The CorStarter-STM32 base board can be purchased by itself for $45.

A companion college-level embedded system programming textbook will be available in Spring 2014.

For more information, please visit, or email

Designed and manufactured in the USA.

Posted in new product. No Comments »

Exciting Times Ahead

We are about to release ICCAVR version 8.10.00, with support for CRC generation and production ELF file. The latter allows users to specify all the special control bytes (fuse, lockbits etc.) in the C source file and have a single output file for device programming. More convenient and less error prone than existing methods.

We are also working on some very exciting products. More details later when we can talk about them :-)

Posted in new product. No Comments »

Another Milestone – We Now Have Our Own Debugger

Since establishing ImageCraft in 1994, we were one of the first, if not the first embedded compiler to include a Windows IDE. In 2009, our V8 release moved our IDE to the latest technological base when we adapted CodeBlocks. However, we still did not have our own debugger.

Until Now.

ICCV8 for Cortex V8.03.00 now includes an integrated debugger IDB. With a Segger Jlink unit, one click and the IDE will rebuild the project, flash download the program and start the debugger for you. All without writing linker command files or complicated debug pod configuration file.

IDB is fully functional under the PRO license and limited to one breakpoint and 64K program under -NC/STD/DEMO licenses.

We strive to provide the a combination of professional features, ease of use and cost benefits to our customers with our excellent technical support. With this release, we have moved the bar higher still.

The Press Release, also available here. Feel free to forward to anyone who may be interested.

Thank You.


December 3, 2012
ImageCraft‘s ICCV8 for Cortex is a Windows-hosted C cross compiler for the ARM Cortex M devices. Built from the ground up, ICCV8 for Cortex includes a state-of-the-art IDE, C compiler tools and integrated debugger. In interfacing with the industry-standard Segger Jlink JTAG/SWD emulators, ICCV8 for Cortex provides seamless flash programming and debugging for all major Cortex M3 devices without complicated driver installation or trial-and-error configuration.

The C compiler accepts C89 Standard C with C99 extensions, and performs device-specific optimizations and function-level global optimizations. The ImageCraft Debugger (IDB) is likewise developed in-house, and is fully integrated with our compiler and IDE to provide the best out-of-the-box user experience.
The IDE is based on Open Source CodeBlocks with modern IDE features such as code folding, project management etc. With ImageCraft’s modifications, there is no need for any linker command file; the user needs only to select the target device by name.

Another ease-of-use IDE feature is flash programming capability and debugging with Segger Jlink units without installing unusual system software or writing complicated configuration files. A single button click causes the IDE to build the project (if necessary), download the code to the device, and start the debugger.
A 45-day fully functional demo is available on ImageCraft’s website. ICCV8 for Cortex is competitively priced at $249 for the STD edition / $499 for the PRO edition (includes IDB.)

Posted in new product. No Comments »

Cortex Compiler Alpha Review

The ImageCraft Cortex V8 compiler is now in good enough shape to show to the world. Please click on the “ARM Cortex Compiler Tools” button on our site to visit the Cortex compiler page and to download the Alpha Review-1. The page will be updated with link to beta releases and production release later. Of course do expect rough edges everywhere.

V8 Cortex compiler is similar to the V8 AVR product. The installer is new and we will migrate the next V8 AVR (8.05.01) to use that as well.

With the exception of bitfields, structures, and floating point, the compiler toolchain works.

As we have not finished with the device startup code and other bootstrap support, the Alpha Preview is only good for checking out the look and feel of the product. You can also create projects and build and examine the .lst files.

We expect to support the NXP mBed platform initially at Beta so some user testing can be done at that time. We have tested the code generation extensively using our internal tools.

We are running a pre-production sales of 50% off for the Cortex licenses. If you think you will need the Cortex compiler in a few months, it’s a good way to save and to support us.

Please visit the Cortex page for more details.


In another news, we have also just released 8.05.00 version of the AVR product. Notably, we have rewritten the mixed arithmetic type optimization and it is now more robust and effective. It’s definitely a worthwhile upgrade for everyone.

Posted in new product. No Comments »

A Baby Step Toward ICC for ARM Cortex

The “M Profile” of the ARM architecture may very well be the 8051 of the 2010s as the Cotex M0, M3 and now the M4 cores are licensed by just about every silicon microcontroller makers. This presents a nice opportunity for us to provide our ICC compiler tools to the users.

One of the nicest things about Cortex is that ARM Ltd. finally defined standard interrupt controller and system memory map so it’s much easier to port software between different Cortex devices from different manufacturers – well, at least that’s the theory. It may not be as rosy in practice but clearly the situation is vastly improved over the last mass-market ARM devices based on the older ARM7TDMI core.

In house, we have a prototype instruction set Cortex simulator running, which is crucial in bringing up the compiler (it’s much easier to run massive number of tests on the simulator than on bare metal) and we even have a prototype of the the V8 CodeBlocks IDE supporting some kind of Cortex operations. None of these is anywhere near prime time of course, but the foundation is there.

The Cortex core is similar to the ARM7TDMI architecture which we already support in our ICCARM product. However, we have decided to rewrite the assembler and linker, to better fit with our product architecture. While this does add additional resource to the project, we do believe that this will have a positive impact in our future development and maintenance strategy.

The good news is that the assembler is now able to consume almost all of the Cortex “Thumb” and “Thumb2″ instructions. The assembler and linker are based on our time proven tools that we developed since 2000 so once we got the ball rolling, it should not take much time to finish it to a production stage.

The compiler is actually the easier part, as it is very similar to the ARM compiler. It will mostly be a matter of ripping out the If-conversion and to eliminating Thumb mode and interworking.

Our goal is still to release a beta version of ICC Cortex by the end of 2011. Stay tuned for further details.

Posted in new product. No Comments »

V8 USB Dongle And New Features That Increase Usability

We have been quite busy here at ImageCraft. The V8 USB dongle is in production – we have the electronic parts made and we are waiting for the manufacturer to deliver the custom plastic casings. They should be released in mid to late June. We are now running a pre-production sale:  you can purchase the dongle for $49.99, instead of $60 when it is released.

In the usability area, we have just added some MISRA C static checks to our V8 AVR compiler. MISRA (Motor Industry Software Reliability Association) C is a set of guidelines aimed to improve a program’s safety and portability in the automotive industry. With the ever-rising popularity of embedded devices, MISRA C guidelines are now being adopted by many organizations in the embedded space outside of the auto industry. (Think MISRA C as a superset of Lint, if you are familiar with that tool.)

We are currently only implementing a subset of the guidelines; more will be added in subsequent releases. More importantly, while a goal of MISRA C is to increase portability, we have identified a number of MISRA C guidelines that are never going to be an issue in any 2′s-complement machine, and rather than overloading the user with even more warning messages, some of those guidelines will not be implemented. It fits into our philosophy of increased usability, while not being so pedantic that it goes against being pragmatic. There are also checks that are difficult to implement from a technological standpoint; mainly ones that involve whole-program behavior checking or dynamic checks. We will consider those as resources permit.

It is typical to encounter hundreds and sometimes even thousands of MISRA C warnings when you first run your project through it. However, sometimes the pain of sloughing through the messages is worthwhile, as one of our users writes:

"Thanks to these MISRA warnings, I found a bug that has been going through unnoticed for a few years in a few projects."

Also, to further our emphasis on getting our users to produce more robust code, we have just released in beta the ability to perform cross module checking. This detects if your functions or data declarations are not consistently matched across all modules. The function checking is of lesser importance, as most programmers are now using function prototypes, and our compilers warn about functions that do not have proper prototypes.  The more useful aspect of cross module type checking is to detect the dangers of mismatched data declarations, which can be difficult to detect by hand; e.g.: in one module, you may have “int global_var;” whereas in another module, you may have “extern double global_var;”.

We will continue to improve our products to make your C programming job easier and get correct results faster. As always, I appreciate any comments or suggestions you may have. Please feel free to contact us.

Posted in new product. No Comments »

New Server and Other Status

We have moved the ImageCraft blog from wordpress to our own server.

Product news wise, we are now finishing up the XGate assembler support for the CPU12 compiler. The XGate is an independent RISC processor available on some Freescale CPUS12X devices. It can offload a lot of tasks that otherwise would cause interrupts to the main CPU and degrade the main CPU’s performance.

While Freescale’s main focus is in the automative and other industrial applications, the CPUS12 and follow-on series can still be quite useful in general embedded designs. The prices for the Freescale S12/S12X chips may be higher than some of their competitors’ products, but they may just have the right mix of technology, price and performance to meet your needs. And now with the addition of the XGate assembler, you can take advantage of this capability in your design. We plan to release this support in the next version update of the ICC12 product in November 2010.

After that, we will be full speed on our V8 Cortex-M compiler release.

Posted in new product. No Comments »

ICCV8 for AVR Released

After a year+ of researching and various false starts, and after surviving through the biggest downturn our industry has seen, and after some hard work by our consultant in porting the CodeBlocks IDE, and finally on the account of my birthday :-)

ICCV8 for AVR is here. You can download the demo from our site. The Purchase page is up. The upgrade from V7 equivalent version is priced at $75 until July 1st.

Thank you for your support. Now I can go to sleep :-)

Posted in new product. 1 Comment »

ICCV8 for Cypress PSoC1 (M8C Core) PRO Released

We have just formally released ICCV8 for Cypress PSoC1 PRO. You can download the 45 day fully functional demo from our website.

In 2009, Cypress and our company signed an Agreement that allows Cypress’ PSoC Designer software to include a license to our ICCM8C STD compiler. The STD compiler is found to generate code that is approximately 15%-20% smaller than the previous available free compiler from another vendor.  The PRO compiler is fully compatible with the STD compiler so no code change is needed.

Currently the code size reduction of the PRO compiler over the STD version is about 10%. We expect to release updates this year that will push the performance envelope further.

Posted in new product. Tags: , , . 2 Comments »

Next-Gen IDE, Code::Blocks pre-Alpha

Ancient History

When we started ImageCraft back in 1994, I don’t think any embedded compiler has an IDE at the time. We released our first Windows IDE before just about everyone else. It was a Windows 3.1 program, if I remember correctly. Around 2001 we released the V6 IDE with compatibility with 32-bits Windows. Then around 2005 we released the V7 IDE with a slightly more modern look.

IDE is a funny thing – it’s the first thing that potential customers see, but our customers have always told us that in the end, quality code generation is the number one priority. We agree with that and we have improved code quality steadily while making our tools easier to use.  Besides, it takes a lot of resource to write a good IDE, and with the onslaught of Eclipse and a few quality IDE/editors that are either free or available for a low cost, it does not make sense for us to devote limited resource that cannot compete with the vast resource IBM and others devoted to Eclipse.

So we started the quest for a next-gen IDE. The good news is that our compilers are command line programs and we have always opted to generate standard format makefile and use “make” to drive the build process. This means that our customers may use our IDE, other IDE/editors, or plain forego GUI tools and use command line tools. I’d guess that the split might be 40%50%-10% respectively.

We rejected Eclipse early on. It’s just too bloated and it has this “everything for everybody” philosophy that I feel uncomfortable with. For a while, the Visual Studio extension sounds promising as it leverages the Microsoft Visual Studio environment. However, Microsoft is, well, Microsoft, and the VS footprint is not significantly smaller than Eclipse, and there is the issue of “free” VS 2005 vs. VS 2008 (and now VS 2010) etc.

We even contemplated licensing some new IDE, but for one reason or another, they didn’t work out.

Enter the Code::Blocks

So finally, I am glad to say that we have a next-gen IDE in the work, and it is based on the Open Source Code::Blocks (C::B for short). It uses a modern editor engine and has good IDE features. It’s highly configurable with a plug-in architecture, and the licensing allows us to keep certain of our IP proprietary, which is important to keep our competitors at bay.

You can now get a pre-alpha version for ICCAVR here. Keep in mind that the link will change as we move through the alpha/beta process, and currently it is definitely not ready for prime time – you sneeze wrong, and it probably will break. OTOH, it has a good editor, and since it doesn’t touch the underlying command line compiler, it should generally be harmless to try.

Currently you must have a ICCAVR license to use this. The link is to a zip file, which you should unzip to your c:\iccv7avr directory. You run the IDE by invoking c:\iccv7avr\ImageCraftCB\codeblocks.exe. One of the first things you need to set is the location of the compiler. Go to Settings->”Compiler and debugger settings”->”Toolchain Executables” and type c:\iccv7avr (or where you install the AVR compiler) in the “Compiler’s installation directory.” Then go to the “Other Settings” tab, and make sure “Compiler logging” is set to “Full Command Line.” All of these will be made transparent later of course.

To create a C::B project, you can use one of the existing projects as a starting point. For example: invoke File->New->Project, and select the “ImageCraft AVR Project” icon. You can browse to one of the existing example projects, e.g. c:\iccv7avr\examples.avr\led and call the new project CB_LED. This creates a subdirectory called c:\iccv7avr\examples.avr\led\CB_LED. On the next tab, be sure to deselect the debug target build.

C::B automatically gives you a main.c file. You can right click on the file name on the project list and remove it. Then you can add the actual project source back. Right click on the project and invoke Build Options. Make sure you select the right target device and the Compiler->Output is set to “COFF/HEX with debug.” Set the “Return Stack” to 20-30 and generally just make sure the correct radio buttons etc. are selected. Eventually the behaviors will match that of our current IDE.

After that, you can build or rebuild your project, just like before. The C::B project operates independent of the current IDE project so both can exist independently (but also must be maintained independently).

There you have it. The first step of a modern IDE environment for your ICC compiler. C::B has a lot of potential, including existing support for debugging.

What’s Next?

C::B will be the V8 IDE. We will release it as an optional IDE for V7, for testing and feedback purpose, but it will probably not be a supported option for V7 per se. We will of course offer generous upgrade options (recall V6 to V7 upgrade was only $50 for at least 2+ yars): for ICCAVR, we will offer free V8 upgrades to any purchase since Sept 2009. We have not committed the V8 IDE for other platforms besides AVR yet, but the future compiler ports will use C::B as the basis. As for now, we are still debating whether to target the Atmel AVR32, or the ARM Cortex M0/M3 first.

With V8, we will also continue to improve code generation and post link optimizations, to build on top of our Code Compression technology. This will also be made on the Cypress PSoC ImageCraft PRO compiler, but that’s for another post.