About Erich Styger

Embedded is my passion....

Are WLCSP the Solution during Silicon Shortage?

If you are in the electronics or microcontroller business: you very well know the problems with chip and silicon availability. What was supposed to last maybe for a few months starting with COVID-19 is still a problem in 2022: chips are not available or the price has skyrocket.

Cost-effective usage of NXP LPC804 with WLCSP20 Package

We at the Lucerne University are using NXP Kinetis micro controllers which seem to be affected by the silicon shortage somewhat more than any other devices? When looking that the usual sources, it was clear some are still available, but in a rather exotic WLCSP package. So the question is: can it be useful?

Continue reading

Custom ${user} with C/C++ Code Templates

The Eclipse Editor has a very cool feature named ‘Code Templates’: With such templates files are created with specific pre-filled content. For the templates, variables like ${user} for the user name can be used, see Custom C/C++ Headers with Eclipse:

Eclipse Code Template Editor
Continue reading

Choosing GNU Compiler Optimizations

Tool chains like the GNU compiler collection (gcc) have a plethora of options. The probably most important ones are the ones which tell the compiler how to optimize the code. Running out of code space, or the application is not performing well? Then have a look at the compiler optimization levels!

However, which one to select can be a difficult choice. And the result might very well depend on the application and coding style too. So I’ll give you some hints and guidance with an autonomous robot application we use at the Lucerne University for research and education.

INTRO Sumo Robot
INTRO Sumo Robot
Continue reading

Creating custom Expansion Board and Header for the MCUXpresso Pins Tool

The MCUXpresso Pins Tool is part of the NXP configuration suite which makes pin assignments, configuration and muxing easy. What I have somehow missed from one of the latest updates and releases is that it allows me now to add my own custom headers definition. Not only the tool is now aware of the ‘standard’ Arduino headers, but I can add my own headers too. This can be useful for providers of breakout boards or any kind of board which can be added to a MCU board. In my case it is very useful for projects where we design our own (breadboard-friendly) board or a custom board with an expansion board: we can design a board header and use it in other projects.

Continue reading

Eyeglasses Case created with CNC and Laser Cutter

In many cases I prefer wood as material: it has a warm feeling and with its texture it makes things unique and special. For some time I was thinking about creating a wooden case for eyeglasses as a gift. And here is a first version of it:

Oak Wood case for Eyeglasses
Continue reading

Tutorial: Creating and using ROM Libraries with GNU Build Tools

You might never heard about ROM Libraries, and you are probably not alone. Some might thing that this refers to the boot ROM modern MCUs have built in, which is kinda close. But the thing here is about to build your own (possibly constant) ROM library, program it to your device of choice, and then use it from the application running on the device.

So the concept is to have a (fixed, stable) part with code and data on your device, which can be used by a (possibly changing) application: Think about a stable LoRaWAN network stack in the ROM, with a changing application using it: Would that not be cool?

ROM Library Concept

This not only adds flexibility, but as well allows smaller updates, as only a part of the program has to be changed or updated.

The question is: how to create and use such a ROM Library with the normal GNU build tools?

Continue reading

Include .bin Binary Files in a GNU Linker File

Sometimes it is needed or desired just to add or link a piece of data or BLOB (Binary Large OBject) to the application. For example I have created a .bin file of my code and constant data, and I need to add it to an application using the linker file. How to do this?

added BLOB to application
Continue reading

Resurrecting ‘bricked’ NXP Kinetis Devices

Modern MCUs like the NXP Kinetis have security features which prevent reverse engineering, but can ‘brick’ devices too. Depending on the settings, it prevents read-out from the FLASH or reprogramming the device. While some of the protection is (mostly) not by-passable by design, in many case the devices looks like ‘bricked’ but still can be recovered. In this article I’ll get you some ways for a (hopefully) successful recovery.

J-Link EDU Mini recovering a tinyK22 with needle adapter
Continue reading

Refilling the non-refillable Miele AutoDos Dishwasher Automatic Detergent Dispensing Disks

Did you know that modern (dish) washing machines have the ability to automatically dispense detergents? The positive side is: this can reduce the amount of detergents used. The machine will monitor the washing process, and ‘cleaner’ dishes should require less detergents.

Our new energy Miele Dishwasher came with that exact feature: the Miele AutoDos System, an automatic detergent dispensing system. The detergent is inside a rotating disk, dispensing detergents as needed, making it (hopefully) more environment-friendly:

Miele AutoDos Power Disk in Miele Dishwasher

The downside is: Miele did not make it refillable: after around 20 washing cycles, you have to replace the disk with a new one. This is not environment friendly. So I wanted to change this….

Continue reading

Installing Processor Expert into MCUXpresso IDE

With the new MCUXpresso versions out, and because it has been a while I showed how to install Processor Expert into Eclipse, here is an update how to do this.

Processor Expert in MCUXpresso IDE
Continue reading