Reprogramming the Mikroelektronika Hexiwear Dockingstation


The Hexiwear docking station would have a nice feature: it has embedded a debug circuit (OpenSDA). That way I would not need an external debug probe to debug the Hexiwear. However, a debug probe is required to reprogram the docking station itself:

Repgrogramming the Mikroelektronika Docking Station

Repgrogramming the Mikroelektronika Docking Station

Continue reading

McuOnEclipse Components: 12-Dec-2016 Release


Time is passing by so fast, and the year end is approache fast! I’m pleased to announce that a new release of the McuOnEclipse components is available in SourceForge:

  • Percepio Trace V3.1 for FreeRTOS which includes both Segger RTT continuous streaming and snapshot tracing in a single API
  • Generation of sources and drivers so they can be used without Processor Expert using McuLibConfig, removal of dependency to NXP Kinetis SDK: components use a generic API approach to have them working with other SDKs.
  • New contributed ExceptionsHandler component
  • Callback Setter and Getter in USB CDC stack for simpler option handling
  • GenericTimeDate with flexible RTC support and added Unix Timestamp functions
  • LongKey events in Key component
  • FreeRTOS with optimized task selection on Cortex-M4/M7
  • Many smaller bug fixes and enhancements
SourceForge

SourceForge

Continue reading

Flashing and Restoring the Hexiwear Firmware


The Hexiwear device is a great and versatile device with two microcontrollers on it. Developing firmware on a Hexiwear means changing what was originally on it. And sometimes it happens that I’m not sure if the changes are for good. Or that I accidentally destroyed the firmware on the NXP Kinetis KW40 BLE microcontroller :-(. So I had to find a way to restore the original firmware, and this is what this post is about.

Restoring the Hexiwear Firmware with a Segger J-Link

Restoring the Hexiwear Firmware with a Segger J-Link

Continue reading

Tutorial: Getting ETM Instruction Trace with NXP Kinetis ARM Cortex-M4F


It seems to me that not many developers use hardware trace? ARM indicates that maybe only <5% of developers are using trace. Too bad! Why are all the ARM Cortex microcontroller vendors putting a powerful hardware (and complicated!) trace engine into their devices, if only few developers are using it? Seems like a waste of silicon and an unnecessary price adder? Well, hardware trace can be a life saver: Because only with hardware trace the most complicated bugs and problems can be solved. And maybe because only the best are using it ;-).

In this article I proudly present my research how to get instruction trace out of the ARM Cortex-M4 microcontroller on a NXP TWR-K64F120M board with a Segger J-Trace for ARM:

J-TRACE tracing NXP TWR-K64F Board

J-TRACE tracing NXP TWR-K64F Board

Continue reading

FreeRTOS Kernel Awareness with Ozone


In my first post about Segger Ozone (see “First Steps with Ozone and the Segger J-Link Trace Pro“) I missed the fact that it includes support for kernels like FreeRTOS. So here is how to show the FreeRTOS (or any other RTOS) threads with Ozone:

freertos-threads-in-ozone

freertos-threads-in-ozone

Continue reading

First Steps with Ozone and the Segger J-Link Trace Pro


From time to time I face some problems which are really hard to find. Mostly these kind of bugs are very timing sensitive and depend on interrupt execution order. Maybe a dangling pointer is overwriting memory, code is running wild, or some functions are not reentrant as they should be. For these kind of bugs, good tools are worth their weight in gold. The Percepio FreeRTOS+Trace and the Segger SystemView have helped me many times to narrow down such kind problems in my applications. Another ultimate tools is hardware trace: Now I have a Segger J-Trace Pro for ARM Cortex-M in my arsenal of bug extinguishing weapons on my desk:
Dear bugs, look what I have on my desk. Your hiding time is over! 🙂

tracing-cortex-m4-with-j-trace

tracing-cortex-m4-with-j-trace

Continue reading

Eclipse and GDB: Process Properties, Arguments and GDB Traces


To me this was new, and thanks to Liviu I know now how to inspect the command line passed to the GDB server (see “Semihosting (again!) with NXP Kinetis SDK V2.0“) 🙂

Process Properties

Process Properties

Continue reading

Semihosting (again!) with NXP Kinetis SDK V2.0


I kind of hoped that after “Why I don’t like printf()” and all my other articles about printf and semihosting, that topic would be 200% handled and I won’t have to deal with any more. Well, I was wrong and underestimated how the Kinetis SDK is interfering with semihosting. And I underestimated how many of my readers are still using semihosting (even as there are other and better alternatives), so I keep getting questions and requests for help. That’s ok, and I hope I can help :-).

So here is yet again another post about how to turn on semihosting with Eclipse, GNU ARM Embedded and the Kinetis SDK v2.0. This time with the FRDM-K64F board:

FRDM-K64F Board with lwIP running

FRDM-K64F Board

Continue reading

impulse: Segger SystemView in Eclipse


