I’m now in the middle of the university fall semester exam season with writing exams and grading student work, and the same time the new semester courses need to be prepared. With the global silicon and board shortage, this will be again a challenge to equip all the labs with the needed infrastructure. The good thing is that there is no shortage on software and tools side of the infrastructure: NXP released last week their new flagship Eclipse based IDE: the MCUXpresso IDE 11.5.0. Time to check it out for the upcoming lectures and classes….
Spoiler Alert: It has a new view for FreeRTOS lovers, plus new features for energy/power measurements!
💡 As with every Eclipse based IDE: I recommend to use it with a *new* workspace folder and then re-import the project and settings as needed. Never share an Eclipse workspace!
The list on MCUXpresso IDE v11.5.0 Now Available – NXP Community plus the release notes gives an extensive overview about the ‘what’s new’ things. Beside of the ‘expected’ things like updated Eclipse IDE 2021-06 version, latest debug probe binaries, new device support and bug fixes, there are a few noteworthy items in my view:
- Eclipse 2012-06 release train
- Custom SVD Files per project
- New view for FreeRTOS Direct Task Notifications
- Ability to import SDKs directly from GitHub
- SWO: initialization on the application side, configuration dump
- McuLink Energy Measurement with Trigger functionality
Let’s check them out….
Eclipse from the 2021-06 release train comes with extended support for headless builds: now you can remove projects from the workspace or use a verbose progress monitor while building.
The Build Targets view supports Working Sets: that way one can easier switch between working sets or in my case: between lecture modules:
The disassembly view shows now the byte op-codes, which is much better and easier to read:
Another nice feature is the new context menu ‘Jump to Memory’ inside the disassembly view which makes debugging PIC code easier:
The GDB Process Properties have been enhanced with time stamp and command line information:
Custom SVD Files
Already the previous release had the feature of viewing the target peripherals and registers without the need for a debug connection to the target (see Offline Peripheral View in 11.4.0). For this a custom SVD file could be used as well. With the new version I have now the ability to specify the SVD file to be used for the debugging session too, inside the project properties:
FreeRTOS Direct Task Notification View
One of the really outstanding features of the is MCUXpresso IDE is its support for FreeRTOS. And the 11.5.0 comes with another cool feature for it: a view for FreeRTOS DTN (Direct Task Notification). DTN is a fast and lightweight feature in FreeRTOS to send notifications to a task. Because they are very useful and efficient, I’m usually prefer them over message queues or semaphore messages. But they are not easy to debug, but this changes with the new Task Notifications view.
For the new ‘Task Notifications’ view, there is menu entry in the RTOS menu:
This gives a very useful view with all the tasks in the system and what notification they are waiting for:
SDK GitHub Support
The new release takes advantage of the implemented git support inside the Eclipse IDE: now one can import an NXP MCUXpresso SDK directly from the NXP GitHub.
I can import an SDK from a local or remote repository:
For a remote repository, I can specify the git repository location plus where the repository shall get cloned:
What I really like about that approach: it makes distribution of a SDK much easier in a class/lab environment, as I can ask students to import the SDK from a repository. And this makes things easier inside a company/development group too. The other benefit is: I don’t have to download each SDK as a package, I can get all of them if I want:
Note that this requires git installed on the system which is pretty standard on any development machine these days. The other requirement is to have West installed. West is Zephyr’s meta tool and much less common, so most likely you need to have this one installed too. West is basically used to pull in the dependencies. Personally, I have mixed feelings about the need for West, as this adds another tool (and complexity). If not using the SDK git import, then of course all this is not needed.
SWO or Single Wire Output (a hardware feature of ARM) has received many bug fixes and enhancements.
Another great and related features is now that the modifications by the IDE/debugger are written to the SWO and Trace Console: that way I could copy&paste that code and analyze what the debugger does and potentially use the same code in the application without the need for the debugger.
McuLink Pro and Energy Measurement
As a first item, make sure you update the McuLink and/or McuLink Pro debug probe firmware from https://www.nxp.com/design/microcontrollers-developer-resources/mcu-link-pro-debug-probe:MCU-LINK-PRO, as for some of the new features you need an updated probe firmware. At the time of this article, it should be 2.250:
The previous 5 minute recording limit has now been lifted, and the recording time can now be up to 100 hours.
Another cool feature is to control the measurement with a trigger signal:
That signal is the MEAS_TRIG one found on the MCU-Link Pro schematics:
The trigger signal is found on pin 13 of J19:
I can drive that pin from a automated test infrastructure or by the application itself. Below is how I trigger it from the application running on a FRDM-K22F board:
It allows me to perform a measurement over an application defined period. Below a 100 ms measurement during a FreeRTOS task execution:
With this, it is easier to narrow down a certain power/current consumption with a code behind it.
The new IDE version comes with many notable extensions and features. I really like the new FreeRTOS Direct Task Notification view, this one will make my labs for FreeRTOS easier to debug. The power measurement features will be very useful in my low-power labs. The ability to import SDKs from git makes it easier to distribute a lab infrastructure or install multiple SDKs in one step. I have not used much SWO in my labs, mostly because SWO configuration has been complex: now with the ability to have standalone SWO configuration I might have to reconsider using SWO. And last but not least: the various Eclipse platform enhancements makes this a worthwhile update.
Happy Eclipsing 🙂