Using Segger Real Time Terminal (RTT) with Eclipse

I have used semihosting more and more in my projects. However, there are several disadvantage of using it:

  • Without special handlers, it only works with an active debug connection going on. Without a debugger attached, the application blocks otherwise.
  • Because it needs debugger interactions, it is rather slow (only several hundreds of bytes per second)

The good news is that Segger supports with their debug probes a faster approach with what they name Real Time Terminal (RTT). And it even runs without a debugger attached to the board: all what I need is a Segger J-Link probe (or Segger J-Link OpenSDA) plus a telnet client.

Segger RTT Viewer

Segger RTT Viewer

Continue reading

Processor Expert Component Repositories

Processor Expert for Kinetis v3.0.0 (which is part of Freescale Kinetis Design Studio v3.0.0, KDS) has now the concept of ‘repositories’ for the components.

Previously, Processor Expert was able to use two paths for its components (e.g. in KDS v2.0.0):

  1. The ‘System‘ directory inside the Eclipse installation
  2. The ‘User‘ directory: a fixed path, global for all installations

These directories are listed in the workspace settings (menu Window > Preferences > Processor Expert > Paths):

Processor Expert Paths in v2.0.0

Processor Expert Paths in v2.0.0

Continue reading

McuOnEclipse Components: 05-July-2015 Release

I know: A new McuOnEclipse Processor Expert components release was long overdue. But I have been extremely busy in the last months, but now the university semester is over, and I have finally some spare time to catch up on a lot of things. So here we go: there is a new component release available on SourceForge (https://sourceforge.net/projects/mcuoneclipse/files/PEx%20Components/): Components 2015-07-05.zip

McuOneEclipse Components on SourceForge

McuOneEclipse Components on SourceForge

Continue reading

Debugging ARM Cortex-M Hard Faults with GDB Custom Command

In “A Processor Expert Component to Help with Hard Faults” I’m using a C handler with some assembly code, created with Processor Expert, to help me with debugging hard faults on ARM Cortex-M. Inspired by a GNU gdb script here, I have now an alternative way. As this approach is using the GDB command line approach, it works both with an Eclipse GUI and with using GDB in command line mode only :-).

GDB script to debug ARM Hard Faults
GDB script to debug ARM Hard Faults
Continue reading

Open Source Static Code Analysis: Cppcheck with Eclipse

I have a challenge for you: Can you spot the problem in the following source?

TMOUT1_CounterHandle TMOUT1_GetCounter(TMOUT1_CounterType nofTicks)
{
  TMOUT1_CounterHandle handle;
  CS1_CriticalVariable();
  handle = 0;
  if (nofTicks==0) {
    nofTicks = 1; /* wait at least for one tick, otherwise will timeout immediately */
  }
  CS1_EnterCritical();
  while (!TMOUT1_FreeCounters[handle] && handle<TMOUT1_NOF_COUNTERS) {
    handle++;
  }
  if (handle<TMOUT1_NOF_COUNTERS) {
    TMOUT1_FreeCounters[handle]=FALSE;
    TMOUT1_Counters[handle] = nofTicks;
  }
  CS1_ExitCritical();
  if (handle==TMOUT1_NOF_COUNTERS) {
    return TMOUT1_OUT_OF_HANDLE;
  }
  return handle;
}

No? Well, I have not spotted the problem the first time neither. However, a reader of this blog did: he used a cool tool named ‘cppcheck’: that tool reported the following:

Continue reading

Tutorial: Using Kinetis Design Studio V3.0.0 with IAR and Keil IDE’s

Freescale Kinetis Design Studio V3.0.0 came out early May this year. One of the new cool features is that it includes the Processor Expert V3.0.0 with an extended New Project Wizard. With this wizard I’m able to create and use Processor Expert projects with IAR Embedded Workbench and Keil MDK :-).

Kinetis Design Studio, Keil MDK and IAR Embedded Workbench

Kinetis Design Studio, Keil MDK and IAR Embedded Workbench

Continue reading

Workaround for “Installing Software has encountered a problem” in Eclipse

I wanted to install an update in Eclipse with Help > Install new Software or Help > Check for updates. I pointed to the update site, selected what I wanted to install, but then during installation I received an error dialog like this:

Installing Software has encountered a problem

Installing Software has encountered a problem

😦

Continue reading

Eclipse Project ‘Refresh Policy’: Broken Incremental Build with External Make?

So here is a problem I have observed for a while, and several users have reported that to me: the problem is that for some reasons and only for some projects, when I do a ‘build’ in Eclipse CDT, it does a ‘full’ build. It does not only build the changed files, it builds all or many files in the project.

Building

Building

I expect that only the changed files will be rebuild. Instead, it compiles many files it should not compile/build, with the result that a build takes a very long time. That’s clearly wrong, and not what I expect. So what is causing this problem?

Continue reading

Code Coverage with gcov, launchpad tools and Eclipse Kinetis Design Studio V3.0.0

What makes Eclipse great: using open source tools there are a lot of tools and techniques available which usually are only provided for desktop development.

A while back I described how to do code coverage with Eclipse Kepler and the GNU ARM Embedded (launchpad) tools (see “Code Coverage for Embedded Target with Eclipse, gcc and gcov“). With Kinetis Design Studio out, time to do the same with that Eclipse distribution, especially as Freescale is now using the stock GNU ARM Embedded tools too.

Coverage with multiple Files

Coverage with multiple Files

Continue reading

Problem: undefined reference to ‘__end__’ if using Semihosting

In case you are running into the following GNU linker error about a missing __end__:

'Building target: MyProject.elf'
'Invoking: Cross ARM C++ Linker'
...
toolchain/bin/../lib/gcc/arm-none-eabi/4.8.4/../../../../arm-none-eabi/lib/armv6-m/rdimon-crt0.o: In function `_start':
(.text+0xdc): undefined reference to `__end__'
collect2.exe: error: ld returned 1 exit status
make: *** [MyProject.elf] Error 1

Failed link because missing __end__

Failed link because missing __end__

The GNU linker complains that rdimon-crt0.o needs the symbol __end__.  This symbol marks the end of the user data/RAM section, and is needed by the rdimon library specs which is used with semihosting.

Continue reading