FatFS with Adafruit MicroSD Breakout Board and NXP FRDM-KL25Z

Breakout boards are great: they allow me to explore functions quickly, without to build my custom board: all what I need is some wires and ideally a bread board.

Adadfruit MicroSD Card Breakout Board

Adadfruit MicroSD Card Breakout Board

Continue reading

Advertisements

McuOnEclipse Components: 25-June-2016 Release

SourceForge

SourceForge

A new release is available on SourceForge, with the following main changes:

  • Support for FreeRTOS and Cortex-M7
  • Segger SystemView updated to V2.38
  • Components for NXP Kinetis SDK V1.3
  • Fixed bug in Wait component (register handling for GCC and ARM)
  • FatFS supports FreeRTOS V9.0.0 with static memory allocation
  • FreeRTOS shell and task list with static memory allocation
  • Floating point conversion routines in Utility
  • FreeRTOS component shows NVIC mask bits

Continue reading

INTRO FS2016 Semester Closing with Robot Maze Challenge

“Learning-by-doing” is one of the core principles of my embedded systems and robotics course at the Lucerne University. For this the students apply what they learned using a robotics platform. In earlier semesters we did a Sumo battle at the end. This time the challenge was to build a remote controller plus to add the ability to explore and solve a line maze:

maze solving robots

maze solving robots

Continue reading

McuOnEclipse Components: 29-May-2016 Release

Major changes in this new release:

  • FreeRTOS V9.0.0 with static memory allocation.
  • Shell with single character I/O function.
  • FatFS File System with extra shell commands for memory dump and file creation.
  • Segger SystemViewer library updated to V2.36a
Segger SystemViewer V2.36a

Segger SystemViewer V2.36a

Continue reading

FreeRTOS V9.0.0 with Static Memory Allocation

I’m using FreeRTOS in most of my applications. There were only a few exceptions where an RTOS has to be used in safety critical systems: there usually it is not permitted to use any dynamic memory allocation because this adds the risk that a memory allocation could fail at runtime because of memory fragmentation or memory leak. And FreeRTOS uses a dynamic memory (heap) for the task stacks and the RTOS resources including semaphore, mutex and queues.

This is now a thing of the past. This week a new FreeRTOS Version 9 was released which does not need any dynamic memory allocation anymore: it is possible now to build completely statically allocated systems with FreeRTOS :-).

Dynamic and Static Memory Allocation in FreeRTOS V9.0.0

Dynamic and Static Memory Allocation in FreeRTOS V9.0.0

Continue reading

Mother of Components: Processor Expert with NXP Kinetis SDK V2.0 Projects

Unfortunately, now the NXP Kinetis SDK V2.0 does not include Processor Expert support (see “First NXP Kinetis SDK Release: SDK V2.0 with Online On-Demand Package Builder“). But at the Lucerne University we are using more than 150 different custom Processor Expert components we would like to use with that new SDK. So how to make them working with the Kinetis SDK V2.0? Using a Processor Expert as “the mother of all components”:

NXP Kinetis SDK V2.0 and Processor Expert Side-by-Side under Eclipse

NXP Kinetis SDK V2.0 and Processor Expert Side-by-Side under Eclipse

Continue reading

McuOnEclipse Components: 8-May-2016 Release

Time is passing fast, and many components have been updated to make the compatible with the NXP Kinetis SDK V2.0. As a highlight, besides of FreeRTOS the following components are now usable with the NXP Kinetis SDK:

Components compatible with Kinetis SDK

Components compatible with Kinetis SDK

Continue reading

McuOnEclipse Components: 3-Apr-2016 Release

It has been already two months after the Feb 2016 release, and so much things are going on, so a new release was overdue. Today I have released a new version of the McuOnEclipse components on SourceForge with the following main changes and features:

  • Kinetis SDK v2 with Processor Expert: Now many components can be used even with the Kinetis SDK v2.0 even with the Kinetis SDK not having Processor Expert included.
  • Updated Segger SystemViewer to v2.32a with post-mortem and static buffer support
  • Updated Segger RTT to v5.10u and fixed an issue with interrupts on Cortex-M4
  • FreeRTOS Thread Awareness with OpenOCD

See readme on SourceForge for the full history.

McuOnEclipse 2016-04-03 Release

McuOnEclipse 2016-04-03 Release

Continue reading

nRF24L01+ 2.4 GHz Wireless Connectivity with the tinyK20 Board

I’m using the tiny and inexpensive Nordic Semiconductor nRF24L01+ transceiver (see “Tutorial: Nordic Semiconductor nRF24L01+ with the Freescale FRDM-K64F Board“) in many projects: it costs less than $3 and allows me to communicate with a proprietary 2.4GHz protocol in a low power way (see “IoT: FreeRTOS Down to the Micro Amps“). I have that transceiver now running with the tinyK20 board too:

nRF24L01+ Transceiver with tinyK20

nRF24L01+ Transceiver with tinyK20

Continue reading

McuOnEclipse Components: 7-Feb-2016 Release

