ORBTrace mini

A low cost, open source, Debug and Parallel Trace interface for CORTEX-M class embedded micro controllers.

Check the ‘Data Feed’ above if you want examples of what you can do with this device, or checkout the presentation given at this years Embedded Online Conference (free registration required) which shows it in use with Orbuculum, available here.

The ‘mini’ part of the ORBTrace name is more a reference to how big it is rather than its functionality. Its a 70x50x11mm block of blisteringly fast concentrated debugging goodness, with a powerful base feature set;

  • 1-4 bit parallel CORTEX-M tracing according to ARM ETMv3.5 that works with Orbuculum
  • CMSIS-DAP v1 & v2 SWD and JTAG debug interface that works with OpenOCD, Blackmagic Probe and PyOCD with transfer speeds up to 1.5MBytes/sec
  • FPGA programming via openfpgaloader
  • Support for 1v8 to 3v3 targets
  • SWO over UART (at up to 62Mbps) and Manchester (at up to 48Mbps) encodings
  • Switchable 300mA 1v8/3v3 power supply over VTRef
  • Switchable 300mA 3v3/5v power supply over VTPwr
  • USB2-HS host interface
  • Upgrade via DFU

OBBTrace mini is a fully open design based around the Lattice ECP5 FPGA. All of its functionality is configured via HDL in a combination of Verilog (via Yosys and Trellis) and the Amaranth Domain Specific Language which is an extension of Python 3. Fortunately you don’t have to worry too much about all that, as the GitHub ORBTrace repository contains everything you need to get started, and there are plenty of instructions available over at ReadTheDocs. We’d recommend reading the intro articles in the blog first though, or perhaps looking through this presentation kindly donated by KPLabs;

The ORBTrace mini hardware has a pretty good specification that offers a lot of headroom to add in more functionality in future. The ‘headline specs’ are;

  • ECP5 FPGA based. Individual builds can use anything from a LFE5U-12 thought to a LFE5U-85. At the present time the core functionality fits into a -25 part.
  • 64MBits of RAM
  • 2 x Programmable power supplies (For VTRef and VTPwr)
  • 2 x Voltage and Current measurements (For VTRef and VTPwr)
  • SPI Flash for gateware and program storage
  • 6 x Uncommitted I/Os
  • Buffered I/O for 1v8-3v3 targets
  • 8Kbit EEPROM
  • USB2-HS interface with dfu capability
  • 70 pin low profile expansion connector

For now, ORBTrace mini implements the functionality in the first bullet list, but there’s plenty of headroom for more to be added. There’s a LiTeX-based SoC already implemented featuring a VexRiscv CPU and the RAM and EEPROM aren’t exploited at all yet! The programmable power supplies are only used for fixed voltages and the current/voltage readbacks aren’t exploited.

ORBTrace isn’t a just a static solution, it’s a building block for embedded engineers to scratch their debugging itch, and everything about it is open and available to be modified and enhanced. If you just want a debugger or trace capture device then we’d recommend you go buy from an established commercial vendor, but if you’ve got that itch, and you want to do some scratching by joining in with a vibrant active project, then ORBTrace might be the project for you.

Orbcode.org doesn’t build hardware. You’re welcome to build it yourself or find someone who is building a batch. At the moment zyp has some available at his webstore, but the chip shortage means they won’t stay around for long…if you want one, go get it!