Stratify Toolbox

A printf()-ing awesome flash & debug tool

This project is coming soon. Sign up to receive updates and be notified when this project launches.


Code, Flash, Debug, Repeat

Welcome to the loop. This is where every embedded developer finds themself for much of the day. I spend a lot of time in the loop. I code. I flash. I debug. I repeat. My productivity (inversely related to my frustration) is a function of how quickly I can go around this loop.

Stratify Toolbox is a flash and debug tool for ARM Cortex-M devices that

  • Minimizes loop lap time, and thus frustration :)
  • Is delightfully easy to setup and use.

Quick Loop Laps

Let’s look more closely at how time is spent in the loop.

Code. Many hardware vendors have limited support for non-Windows platforms and require you to use their not-so-resource-friendly IDEs for debugging. The Toolbox works independently of code editing. So you can code however you like, on Windows, Linux, or Mac.

Flash. Flashing should be fast and easy. The Toolbox quickly loads firmware onto any supported ARM Cortex-M chip over SWD. It works quickly and transparently so you can get right to debugging. Operation over USB is driverless on Windows, Linux, and Mac.

Debug. Approaches to debugging are quite diverse, but they tend to fall into one of two camps…

The printf()-ers vs. the Code Steppers

I have been a printf()-er for as long as I can remember. My experience with debuggers made my time in the loop considerably longer as I found myself stepping through code and haphazardly scanning variables. With printf() (and a little planning), I could have the code show me what I wanted, when I wanted, in the format I wanted. But printf()-ing has its limitations:

  • printf()-ers usually use a UART for output, and it can be tricky to get the UART running.
  • printf()-ing causes delays in program execution which can lead to strange, difficult-to-debug behaviors.
  • Finally, something that we printf()-ers are embarrassed to admit, printf() depends on a lot of code (even malloc() in some cases). This can be an irritation when working with larger devices and a show stopper when working with smaller ones.

Fortunately, the ARM Cortex-M has sophisticated debug hardware just sitting there waiting to make printf()-ing awesome. Stratify Toolbox uses that hardware to provide a fast, minimally-invasive debugging experience that addresses all three of the challenges described above.

  • printf() is available immediately after startup; there's no need to bring up the UART.
  • The Toolbox seamlessly interleaves system event tracing, variable watching, and performance profiling with the printf() output stream.
  • And, to avoid code bloat, nearly the entire printf() routine is off-loaded to the Toolbox, so the target implementation is both ultra-lightweight and full-featured.

Delightfully Easy

Many of the Toolbox features are available without installing any software on your computer. For example,

  • Interrogate your device to verify proper operation of the MCU and debug interface
  • Save the debug stream to the SD Card
  • Broadcast the debug stream on the local network using Wi-Fi (view it using telnet)
  • View the debug stream over your choice of USB serial monitor (line settings can be anything)
  • Flash and execute using curl and the Toolbox REST API

When you install sl—a lightweight command line tool consisting of a single executable file that is under 5 MB and has no external dependencies—you can:

  • Flash and execute over USB
  • Install new applications and plugins for the Toolbox
  • Generate markdown reports from printf()-ing output

sl is trivial to install (yay!) and just as easy to delete (boo!). It runs on Windows, Mac, and Linux.

Do more with printf()

The Toolbox has built-in bus analysis and analog IO. You can use target firmware printf() statements to indirectly command the Toolbox. You can…

  • Plot a variable on the display
  • Enable a hardware datawatch point with output interleaved in printf() output
  • Start and Stop performance profiling
  • Capture traffic on the I²C, SPI, or UART bus
  • Record an analog waveform

Having complete control of the Toolbox from within your code editor helps you minimize loop time by obviating the need to fiddle with external tools and triggers. Just add a printf() statement that the Toolbox recognizes, and you’re all set.

Under the Hood

Stratify Toolbox is powered by Stratify OS, an application-based MCU operating system that takes full advantage of ARM Cortex-M hardware features. Applications are built independently of the kernel and run in memory-protected space with their own stack pointer. The Toolbox includes core features for managing applications, files, and Wi-Fi networks. Furthermore, the SDK allows anyone to build and share additional tools.

Software Development Kit

With our easy-to-use SDK, you will find yourself building and installing new applications in no time at all. As we demonstrate in our Setup & Configuration Guide, just a few simple steps will have you up and running on Windows, Mac, or Linux in less than ten minutes.

Features & Layout

Technical Specifications

  • Wi-Fi 802.11 b/g/n WPA2 security (ATWINC1500)
  • 320x240 IPS Display
  • 20-pin IO
    • I²C, SPI/I²S, UART: slave, master, monitor modes
    • Built-in Timing Analysis for I²C, SPI/I²S, UART
    • ADC (0 to 15 V input) up to 3 MSps
    • DAC (0 to 3.3 V output) up to 1 MSps
  • 800 mAh battery with built-in charger
  • 480 MHz ARM Cortex-M7 processor (STM32H750)
    • 100 KB's of RAM for user applications
    • 8 MB QSPI flash (for kernel updates, fonts, user data)
  • USB 2.0 (Full speed) for printf() Stream and Firmware Recovery
  • MicroSD card slot (supports SDHC with FAT filesystem)
  • 10-Pin JTAG/SWD Host

Project Updates


Aug 31, 2020

Networking

This update includes a breakdown of how Stratify Toolbox accesses the Internet. Read the full update.


Jun 01, 2020

Breaking Down our Embedded System

I have recently made some major progress on designing and implementing the hardware and software systems that power Stratify Toolbox. This was no easy task. The Toolbox is powered by the STM32H750 microcontroller and Stratify OS. The STM32H750 is an ARM Cortex M7 with an L1 cache and up to a 480 MHz CPU, which is a major workhorse. Stratify OS is a microcontroller RTOS that I have spent the last decade building specifically for ARM cortex chips. Bringing it all together required quite a bit of system integration. This update breaks it down for you. Read the full update.


Apr 21, 2020

Tomorrow's AMA, Distractions, and Linux

Please join me at 1 PM tomorrow, Wednesday April 22nd, for an Ask Me Anything (AMA) on Crowd Supply's Discord. This update includes an invitation to that AMA, information about a Coronavirus-related side project, and an interesting tidbit from our survey of potential Stratify Toolbox users. Read the full update.


Mar 09, 2020

We Need Your Input!

To let your voice be heard, so that the features you want the most get the attention they deserve, please fill out our Toolbox Feature Survey! Read the full update.


Mar 02, 2020

SDK Setup & Configuration

This update provides a brief Setup & Configuration Guide for the Stratify Toolbox SDK. Just ten minutes and a few simple steps will have you building and installing new applications on Windows 10 or MacOS. (Give us a shout if you'd like to see a Linux guide here as well!) Read the full update.

Subscribe to the Crowd Supply newsletter, highlighting the latest creators and projects: