This is a follow-up article of my earlier project presented in “FatFS, MinIni, Shell and FreeRTOS for the NXP K22FN512“. I wanted to extend it with a USB MSD (memory stick) device: The USB storage device gets automatically mounted, and depending on a configuration (.ini) file on the memory device I can perform various actions, for example automatically copy data from the SD card to the USB device. For example the system logs data, and to get the data I insert the memory stick, it copies the data on it and automatically unmounts it, and I can remove the memory stick.
Tag Archives: Building
Disabling NMI (Non Maskable Interrupt) Pin
The NMI is a special interrupt on ARM Cortex-M architecture: as the name indicates, it cannot be ‘masked’ by the usual ‘disable interrupts’ flags (PRIMASK, BASEPRI), similar to the Reset signal.
Dealing with the reset signal is kind of obvious, and most designs and boards have it routed to a reset button or similar. The NMI is less obvious if you don’t pay attention to it: most ARM-Cortex implementations and boards have the NMI signal routed to a pin and are ‘hiding’ it in the schematics behind a normal GPIO pin or port: if you don’t pay attention to the NMI functionality, the board might not work as intended.
McuLog: Logging Framework for small Embedded Microcontroller Systems
An essential tool especially developing larger applications or distributed firmware is to use logging. This article presents an open source logging framework I’m using. It is small and easy to use and can log to a console, to a file on the host or even to a file on an embedded file system as FatFS.
Tutorial: Adding FreeRTOS to where there is no FreeRTOS
FreeRTOS is pretty much everywhere because it is so simple and universal, and it runs from the smallest to the biggest systems. But it still might be that for the microcontroller device you have selected there is no example or SDK support for it from your vendor of choice. In that case: no problem: I show how you could easily add FreeRTOS plus many more goodies to it.
FatFS, MinIni, Shell and FreeRTOS for the NXP K22FN512
I’m using the NXP Kinetis K22FN512 in many projects, either with the FRDM-K22F or on the tinyK22: with 120 MHz, 512 KByte FLASH and 128 KByte it has plenty of horsepower for many projects. The other positive thing is that it is supported by the NXP MCUXpresso IDE and SDK. I have now created an example which can be used as base for your own project, featuring FreeRTOS, FatFS, MinIni and a command line shell.
FreeRTOS Task Runtime Statistics for NXP i.MX RT1064
FreeRTOS has many cool features, and one is that it can report the CPU percentage spent in each task. The downside is that to get this kind of information some extra work is needed. In this article I show how to do this for the NXP i.MX1064.
Tutorial: Rename, Copy or Clone Eclipse Projects with MCUXpresso
Especially in a lab or classroom environment it is convenient to start with a template project, and then explore different ways to shape the project for different needs. As for any IDE of this world, this requires an understanding of the inner workings to get it right. So in this article I show how to copy, clone or rename properly an Eclipse ‘template’ project in the MCUXpresso IDE.
Copyright Law for Makers and Educators
Maker spaces and ‘FabLabs’ are popular and accessible in many areas. 3D printers are on the cheap, and powerful laser cutters are in the range of the fearless hobbyist. You can get dirty-cheap PCBs from China in less than a week (ok, probably not right now because of Corona virus) and it is easy to SMD solder parts these days with a DIY SMD PnP machine and OpenPnP. With the right equipment and skill set it is possible to build many cool projects. It is very rewarding and a great learning thing. Blog about it so other can learn too. And it even could get featured on Hackaday.
But: The risk is that someone might send you letter about a ‘Copyright Infringement’. Sadly, this is what happened to me for one of my recent projects. I don’t think that ‘take down’ letter was justified, but I learned a great deal what I should have done differently to avoid that situation. So in the end, it was a learning opportunity, which I believe is worth to share. In essence: what can a maker or educator do?
Tutorial: Maximum Clock Frequency for Kinetis using MCUXpresso Clock Tools
The tinyK22 board with the NXP K22FN512 is a bread-board-friendly small board with a 8 MHz external oscillator:
This tutorial is about how to use the NXP MCUXpresso Clock configuration and configure the board to the maximum clock frequency of 120 MHz. The same steps apply to many other boards, including the FRDM-K22F one.
Enable Default FreeRTOS Debugging for LinkServer Debug Connections
Most of my projects are using FreeRTOS, and I’m using different Debug Probes (SEGGER, P&E and LinkServer) to debug NXP devices.
The NXP LinkServer debug connection is able to show the RTOS threads in Eclipse/MCUXpresso IDE which is incredibly helpful:
However, by default this is turned off. In this article I show how to turn this on by default.









