With the start of the new year 2016 I have published a new McuOnEclipse component release with the following major updates:
- Updated Segger SystemView and Real Time Transfer (RTT): added terminal functions and extra interfaces
- Improved USB CDC with serial number handing
- FreeRTOS TaskList shell command
- USB Stack: added MSD Host support for MCF52259, added support for K24FN120 and for the 100 MHz K20 devices
- New NEOMatrix component for Adafruit NeoPixel Matrix displays
Segger SystemView and Segger Real Time Transfer (RTT)
Both the Segger SystemView and Segger Real Time Transfer components have been updated to v2.26. The main changes are:
- Code has been linted with PC-lint
- The memory for the task list is now statically allocated (not using malloc()).
The static memory allocation for the task list was problematic because malloc() or the FreeRTOS memory allocation was called from an interrupt context. I have changed the implementation to use static allocated memory, but this requires that the maximum number of tasks needs to be specified at compile time.
Make sure you download the SystemViewer executable and package from https://www.segger.com/systemview.html:
- Now includes a Mac and Linux version
- The SystemViewer executable speed on the host has been improved
- Better UI and scrolling support
- Added Terminal view
For the terminal view, there are extra functions to print messages (standard, error and warnings) in the component available. Print(), Warn() and Error() send strings to the host, and there are printf() style functions available too. I can select between processing the open arguments on the host or on the target. Additionally, functions to log enter and exit of ISR’s have been added:
With the printing functions, I can now print messages, warnings and errors to the SystemViewer and show them in a ‘Terminal’ view:
In order to differentiate between different USB CDC devices (see “USB CDC with the Raspberry Pi“), a new ‘serial number’ property has been added to the USB CDC device properties:
Up to 28 characters are supported. I was thinking to add an option to use the Kinetis UID, but only if there would be demand for this. Bus reported device and Bus reported vendor strings can now be smaller than 28 resp. 14 characters (they all use now a flexible limit of 28).
The USB stack now has support for the 100 MHz K20 devices plus for the K24FN120. Additionally, the MCF52259 is supported in MSD Host mode.
The ring buffer component has two new methods added:
- Compare() to compare against a list of items
- Putn() to add multiple items to the buffer
In FreeRTOS, the tasks are not listed anymore with the ‘status’ command. Now there is a dedicated ‘tasklist’ command which lists information about the tasks. Compared to the previous output it adds more details as the task handle, the base and actual priority plus runtime information (which must be enabled).
New NEOMatrix Component
To simplify using the Adafruit 8×8 NeoPixel Matrix, there is now a new component NEOMatrix. The component works with the graphical font and graphics (lines, circles, etc) library.
An example project using it is on GitHub here: https://github.com/ErichStyger/mcuoneclipse/tree/master/Examples/KDS/FRDM-KL25Z/FRDM-KL25Z_NeoShield which uses a 16×16 (4 8×8 modules) pixels showing the graphical font:
The component handles flexible matrix wiring. Any pixel of the matrix can be individually addressed.
With the graphics library I can draw lines/circles/etc:
With the graphical UI library I have access to common user interface elements:
With the graphical font library I can draw text:
The new components add many extensions plus several bug fixes. The updated Segger RTT and SystemView is a real gem for me. And the NeoMatrix component is now used in three different projects too :-).
You can get the new files and release from SourceForge: https://sourceforge.net/projects/mcuoneclipse/files/PEx%20Components/. I hope you enjoy it.
Happy McuOnEclipsing 🙂