FreeRTOS Thread Debugging with Eclipse and OpenOCD

FreeRTOS is probably the number one RTOS used, and Eclipse is likely the most popular IDE I can think of. But debugging FreeRTOS applications with Eclipse and GDB is somewhat limited? What I would like to get at the minimum is this: ability to see all the different threads in the Eclipse debug view like this:

FreeRTOS Threads in Eclipse with OpenOCD

FreeRTOS Threads in Eclipse with OpenOCD

As you might guess from that screenshot: this post is about how to make FreeRTOS tread debugging possible with Eclipse and GDB :-).

Continue reading

Flashing many ARM Boards without a Host PC

So here I have 50 new NXP Kinetis K22 Robot boards (see “Zumo Robot with Magnetic Encoders“), and they all need to be programmed with the first firmware on the bench:

Programming Robot Boards

Programming Robot Boards

The challenge is: how to do this in a fast an efficient way, without the need for an IDE or even host PC machine?

Continue reading

Dealing with Code Size in Kinetis SDK v2.x Projects

I’m exploring the Kinetis SDK v2.0 (see “First NXP Kinetis SDK Release: SDK V2.0 with Online On-Demand Package Builder“). For this, I’m using the ‘standard’ way: blinking the LED on the board 🙂

Blinky on FRDM-K64F Board

Blinky on FRDM-K64F Board

Continue reading

Merging S19 Files

If using a bootloader with an application, one thing is to to merge the bootloader with the application into a single file. I do this with the ‘SRecord’ tool like this:

srec_cat bootloader.s19 application.s19 -o merged.s19
Combining S19 Files

Combining S19 Files

Continue reading

XML Editor & Checker for CMSIS-Pack in Eclipse

So far, the XML files I had to work on were very simple ones, so a normal text editor was fine. Now I’m tapping into the world of CMSIS-Packs (see “Are ARM CMSIS-Pack the Future of Software Components?“). And definitely this adds a complexity for which I better use some XML editing and checking tools. The ARM tutorial for CMSIS recommends either Notepad++ or Visual C++. But hey, Eclipse should be able to do that maybe even better right? So this is about adding an XML editor and XML checker to Eclipse.

Editing CMSIS-Pack .pdsc File in Eclipse

Editing CMSIS-Pack .pdsc File in Eclipse

Continue reading

How to put the Kinetis K20 on the tinyK20 Board into Bootloader Mode

To put the tinyK20 board with the NXP Kinetis K20 into bootloader mode, well someone could check the schematics, or follow this quick guide :-). In short, the pin PTB1 has to be pulled to Ground (GND) while powering the Kinetis K20. The pin PTB1 is on the outside row as below:

tinyK20 Bootloader Pins

tinyK20 Bootloader Pins

Continue reading

Tutorial: Bare-Metal Shell for Kinetis

I have been asked to provide a command line shell example for a bare-metal (no RTOS) application, so here we go!

Having a way to communicate to the firmware on a board is essential for most of my projects: it is simply, incredibly helpful and easy to do (see “A Shell for the Freedom KL25Z Board“). This tutorial shows how to add a simple command line shell to the NXP Freedom board which then can be extended as necessary.

Console Application

Console Application

Continue reading

Show Floating Point Variable Bytes in Eclipse CDT

My preferred variable format in Eclipse is hexadecimal (see “Debugging Variables in Hexadecimal with Eclipse“). However, this does not work well with floating point variables:

Floating Point Variables in Eclipse Variables View

Floating Point Variables in Eclipse Variables View

The above view shows all variables having the value 0x0 (zero), but that’s actually not really true.

Continue reading

Debug Multiple Boards with GDB at the Same Time

Many times it is very useful to debug multiple boards at the same time. For example if I’m debugging a communication stack between two boards: that way I can debug the protocol on both sides. Eclipse is a great framework which allows that. This post shows how to debug multiple boards (e.g. the NXP Freedom boards) in parallel from the same Eclipse IDE using GDB and the Segger J-Link:

Two NXP Freedom Boards debugged at the same time

Two NXP Freedom Boards debugged at the same time

Continue reading