Friday, October 30, 2015

Getting started with Jumpstart Microbox

Richard Man at Imagecraft recently offered a free Jumpstart Microbox to bloggers willing to review it.  The kit includes ST Nucleo board with a STM32F030R8 ARM MCU, an add-on board, the Imagecraft compiler, and a book on embedded C programming.  I've done a lot of 8-bit AVR development, and had intended to test out some of the STM32 MCUs, so I took Richard up on his offer.  The price point is much higher than a $4 Maple Mini clone with stm32duino, but Richard says they're trying to compete with IAR & Keil, not arm-gcc.

Before the hardware arrived I downloaded the IDE, which is based on Code::Blocks.  It includes an annoying license manager (I haven't found a licence manager I didn't hate).  On Windows 7E-64, the IDE identifies itself as Imagecraft 8.12.  Unlike gcc, Imagecraft is not a full C++ compiler.  Once the loads, the project options require you to pick your MCU, which defaults to the STM32F030R8.

For debug/download interface it only supports SWD.  All STM32 chips have a UART bootloader in ROM that allows flashing the chip without a SWD link, using software like stm32flash.  When I pointed this out to Richard he replied saying they would likely add support for it.  The project template includes a main.c with the implementation of putchar for printf to work.  I'll look at the compiler and Jumpstart libraries in more detail in a future post.

The jumpstart tutorial book is very basic.  I've been programming in C and C++ for 25 years, so there was nothing in it I didn't already know.  I didn't like the examples that included preprocessor directives (i.e. #define END 90) and code.  Good coding practice is to put preprocessor defines in a separate file like config.h.  The tutorial doesn't mention fixed-point, which I think should be preferred over floating point in embedded systems.  Richard responded that their compiler doesn't (yet) support fixed point (gcc does), so he hadn't mentioned it in the tutorial.  He said it will eventually be added to the compiler, but no promises as to the release date.

I'll finish this first part of my review with saying that I think, on one hand, that it would be better to have noobs reviewing the Jumpstart Microbox since the target market is not old C programmers like me that live by bash, vi, gcc, and objdump.  On the other hand, noobs aren't going to know about the UART ROM bootloader, so I suppose I make a good (and cheap) beta tester for Imagecraft.


  1. Dear Ralph, thank you for the review. Regarding your observation that "..since the target market is not old C programmers like me that live by bash, vi, gcc, and objdump." Actually, the complexity of the modern day 32-bit Cortex-M MCU is such that even an experienced programmer may have some trouble "jumping" onto Cortex-M development. For this demographic, the JumpStart API and their accompanying examples show that how easy it is to get into Cortex-M development, without getting hung up on the low level tedium. If you need to squeeze out all the performance or all the flexibility that a particular MCU subsystem supports, then eventually you may have to deal with a lot of those details, but for most cases, if you just want something quick and simple to work, so that you can start prototyping the actual application, our kit can help you with that.

    And note that the compiler/IDE and the JumpStart API is not limited to the MicroBox hardware, so you can use the tools to work with any MCU that they support - in the case of the compiler/IDE, it works with any Cortex-M MCU and in the case of the JumpStart API, it works with the STM32F0xx series currently and we will release support for the STM32F4xx series next week, by enof of Nov 6, 2015.

    1. Even if I were working for a company and needed to prototype something with using a ARM MCU, I'd probably use one of the Maple Mini clones. I'm not making any predictions about how successful Jumpstart Microbox will be, I'm making the point that I wouldn't have bought it.

      As for the compatibility with the ful STM32F0xx line, I mentioned in an email that the 030F4 (and K6 and C6) only have
      USART1, so the Jumpstart template code (which uses USART2 for printf output) shouldn't work on those MCUs. I suppose it is possible that the existence of USART2 on these chips is an undocumented feature, but the technical datasheet table 2 states, "USART2 to USART6 are not present" for those parts.
      I have some 030F4P6 parts on order along with some SOP20 breakout boards, so I may be able to test if USART2 really exists or not in the near future.