assert(), __FILE__, Path and other cool GNU gcc Tricks to be aware of

It is always good to have a close look what ends up in a microcontroller FLASH memory. For example using EHEP Eclipse plugin to inspect the binary file:

Source File Name in Binary Image

Source File Name in Binary Image

Obviously it has path and source file information in it. Why is that? And is this really needed?

What about:

  • Privacy: the path or file name might expose information (secret project name?) or might be used for reverse engineering?
  • Size: The strings add up to the final data/FLASH size, so this increases the need for ROM space?

So let’s have a look what is the reason for this and how it could be avoided or at least reduced.

Continue reading →

MCUXpresso IDE V11.3.0 for 2021

I’m in the middle of the university exam season: means writing exams and do grading. The same time the new semester is approaching too and I need to prepare the new course material. For the classes using NXP parts I’m using the Eclipse based MCUXpresso IDE, and I just received the announcement that a new version V11.3.0 is available: time to check out what is new.

MCUXpresso IDE v11.3.0 (Build 5222)

MCUXpresso IDE v11.3.0 (Build 5222)

Continue reading →

Eclipse Indexer Debug Tips

Eclipse includes a background parser called ‘Indexer’ which is used to assist the developer with various kind of information, for example jumping to a variable declaration or definition. Basically it is a parser running in the background collecting information about the sources and building up that ‘index’ data base.

indexer debug output

indexer debug output

Continue reading →

Eclipse CODAN (Static Code Analysis) for C/C++

The Eclipse CODAN (Code Analysis) plugin is part of CDT and is a powerful static analysis tool finding all kind of possible bugs and issues. Still to my surprise not many C/C++ developers take advantage of it maybe because they are not aware that it exists?

ups! Programming error catched by CODAN

ups! Programming error detected by CODAN

In this article I show a few tips how to effectively use it, especially with the NXP MCUXpresso SDK.

Continue reading →

New MetaClockClock V3 finished with 60 Clocks

The holiday break at the end of the year is always a good time to finish projects started during the year. This one is about my ‘MetaClockClock’ Version 3.

Red Hands on Blue

2020 with Red Hands on Blue

Continue reading →

New MCU-Link Debug Probe from NXP

The NXP MCUXpressso IDE Release V11.2.1 gave a hint about a coming new debug probe, the MCU-Link which is available now:

MCU-Link debugging the LPC845-BRK Board

MCU-Link in 3D printed enclosure debugging the LPC845-BRK Board

Continue reading →

Steps to use FreeRTOS with newlib reentrant Memory Allocation

Reentrancy is an attribute of a piece of code and basically means it can re-entered by another execution flow, for example by an interrupt or by another task or thread. This is an important concept and still a lot of code ‘in the wild’ does violate reentrancy. As a result the application crashes immediately in the best case. Worse it crashes randomly or even worse it behaves incorrectly 😦 .

Reentrancy is always a concern if using standard library functions, including printf() or malloc(). FreeRTOS offers a reentrant wrapper to the standard malloc() and free() (Memory Scheme 3)

Running FreeRTOS with reentrant newlib

Running FreeRTOS with reentrant newlib

Continue reading →

Getting Started with Microsoft Azure RTOS (aka ThreadX)

If you are a regular reader of my articles, you probably know that I’m using FreeRTOS in most of my applications, for obvious reasons. But clearly this is not the only RTOS out there. After Microsoft had acquired Express Logic back in April 2019 things kept quite for a while. To me the crown jewel of Express Logic is the ThreadX RTOS. But recently Microsoft is pushing more and more the ‘Azure Sphere’ and trying to monetize the ‘IoT’ (I apologize for mentioning that overused acronym) application space and providing it now free for devices from selected partners which includes NXP now.

Debugging with ThreadX in MCUXpresso IDE

Debugging with ThreadX in MCUXpresso IDE

Continue reading →

FreeRTOS and Eclipse Indexer for >5K Lines Source Files

Eclipse has a great built-in source code parser and browser (aka ‘Indexer’). It is basically a built-in compiler which parses the source files and assists the user with code completion and navigation help, making Eclipse this awesome productivity tool. On the downside this background parsing could potentially slow down things, and therefore Eclipse has some default settings to prevent this. Unfortunately, the FreeRTOS Kernel ‘tasks.c’ file is above-and-beyond of a ‘sane’ source file and will hit the default limits: as a result the ‘tasks.c’ file is not indexed and things like ‘Open Declaration‘ might not work for the file ‘tasks.c’.

Open Declaration

Open Declaration

Continue reading →

MCUXpresso IDE V11.2.1

I have started the semester and labs using the MCUXpresso IDE V11.2.0 which has been available from July this year. The past week I received the notification that the update V11.2.1 is available: time to check it out….

MCUXpresso IDE V11.2.1

MCUXpresso IDE V11.2.1

Continue reading →