Tutorial: Booting the NXP i.MX RT from Micro SD Card

It is a common thing to boot a Linux system (see the Raspberry Pi) from a micro SD card. It is not that common for a microcontroller. The NXP i.MX RT ARM Cortex-M7 fills that gap between these two worlds. No surprise that it features a ROM bootloader which can boot from a micro SD card.

SD Card with i.MX RT1052

SD Card with i.MX RT1052

Continue reading

Advertisements

FreeRTOS: how to End and Restart the Scheduler

Most host or desktop systems (say Linux, Mac or Windows) have a normal use case where you start the operating system say in the morning and shut it down in the evening, and then you leave the machine. Embedded Systems are different: they are not attended, and they are supposed to run ‘forever’. Not every embedded system needs to run an OS (or in that world: Real-Time Operating System or RTOS), but the same applies here: after the RTOS is started, it is not intended that it will shutdown and restart. To the extend that you won’t they support the ‘shutdown’ and ‘restart’ functionality at all. In case of gathering coverage information this would be really useful:

coverage information from freertos application

coverage information from FreeRTOS application

In the case of FreeRTOS: what if I really need to shutdown the RTOS and restart it again, as by default this is not supported. This is what this article is about …

Continue reading

GDB All-Stop and Non-Stop Mode with LinkServer

GDB supports a mode which allows the GDB debug client to read memory while the target is running. This allows features like ‘live variables’: that way I can see the variables refreshed and changing over time without halting the target. Another functionality which comes with that feature is to check stopped threads or to see all threads in the system.

multiple freertos threads in debug view

multiple FreeRTOS threads in debug view

Continue reading

Freelink LPC4322JET100 based Debug Circuit on NXP i.MX RT1064-EVK Board

As noticed in “First Steps with the NXP i.MX RT1064-EVK Board” there is a new LPC4322 based debug interface on the RT1064-EVK board.

LPC4322JET100 based Debug Interface

LPC4322JET100 based Debug Interface

Continue reading

Using Camera Modules with NXP i.MX RT10xx EVK

In “First Steps with the NXP i.MX RT1064-EVK Board” I mentioned that the board kit came with a camera module, but it was unclear to me which module was included in the kit. I know it now: it is the ON Semiconductor MT9M114 :-).

Image from the MT9M114

Image from the MT9M114

Continue reading

First Steps with the NXP i.MX RT1064-EVK Board

I always reserve time between Christmas and New Year to get my hands on technology pieces which I might not have any time otherwise. Among different things I ordered the NXP i.MX RT1064-EVK board from Mouser.com, and it arrived right before Christmas. Time to have it unboxed and started….

i.MX RT1064 Processor

i.MX RT1064 Processor

Continue reading

Variable Width Character Encoding in Eclipse Editor

Dealing with variable width character encoding as with UTF-8 is pretty much a standard these days, at least in the Desktop programming world. This is not so much true when programming embedded devices and microcontroller. In any case, Eclipse has you covered. This is especially helpful dealing with non-ASCII character codes in comments:

Comment with UTF-8 in Eclipse

Comment with UTF-8 in Eclipse

Continue reading

New NXP MCUXpresso IDE V10.3.0 Release

Friday this week NXP has released a new version of their flagship IDE: the MCUXpresso IDE V10.3.0. The version number indicates an incremental update from the earlier V10.2.1,  but there are many exciting features and new features which make me switch my lecture material to this new IDE for the next semester.

MCUXpresso IDE V10.3.0

MCUXpresso IDE V10.3.0

Continue reading

Playing Zork with FreeRTOS on ARM in three different Ways

