Home > On-Demand Archives > Talks >

Instrumenting Embedded Applications

Dave Marples - Watch Now - EOC 2023 - Duration: 45:10

Instrumenting Embedded Applications
Dave Marples
On the desktop, everyone learns to observe what their program is doing using print statements and logging. Embedded systems aren't amenable to such approaches because they run in real-time and don't have screens or memory to spare for logs, so new techniques need to be applied. Fortunately, modern CPUs provide surprisingly rich facilities for meeting these needs. In this presentation, we will introduce a range of these capabilities, from a novel twist on the simple flashing LED progressing all the way to full post-mortem instruction trace.
italicssurround text with
boldsurround text with
**two asterisks**
or just a bare URL
surround text with
strikethroughsurround text with
~~two tilde characters~~
prefix with

Score: 0 | 5 months ago | no reply

I really enjoyed this conference!! Hopefully we can have more from you. Thanks a lot

Score: 0 | 1 year ago | 1 reply

Hi Dave,
I found your presentation very informative, very exciting tools with a lot of potential! Making tracing accessible to newcomers/students will be a great investment for the industry.
Looking forward to getting hold of an Orbtrace mini :D (Checking Zyp's store regularly)

Score: 0 | 1 year ago | no reply

Thanks for the kind words. We have a huge distance left to travel, but at least we've started the journey new and the tools we already have available are genuinely useful...hopefully folks will build on those to delivery some nicely differentiated capabilities.

Score: 0 | 1 year ago | 1 reply

Thanks for the presentation. Feels like a dream come true ! Proper unintrusive trace has always been one of the missing tool in my embedded software engineer toolkit. I guess I'll have to try out Orboculum now !
Can you shed a bit more light on which features require ORBTrace, ? and which can work with any debug probe (like J-Link or maybe ST-Link) ? I am currently using Segger RTT over 2 channels on a project : one channel for a CLI interface, another for logging messages. Segger's own tools in this case don't even support displaying properly both channels, I have to go through a custom Python script to exploit that. Maybe I could switch to using SWO and Orbuculum ;)

Score: 0 | 1 year ago | no reply

Hi Nathan,
The SWO link is unidirectional - from the target to the host, but that's generally the important direction of data transfer anyway. JLink and STLink will both terminate SWO and (at least for the JLink case) has been tested with Orbuculum, so you should be good to go.
If you want a proper bidirectional CLI then you can use a SWO channel for the target-to-host and write to a known memory location on the target (anywhere, as long as it's known) and trigger an otherwise unused interrupt by writing to the NVIC to collect the downlink data....obviously that side will need to be done from the debugger, so you can use the control interface of JLink or some gdb magic to do that... Sounds like the perfect job for a few lines of Python :-)

Good luck! Ping us on the discord if you get stuck.