I’m using the Segger SystemView in many of my applications to get insights of the running application. A reader of my blog pointed me to the company ‘toem’ (http://toem.de/) based in Germany which offers powerful data viewer (‘impulse’) for Eclipse. I have tried this out, and it is really an amazing piece of technology with lots of potential. It allows me to view Segger SystemView data 🙂

Segger SystemView Data in Eclipse

Segger SystemView Data in Eclipse

Continue reading

Board Bring-Up Tips, GDB Logs and Traces in Eclipse


Sometimes things don’t go well, especially with bringing up a new board design. I always sweat blood that first minute when I try to connect with the debugger to a new design: Will it work? After the optical inspection, performing electrical tests (no shortcuts? voltage levels ok?) the inflection point is when I’m connecting the first time with the debugger to the new board: either it will properly connect and program the device (hurrah!) or it will fail and potentially difficult hours of investigations have to follow.

First PCB under Debug

First PCB under Debug

Continue reading

How to Recover the OpenSDA V2.x Bootloader


More and more of my students are using Microsoft Windows 10 machines, and my computer has been upgraded to Windows 10 a couple of week ago too. From my work and experience, a new operating system causes always some challenges, and Windows 10 is no difference. And no, this is not about Microsoft vs. Apple vs. Linux, this post is about addressing a potential and painful problem which I have observed with Windows 10 machines, and to my understanding it could happen with any other operating system too. The problem is that somehow on several student machines the bootloader and OpenSDA application on their FRDM boards did not work any more.

FRDM-K64F (top) programming the OpenSDA Bootloader (bottom)

FRDM-K64F (top) programming the OpenSDA Bootloader (bottom)

Continue reading

First steps: ARM Cortex-M7 and FreeRTOS on NXP TWR-KV58F220M


For a university research project I need a fast microcontroller with lots of RAM and FLASH memory. I have ordered a TWR-KV58F220M board from NXP which arrived yesterday. The special thing is that it has on of these new ARM Cortex-M7F on it:

TWR-KV58F220M Box

TWR-KV58F220M Box

Continue reading

McuOnEclipse Components: 29-May-2016 Release


Major changes in this new release:

  • FreeRTOS V9.0.0 with static memory allocation.
  • Shell with single character I/O function.
  • FatFS File System with extra shell commands for memory dump and file creation.
  • Segger SystemViewer library updated to V2.36a
Segger SystemViewer V2.36a

Segger SystemViewer V2.36a

Continue reading

FreeRTOS Thread Debugging with Segger GDB in Eclipse


NXP FTF Tech Forum in Austin has been a blast! I’m running another FreeRTOS hands-on session (FTF-DES-N2048) this afternoon which yet again is fully booked. But we will squeeze in as many as possible from the waiting list.

One very exciting thing we are going to use is FreeRTOS thread awareness in Eclipse/Kinetis Design Studio: to see and debug the FreeRTOS threads in Eclipse using the Segger GDB and it will show the list of threads in the Debug view:

FreeRTOS Thread Awareness with Segger GDB

FreeRTOS Thread Awareness with Segger GDB

Continue reading

Debugging Multiple NXP Boards with GDB and P&E


In “Debug Multiple Boards with GDB at the Same Time” I have used the Segger J-Link to debug multiple boards, from the same IDE, at the same time. The remaining question in that article was: how to do the same the P&E Multilink/OpenSDA?

Debugging two NXP FRDM-KL27Z Boards with P&E Debugger the same time

Debugging two NXP FRDM-KL27Z Boards with P&E Debugger the same time

Continue reading

Semihosting with Eclipse and the NXP Kinetis SDK V2.0


The world is changing, and the say is “change is good” :-). In the software and API world, change very often means that a change results into something broken. So I had battled with semihosting working on the NXP Kinetis parts, only to find out that it does not work any more with using the latest version 2.0. The semihosting output e.g. with P&E debug connection remains empty:

No Semihosting output

No Semihosting output

So how to fix this?

Continue reading

Solution for OpenOCD “Cannot communicate… target not haltet”


Related to my earlier article about using OpenOCD, I want to share something I have learned (again) with OpenOCD v0.10.0:

I was running often into the following error:

Warn : Cannot communicate... target not halted.
Error: auto_probe failed
Error: Connect failed. Consider setting up a gdb-attach event for the target to prepare target for GDB connect, or use 'gdb_memory_map disable'.
Error: attempted 'gdb' connection rejected
OpenOCD cannot communicate

OpenOCD cannot communicate

Continue reading

McuOnEclipse Components: 3-Apr-2016 Release


It has been already two months after the Feb 2016 release, and so much things are going on, so a new release was overdue. Today I have released a new version of the McuOnEclipse components on SourceForge with the following main changes and features:

  • Kinetis SDK v2 with Processor Expert: Now many components can be used even with the Kinetis SDK v2.0 even with the Kinetis SDK not having Processor Expert included.
  • Updated Segger SystemViewer to v2.32a with post-mortem and static buffer support
  • Updated Segger RTT to v5.10u and fixed an issue with interrupts on Cortex-M4
  • FreeRTOS Thread Awareness with OpenOCD

See readme on SourceForge for the full history.

McuOnEclipse 2016-04-03 Release

McuOnEclipse 2016-04-03 Release

Continue reading