You might wonder what ‘Zork‘ is? Zork is one of the first and earlist fictive computer games, written around 1977 and 1979, written in MDL on a DEC PDP-10 by members of the MIT Dynamic Modelling group (see https://en.wikipedia.org/wiki/Zork). I believe the first time I have played Zork was around 1984 on a Commodore 64.

Zork

Zork

Continue reading

Tutorial: First Steps with Embedded Artists NXP i.MX RT1052 OEM Module

Not ready for the complexity of a full blown Embedded Linux, but need that extra compute performance? Need an ARM Cortex-M7 running at 600 MHz module on a half-sized business card, ready to be integrated? Here we go: the Embedded Artists i.MX RT1052 OEM module:

Embedded Artists NXP i.MX RT1052 OEM Module

Embedded Artists NXP i.MX RT1052 OEM Module

Compute modules are very common in the Embedded Linux space, for example see this Toradex module. The reason is simple: these high-performance boards simplify the design, as I don’t have to care about the BGA packages and the external SDRAM and FLASH devices: everything is on a module I can easily integrate into my base board.

Continue reading

Tutorial: Catching Rogue Memory Accesses with Eclipse and GDB Watchpoints

Eclipse is great: it gives me the tools and capabilities to solve the really hard bugs to find. An example of that ‘hard’ category are ‘rogue’ memory accesses: something in the application is accessing an unwanted memory location and corrupts the data. This might be very sporadic, or takes a long while until it happens. With normal ‘stop-mode’ debugging (setting a normal breakpoint) and stepping usually won’t let me find that bug, as it might be coming from a pointer somewhere. Maybe from an interrupt routine. Or maybe an unitialized or corrupted pointer corrupts to my memory. Usually all what I know is the memory adddress of the data, maybe what is written, but not what or who is writing to that location.

In this article I’m using one of the ‘less-known’ debugging techniques available in Eclipse and CDT and how it works: watchpoints!

Watchpoint with Condition

Watchpoint with Condition

In this article I’m using one of the ‘less-known’ debugging techniques available in Eclipse and CDT and how it works: watchpoints!

Continue reading

First Steps with the NXP i.MX RT1020 EVK Board

Powerful ARM Cortex-M7 microcontroller are on the rise, bridging the gap between traditional microcontroller and Embedded Linux systems. I already published articles for the NXP i.MX RT1052 which is an ARM Cortex-M7 running at 600 MHz. Because the RT105x is available in BGA196 package only, I have as oredered the i.MX RT 1050 EVK which has a similar device on it, but in LQFP package:

i.MX RT1021

i.MX RT1021

Continue reading

i.MX RT1050 EVK vs. EVKB

I noticed on Mouser.com that there is a new i.MX RT1050 board: the EVKB one. I have used the EVK (the one without the ‘B’) for several weeks (see “MCUXpresso IDE V10.1.0 with i.MX RT1052 Crossover Processor” and “Adding a Rocktech Capacitive Touch LCD to the NXP i.MX RT1052 EVK“). I needed anyway a second board, so I ordered that EVKB from Mouser, and after some delay and waiting it arrived on my desk. So far this boards seems to be a better one:

i.MX RT1050 EVKB Board

i.MX RT1050 EVKB Board

Continue reading

Tutorial: Using Runtime Statistics with Amazon FreeRTOS V10

FreeRTOS includes a nice feature to give me information about how much time every task is spending running on the system:

FreeRTOS Runtime Information

FreeRTOS Runtime Information

This tutorial explains that FreeRTOS Runtime Statistics feature and how it can be turned on and used.

Continue reading

MCUXpresso IDE 10.2.1

NXP has just released the 10.2.1 update of their flagship Eclipse based IDE. While the number increase from 10.2.0 to 10.2.1 indicates a minor release, there are a several things which make me move over to that new release.

MCUXpresso IDE 10.2.1 build 795

MCUXpresso IDE 10.2.1 build 795

Continue reading

Installing Darkest Theme with MCUXpresso IDE 10.2

Is BLACK the color of the season? My students really seem to love these ‘dark’ Eclipse themes. Well, I tried ‘dark’ themes in the past, but I have not been vey excited about it. Somehow I preferred more the ‘black on white background’ thing. But: I have now managed to install the ‘Darkest Dark’ Eclipse theme into the NXP MCUXpresso 10.2 IDE for my daily work, and I feel it hurts my eyes less? Maybe I’m getting older? Or could it really be that ‘dark’ look and feel?

Darkest Dark Theme with MCUXpresso IDE

Darkest Dark Theme with MCUXpresso IDE

Find out for yourself in the following article….

Continue reading

Do you Speak Klingon? How to change the Eclipse IDE UI Language with Babel

We in Switzerland are proud about the fact that our country has four official languages: Italian, French, German and Romansh. Most of Swiss people speak at least two of them, plus the inofficial fifth language (English).

Eclipse is even better than that and speaks 46 different languages. If you are not happy with the default language, try out Babel! And yes, Eclipse has a language pack for Klingon too:

Babel Language Packs in Klingon

Babel Language Packs in Klingon

🙂

Continue reading

Understanding FreeRTOS Task Stack Usage and Kernel Awareness Information

When using the FreeRTOS Task List in the Eclipse based MCUXpresso IDE, it shows the list of tasks with their stack size used. But with the default FreeRTOS settings it is not able to determine the correct stack size and shows a warning icon:

Warning for Stack Usage

Warning for Stack Usage

Continue reading

Debugging the Teensy 3.6 with Eclipse MCUXpresso IDE and CMSIS-DAP LPC-Link2

The Teensy boards are great, but as they are they are not really useful for real development, as they lack proper SWD debugging. In “Modifying the Teensy 3.5 and 3.6 for ARM SWD Debugging” I have found a way to get SWD debugging working, at that time with Kinetis Design Studio and the Segger J-Link. This article is about how debug the Teensy with free MCUXpresso IDE and the $20 NXP LPC-Link2 debug probe:

Teensy 3.6 with NXP LPC-Link2

Teensy 3.6 with NXP LPC-Link2

Continue reading