REXIS Logo Revealed!

REXIS (Real-time EXecutive for Intelligent Systems) has been released, and now we have a branding logo! RAWRRRR!

Thanks to the awesome graphic designer Kurt, from Fantastic Realities Studio!

Posted in new product, news | Leave a comment

REXIS Sale Specials!

Happy Thanksgiving! The first public release of REXIS is now available, as part of V9.07.00 of JumpStart C++ for Cortex, which you can download by clicking on the link.

ImageCraft creates different REXIS editions to fulfill the different needs of embedded developers. For consulting engineers, you can prototype, test, and work with the REXIS binary release by installing the JumpStart C++ for Cortex compiler. Get a ST-Nucleo F411RE and you can start running the examples immediately. The binary release is free to use for non-commercial use.

Continue reading
Posted in news, Sales | Tagged | Leave a comment

Synchronous Message Passing and REXIS Benchmarking

If you have read the blog on REXIS Examples, or the REXIS documentation, you may have noticed that REXIS supports synchronous message passing API, in addition to the more common asynchronous messaging with mailboxes. Synchronous message passing is not a new idea. Indeed, the inspiration came from QNX Neutrino, the message passing kernel that powered the BlackBerry smartphone devices in the early 2000s.

Synchronous message passing is a great idea. For example, it makes writing a “full-blown” OS (e.g. Linux) based on microkernel simpler. In such a system, OS services such as the file system support, networking etc. are written as regular tasks or processes instead of being part of the kernel code. Of course having a full OS is less important in a microcontroller system, but nevertheless, the use of synchronous message passing can give firmware a cleaner design. (We will see another example in this post below.) As a footnote, REXIS’ functions can be said to reflect those of a microkernel, perhaps pointing to a possible future path for its development.

Some RTOS producers are loathe to benchmark their products, or allow their users to do so. Here at ImageCraft, we welcome it :-). So let’s dive in and look at some numbers for the REXIS message passing API calls.

Continue reading

Posted in new product, techniques | Tagged | 2 Comments

Debugger Sales

Up to $100 OFF!

Even though we released the AVR and the Cortex-M debuggers a number of years ago, apparently some of our users do not know about it. JDB debugger is fully integrated with the CodeBlocks IDE, and contains a number of easy to use features such as I/O register view. The normal list price is $150, but for a limited time only, if you already have a compiler license, you can purchase the debugger for just $100.

Link to purchase the AVR debugger:
http://imagecraft.com/index.php?option=com_opencart&Itemid=148&route=product/product&path=25&product_id=110

Continue reading
Posted in Sales | Tagged | Leave a comment

Calculating Timing

As we are finalizing the initial release of REXIS, we would like to provide some quantitative data on some of its features so that users and potential users can make intelligent decisions regarding this product.

There are a variety of methods for measuring timing on MCU firmware. Two popular methods are 1) using an internal MCU timer, and 2) toggling a GPIO pin so that you can observe the output waveform with an external device.

Continue reading
Posted in techniques | Leave a comment

REXIS Examples

REXIS is both ImageCraft’s RTOS and a component of the JumpStart IoT Connectivity Suite. It’s powerful yet easy to use. This post is from an excerpt of the forthcoming REXIS User Guide, containing examples to demonstrate REXIS features.



As some users may not be familiar with using an RTOS, let’s dive in and look at some examples. The examples are located in <install root>\rexis\examples\, and introduce all the major features of REXIS. (This document will not provide the full listing of the programs, as minor details may change.)

Continue reading
Posted in new product | Tagged , , | Leave a comment

Making Tedious/Complex Things Easy

The development world is full of IDE, and “everyone” uses GCC anyway. So how can ImageCraft be better? One way we can achieve excellency is by making tedious or complex things easy to do.

For example, there are different floating point options for the Cortex-M MCUs, depending on what architectural features the CPU core support. For example, Cortex M0 and M3 cores must use software floating point libraries whereas M4 has optional single precision floating point FPU, and the M7 has optional single and double precision FPU.

But wait! There’s more: by default, the printf function in the newlib/nano-lib does not support printing of floating point values (to reduce the size of the function) and…, and…, … These are not hard to figure out, just tedious to remember the exact options to use for each one. 

So of course we are adding new options to the Project Build options in the next release of the JumpStart C++ for Cortex IDE:

New Build Options

Simple, easy to use. That’s our motto.

Oh, one more thing. What’s that QFPlib option? Stay tuned and find out…

#makeitsimple

Posted in new product | Tagged | Leave a comment

Vulnerabilities Discovered in FreeRTOS TCP/IP Stack 😮

A researcher has discovered multiple flaws in the FreeRTOS TCP/IP stack: https://thehackernews.com/2018/10/amazon-freertos-iot-os.html. Amazon/FreeRTOS quickly patched the problems, but that’s not the end of the story.

As more and more “Internet of Things” devices come onto the market, the existence of exploitable flaws will become unavoidable. As the provider of a (forthcoming) TCP/IP+RTOS stack in ImageCraft’s JumpStart IOT Suite, it behooves us to come up with a plan for if and when this happens. Clearly, we need to:

Continue reading
Posted in embedded market, news | Tagged , | Leave a comment

Dynamic Memory and REXIS

According to some coding guidelines such as MISRA, it is “common wisdom” that embedded firmware should not use dynamic memory, e.g. malloc/free, as it introduces non-deterministic behaviors. Many firmware engineers have taken this to heart. 

So is it surprising that REXIS (our forthcoming RTOS) uses dynamic memory allocation? Have we gone mad? Surely not ;-). REXIS uses dynamic memory for three main reasons:

Continue reading
Posted in new product | Tagged , , , , | Leave a comment

Interrupt Handlers and Tasks in REXIS

REXIS is both ImageCraft’s RTOS and a component of the JumpStart IoT Connectivity Suite. It’s easy to use and also supports multiple APIs for IPC (Inter-Process Communication). In this post, we aim to show how easy it is to write an interrupt handler to interact with a normal REXIS task.

Problem Description: in an embedded system, the most efficient method of detecting sensor and other data input is through peripheral interrupts. An interrupt handler, or Interrupt Service Routine (ISR), is called when the hardware device receives data (e.g.: a character arrives at a UART receive register). The ISR reads the data from the hardware device, and the data can then be processed by the firmware. Because interrupts preempt other code from running, to minimize performance impact on the rest of the system the ISR should do its job as quickly as possible and leave the more complex data processing to code that is not running in an interrupt context.

Why is this important? While the example in this post is trivial in nature (basically, it’s a terminal I/O echo program), it demonstrates one of the most important aspects of using an RTOS: use an ISR to handle a hardware event, and then pass the data to a normal task for data processing.

Continue reading
Posted in Uncategorized | Leave a comment