New in this release:

  • Segger SystemViewer: Upgraded to V2.30, added stack high-water mark
  • Segger RTT: fixed BASEPRI issue on Cortex M4 for critical sections
  • Utility: Fixed issue with Utility module and Kinetis SDK (usage of ‘byte’)
  • USB CDC: property to specify USB device current usage, new status getter functions.
Segger SystemViewer V2.30

Segger SystemViewer V2.30

Continue reading

McuOnEclipse Release 10-Jan-2016

With the start of the new year 2016 I have published a new McuOnEclipse component release with the following major updates:

  1. Updated Segger SystemView and Real Time Transfer (RTT): added terminal functions and extra interfaces
  2. Improved USB CDC with serial number handing
  3. FreeRTOS TaskList shell command
  4. USB Stack: added MSD Host support for MCF52259, added support for K24FN120 and for the 100 MHz K20 devices
  5. New NEOMatrix component for Adafruit NeoPixel Matrix displays

    256 NeoPixel Matrix with FRDM-KL25Z

    256 NeoPixel Matrix with FRDM-KL25Z

Continue reading

How to Add Bluetooth Low Energy (BLE) Connection to ARM Cortex-M

In many of my embedded projects I’m using successfully the Nordic Semiconductor nRF24L01+ (see “Tutorial: Nordic Semiconductor nRF24L01+ with the Freescale FRDM-K64F Board“) and the HC-06 Bluetooth transceivers (see “Getting Bluetooth Working with JY-MCU BT_BOARD V1.06“) for wireless communication. However, the nRF24L01+ is using a proprietary protocol, and the HC-06 does not work with Apple products (it does very well with Android devices). To close that gap I decided to add Bluetooth Low Energy (BLE, or Bluetooth 4.x). So this post is about how to add Bluetooth Low Energy (BLE) to NXP (formerly Freescale) Kinetis devices:

BLE Enabled Kinetis

BLE Enabled Kinetis

Continue reading

McuOnEclipse Components: 22-Nov-2015 Release

A lot of good things happened in the last three weeks, so here is a new updated McuOnEclipse component release, with the following main improvements:

  1. Updated Segger RTT component
  2. New Segger SystemView component
  3. FreeRTOS ‘tasklist’ shell command
  4. FreeRTOS with support for Segger SystemView

SystemViewer

Continue reading

Segger SystemView: Realtime Analysis and Visualization for FreeRTOS

One of the most important aspects for developing complex realtime applications is get insights into what is going on the target. Segger just has released a free tool which gives an incredible useful insight view and visualization:

Segger System View for FreeRTOS

Segger System View for FreeRTOS

Continue reading

McuOnEclipse Components: 08-Nov-2015 Release

Time is flying fast, time for another McuOnEclipse components release on SourceForge with the following main changes and features:

  1. New component for Segger RTT makes adding a console communication interface super easy (and fast!)
  2. RTT support for the command line Shell component
  3. RTT component used for Percepio FreeRTOS Tracing
  4. Updated USB component, support for USB CDC blocking/waiting and endpoint configuration
  5. Updated FreeRTOS to V8.2.3, memory heap selection improved and setting for time slicing
  6. RingBuffer implements a Delete() method
  7. Extended Kinetis SDK support in components, added by default
Segger RTT Console

Segger RTT Console

Continue reading

Tutorial: lwip with FreeRTOS and the Freescale FRDM-K64F Board

This tutorial is about how to create a lwIP project with FreeRTOS using the Kinetis SDK V1.3.0 with Kinetis Design Studio on the Freescale FRDM-K64F board.

FRDM-K64F Board with lwIP running

FRDM-K64F Board with lwIP running

Continue reading

Overview: Processor Expert

In “Overview: From Snippets to Code Generation” I discussed several tools used in my development process. On tool which helps me a lot to get things done is Processor Expert. In this post I’ll give an overview about this tool and reasoning for the pros and cons of using it.

Processor Expert

Processor Expert

Continue reading

McuOnEclipse Components: 17-Oct-2015 Release

On SourceForge I have published an update of the McuOnEclipse software components, with following major changes:

  1. FreeRTOS updated to version V8.2.2 which comes with TLS (Thread Local Storage) support and GDB debug helpers.
  2. Percepio Trace updated to V3.0.2 with the release of Segger Real Time Terminal (RTT) for continuous trace streaming.
  3. FSL_USB_Stack with alternate USB initialization to deal with an issue in combination with the Kinetis SDK v1.3.0
  4. GenericI2C and GenericSWI2C have added support for custom I2C bus handling.

    McuOnEclipse SourceForge Release 2015-10-17

    McuOnEclipse SourceForge Release 2015-10-17

Continue reading

FreeRTOS ARM Thread Debugging with Eclipse and GDB

FreeRTOS is probably the most popular RTOS used and I love it: it is efficient, has a lot of features, simple and easy to use. But despite its popularity, debugging it with open source tools as with Eclipse and GDB is really not that user-friendly: debugging threads/tasks is a pain compared to commercial solutions. For my university classes this semester I was looking for something easy to use by my students. Finally I managed to use a GDB helper which makes things easier now: I can switch task threads in Eclipse with GDB now 🙂

Switched to Shell Task

Switched to Shell Task

Continue reading