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

Tutorial: Blinky with the FRDM-KL27Z and Kinetis SDK v2

I’m using the FRDM-KL25Z in my classes, and that board is very popular: low price (<$15), reasonable features (48 MHz ARM Cortex M0+, 128 KByte of FLASH, 16 KByte of RAM), and many tutorials elsewhere and on McuOnEclipse :-).

For the next (Fall) semester I’m looking for alternative boards, and one is the Freescale (now NXP) FRDM-KL27Z:

FRDM-KL27Z with Box

FRDM-KL27Z with Box

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

Are ARM CMSIS-Pack the Future of Software Components?

I’m using Processor Expert components for nearly every Freescale (now NXP) projects: for S08, S12, ColdFire, DSC and especially all the different NXP Kinetis devices. Not only because it makes software development fast and easy and allows re-use of software, but as well because Processor Expert has a good way to pack and distribute software components. Unfortunately Processor Expert is not any more included for the new Kinetis devices (see “First NXP Kinetis SDK Release: SDK V2.0 with Online On-Demand Package Builder“). So I have looked into an alternative and hopefully vendor neutral way to build and distribute software packages using CMSIS-Pack.

CMSIS-PACK in Eclipse

CMSIS-Pack in Eclipse

Continue reading

3D Printed Magical MUFG Capsule to Duplicate NXP Kinetis K20 Boards

Sometimes it is all about doing fun stuff: to carry and store the tinyK20 (NXP/Freescale Kinetis K20) boards needed for next course, I wanted to build something geeky: a MUFG capsule to store and duplicate Kinetis boards 🙂

MUFG Capsule with tinyK20

MUFG Capsule with tinyK20

Continue reading

How to Add Bluetooth Low Energy (BLE) Connection to ARM Cortex-M

In many of my embedded projects I’m using successfully the Nordic Semiconductor nRF24L01+ (see “Tutorial: Nordic Semiconductor nRF24L01+ with the Freescale FRDM-K64F Board“) and the HC-06 Bluetooth transceivers (see “Getting Bluetooth Working with JY-MCU BT_BOARD V1.06“) for wireless communication. However, the nRF24L01+ is using a proprietary protocol, and the HC-06 does not work with Apple products (it does very well with Android devices). To close that gap I decided to add Bluetooth Low Energy (BLE, or Bluetooth 4.x). So this post is about how to add Bluetooth Low Energy (BLE) to NXP (formerly Freescale) Kinetis devices:

BLE Enabled Kinetis

BLE Enabled Kinetis

Continue reading

Renaming Eclipse CDT Projects

When I create a project in Eclipse (e.g. in Kinetis Design Studio with the GNU ARM Eclipse plugins), I have to specify the name of the project during creation time:

Project Name in Eclipse

Project Name in Eclipse

But what if I change my mind later on and want to use a different name? How to rename the project?

Continue reading

Preprocessor Listing for GNU gcc with GNU ARM Eclipse Plugins

In case there are problems with the C/C++ preprocessor, it is useful to generate the compiler preprocessor listing. Here is how to create a preprocessor listing with GNU gcc compiler and the GNU ARM Eclipse plugins in Eclipse:

Preprocessor Listing in Eclipse

Preprocessor Listing in Eclipse

Continue reading

GNU gcc printf() and BuiltIn Optimizations

Readers of my blog know: I’m not a fan of printf(), and I think for many good reasons. Still printf() is widely used, and the GNU gcc tries to optimize things. This is observed with a simple example: If I’m writing

printf("a");

Then the code produced (ARM Cortex-M0+ with GNU ARM Embedded 4.9 2015q2 gives:

movs r0, #97    ; 0x61
bl 0xa98

Instead of calling printf(), it is calling putchar()! Why is that?

PutChar instead of Printf

PutChar instead of Printf

Continue reading