Avoid Warping ABS on Ultimaker 2


3D printing is like cooking or like BBQ: It is more about barometric pressure, humidity and temperature than you might  think of. To me, printing (and cooking) is a combination of art and science. And as with cooking, sometimes the result is not usable.

I’m very happy with the Ultimaker 2 printing PLA material. For a LED matrix project I have to use ABS as this material is suitable for higher temperature: PLA simply will not stand the heat produced by the LEDs I’m going to use. And here the joy ended: printing using ABS was definitely no fun. While the first small test print came out OK, I produced afterwards a pile of unusable parts because of warping :-(.

Pile of bad ABS Parts

Pile of bad ABS Parts

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

Four States BBQ Sauce for Pulled Pork (or anything else)


It seems that my pulled pork BBQ (see “Tutorial: BBQ Pulled Pork“) gets more and more fans :-). We will have a BBQ party for 10 person tomorrow evening :-). In preparation for that, the two pork shoulders started brining in the refrigerator from yesterday night on. Today we prepared the BBQ sauce for tomorrow, in four different styles: North Carolina, South Carolina, Alabama and Kansas:

Four States BBQ Sauce

Four States BBQ Sauce

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

Bricking and Recovering OpenSDA Boards in Windows 8 and 10


Getting a board from a distributor like Farnell/Element14/Mouser (add your own distributor) means that chances are high that the default firmware on it is written years from now because the inventory has not been updated, or because boards are still produced with that original firmware (because of testing?). So what happens if I use board with a firmware developed pre-Windows 8/10 area?

Freshly Unboxed NXP FRDM-KL25Z Board

Freshly Unboxed NXP FRDM-KL25Z Board

It might work, but chances are high that the bootloader and firmware is not ready for the ‘modern age’, and as a result the board might be bricked. If you still have a Windows 7 machine around (I do!), you are lucky. If not, then you need to read this article….

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

NXP Pins Tool: Understanding Data for Offline Usage


I’m using the NXP Pins tool (see “Tutorial: Muxing with the New NXP Pins Tool“) now in several projects, and I think it is time to share a few tips and tricks.

Pins Tool

Pins Tool

So join me on a journey through the internals of the NXP Pins tool :-).

Continue reading

Salmon on Cedar Planks


A smoker is great for big pieces of pork, beef or chicken. Putting fish directly on the grid is usually not an option because the fish can fall apart or is difficult to remove. Instead wrapping it into aluminium foil or putting it on a metal or stone plate, I prefer to put fish on a cedar plank. In my opinion the best way to BBQ fish:

Salmon on Cedar Plank

Salmon on Cedar Plank

Continue reading

NXP Pins Tool: Clock Gates and Controlling the Bits


With the NXP Pins Tool (see “Tutorial: Muxing with the New NXP Pins Tool“) I can configure and mux (multiplex) the microcontroller pins. What is really powerful and what might not be so obvious at the first sight is that it gives me deep control over every register bit and setting. For example I have below the PTB1 (Port B, pin 1) muxed as GPIO (General Purpose I/O):

PTB1 Muxed with Pins Tool

PTB1 Muxed with Pins Tool

But it only generates this:

void BOARD_InitPins(void) {
  CLOCK_EnableClock(kCLOCK_PortB);                           /* Port B Clock Gate Control: Clock enabled */

  PORT_SetPinMux(PORTB, PIN1_IDX, kPORT_MuxAsGpio);          /* PORTB1 (pin 54) is configured as PTB1 */
}

So what about all the other bits and pieces? Continue reading

BBQ with Baby Back Ribs and Pulled Pork


Having a total of 14 guests in the evening, why not preparing a great BBQ? A smoker can take a lot of meat, so for this I decided to smoke two kinds of Baby Back Ribs plus one pork shoulder for pulled pork. Everyone is helping with preparing desert plus the salad dishes:

Salad bar

Salad bar

My job was to get up early to deal with the fire and meat 🙂

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

Switching the Microcontroller Package, Device and Family


One of the major benefits of Processor Expert is that I can easily switch the device or processor used in a project. For example I can do my concept with a larger device with more FLASH and RAM, and then at the end easily switch to a smaller or even completely different device very quickly. For example I have a project working with the 64KByte FLASH version of the KE02Z (KE02Z68VLH2):

MKE02Z64VLH2

MKE02Z64VLH2

Continue reading

Swiss Army Knife of Terminal Program for Serial Bootloaders


A bootloader shall be small and concise. I very much like bootloaders which do not need a ‘special’ program on the host, so I prefer a simple terminal for this. While porting my serial bootloader to the NXP FRDM-K64F board, I have found RealTerm which offers a lot of cool features:

RealTerm

RealTerm

Continue reading

Segger J-Link OpenSDA Firmware with Virtual MSD


Sometimes it is very convenient to load a new firmware to a board without the need for a hardware debugger. This is usually done with a bootloader. The NXP Freedom and Tower evaluation boards have on-board debug device/microcontroller (OpenSDA) which can load different firmware implementations like CMSIS-DAP/mbed, P&E Multilink or a Segger J-Link OpenSDA applications. Both mbed and P&E implemenations support to program the board with drag&drop: simply send a file to a virtual MSD (Mass Storage Device) to get it programmed. The latest Segger OpenSDA firmware has this ability added now too: Programming the board with a virtual MSD device:

Virtual MSD Device

Virtual MSD Device

Continue reading

Combining Multiple NXP Kinetis SDKs into One


My wife tells me that I have too many boards on my desk. That is only *partially* correct: there are many, but not *too* many. But I’m working on too many tasks, but that’s a different aspect :-). I’m using more and more the Kinetis SDK V2.0, and as a result of this I have multiple SDKs installed on my machine. Because with the SDK V2.0 I get a download for each device/board installed (see “First NXP Kinetis SDK Release: SDK V2.0 with Online On-Demand Package Builder“). So my list of SDK folders is growing, as shown with the ‘New SDK 2.x’ wizard in Kinetis Design Studio:

Multiple Kinetis SDKs

Multiple Kinetis SDKs

The same time, the amount of free disk space is reducing. What if I could combine all these SDK’s?

Continue reading

Tutorial: Muxing with the New NXP Pins Tool


I don’t know if it is the same for you. But for me, configuring the pins on these new ARM microcontroller is a challenge: Most pins can do multiple functions, such as be used as I²C, UART or GPIO pins.

Configuring the pins ‘by hand’ is difficult, error-prone and usually the first thing I need to do for a new project/device. NXP developed a new tool for this task and previewed it at FTF 2016. It is available now both as web (online) and desktop (locally installed) tool. At FTF it was possible to play with an engineering release: time to get my hands on the public release :-). And as more and more student projects will start using that tool for their boards, I better have a tutorial for it :-).

Desktop Version of Pins Tool

Desktop Version of Pins Tool

Continue reading