Using custom FreeRTOS with S32K SDK and OSIF for ARM

In “Tutorial: FreeRTOS 10.0.1 with NXP S32 Design Studio 2018.R1” I showed how to use a custom FreeRTOS with the S32 Design Studio (ARM). The OSIF (OS Interface) provides an operating system and services abstraction for the application which is used by other S32K SDK components:

OSIF in S32K for ARM Eclipse Project

OSIF in S32K for ARM Eclipse Project

Continue reading

Advertisements

Creating Disassembly Listings with GNU Tools and Eclipse

In many cases it is very useful to see the generated assembly code produced by the compiler. One obvious way to see the assembly code is to use the Disassembly view in Eclipse:

Disassembly View

Disassembly View

But this requires a debug session. An easier way is to use command line options to generate the listing file(s).

Continue reading

Tutorial: FreeRTOS 10.0.1 with NXP S32 Design Studio 2018.R1

NXP not only sells general purpose microcontroller, but as well a portfolio of automotive devices which includes the S32K which is ARM Cortex based. For this device family, they offer the S32 Design Studio (or S32DS) with its own Eclipse distribution and SDK. The interesting part is that the S32DS includes Processor Expert (which is a bit different from the ‘mainstream’ Processor Expert). It comes with its own components for the S32K SDK which includes a component for FreeRTOS. But that component in S32DS 2018.R1 comes with an old V8.2.1 FreeRTOS component:

FreeRTOS 8.2.1 in S32DS 2018.R1

FreeRTOS 8.2.1 in S32DS 2018.R1

So what to do if I want to use the latest FreeRTOS (currently 10.0.1) with all the bells and whistles?

Continue reading

Building a DIY SMT Pick&Place Machine with OpenPnP and Smoothieboard (NXP LPC1769)

This article is about a project I have started back in January 2018. As for many of my projects, it took longer than anticipated.But now it is working, and the result is looking very good: a DIY automated pick and place machine to place parts on circuit boards. In the age of cheap PCBs, that machine closes the gap for small series of boards which have to be populated in a time consuming way otherwise.

OpenPnP Pick&Place Machine

OpenPnP Pick&Place Machine

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

Tutorial: Understanding and Using FreeRTOS Software Timers

Hardware Timers are essential to most embedded applications: I use them mostly for triggering actions at a given frequency, such as acquiring data from a  sensor. With using an RTOS I can do a similar thing using a task: the task will run with a given frequency and I can periodic work in it. However, using a task might be too much overhead doing this. The good news is that there is a much more efficient way to do this in FreeRTOS with Software Timers. And this is what this tutorial is about: how to use Software Timers with FreeRTOS.

FreeRTOS Software Timers

FreeRTOS Software Timers

Continue reading

Debugging ARM Cores with IP based Debug Probes and Eclipse

Using IP (Ethernet) based debug probes is a very handy thing: I don’t have to be directly connected to the debug probe (e.g. with the USB cable). This article explains how to use an IP-based Segger or P&E probe with the Eclipse based MCUXpresso IDE.

LAN Based Debugging

LAN Based Debugging

Continue reading

Recovering OpenSDA Boards with Windows 10

Windows 8 and 10 have added a ‘feature’ to scan and index devices attached to the host machine. This means that bootloaders or MSD (Mass Storage Device) programming implementations on evaluation boards developed in the Windows 7 age might not be prepared for that. Up to the point that it can impact the bootloader as outlined in “Bricking and Recovering OpenSDA Boards in Windows 8 and 10“. So far one of the easiest way to get out that situation was to use a Windows 7 machine. But if you only have a Windows 10 machine available, this article describes the needed steps to update the bootloader with Windows 10 host machines.

OpenSDA LED

OpenSDA LED

Continue reading

Converting Binary Files to Intel Hex Format with the SRecord Tool

I’m dealing a lot with bootloaders recently (see “Flash-Resident USB-HID Bootloader with the NXP Kinetis K22 Microcontroller“), and bootloaders are sometimes very picky about what file format they are able to consume. So what if I have a binary (see “S-Record, Intel Hex and Binary Files“) file and I need to convert it into the Intel Hex format?

converted binary to intel hex

converted binary to intel hex

Continue reading

Tutorial: CRC32 Checksum with the KBOOT Bootloader

In “Flash-Resident USB-HID Bootloader with the NXP Kinetis K22 Microcontroller” I presented how I’m using the tinyK22 (or FRDM-K22F) with a flash resident USB HID bootloader. To make sure that the loaded application is not corrupted somehow, it is important to verify it with a Cyclic redundancy Checksum (CRC). The NXP KBOOT Bootloader can verify such a CRC, but how to generate one and how to use it is not really obvious (at least to me), so this article explains how to generate that CRC.

CRC Values for KBOOT

CRC Values for KBOOT

Continue reading

Flash-Resident USB-HID Bootloader with the NXP Kinetis K22 Microcontroller

The tinyK22 board (see “tinyK22 Boards arrived“) gets rolled out at the Lucerne University of Applied Sciences and Arts, so I thought I write-up an article this weekend how to use that board with a Flash Resident Bootloader.

tinyK22 with USB HID Bootloader

tinyK22 with USB HID Bootloader

Continue reading

Performance and Runtime Analysis with FreeRTOS

One of the great things with the FreeRTOS operating system is that it comes with free performance analysis: It shows me how much time is spent in each task. Best of all: it shows it in a graphical way inside Eclipse too:

FreeRTOS Runtime Information in Eclipse

FreeRTOS Runtime Information in Eclipse

Continue reading

Converting a Raw Binary File into an ELF/Dwarf File for Loading and Debugging

Binary files are just a binary blob without debug information. Most debug tools and flashers are able to deal (raw) binary (see “S-Record, Intel Hex and Binary Files“). But GDB or the P&E GDB server really needs a ELF/Dwarf file which usually has all the debug information in it. This is a problem if all what I have is a binary file.

This post is about transforming a raw binary (.bin) file into an ELF/Dwarf file with adding a header to it:

Added Elf Header to Raw Binary File

Added Elf Header to Raw Binary File

Continue reading

Custom 3D Printed Magnetic Encoder Disks for Robotics Projects

I’m making great progress with the firmware for the new Mini Sumo Robot (see “New Concept for 2018 Mini Sumo Roboter“). The goal is a versatile and low-cost Mini Sumo robot, and the robot comes with the feature of magnetic position encoders. In a previous article I have explained how to mold custom tires for robots (see “Making Perfect Sticky DIY Sumo Robot Tires“), this article is about how to make DIY Magnetic disk encoders.

3D Printed Magnetic Disk Encoders

3D Printed Magnetic Encoders Disks

Continue reading

MCUXpresso IDE V10.1.0 with i.MX RT1052 Crossover Processor

In “Eclipse MCUXpresso IDE 10.1 with integrated MCUXpresso Configuration Tools” I mentioned that I wanted to try the i.MX RT1050 processor. Well, finally my ordered board from Mouser arrived, right on time for the week-end, so I had a chance to use that ARM Cortex-M7 running at 600 MHz :-).

i.MX RT1050 EVK

i.MX RT1050 EVK

Continue reading

Adding a Delay to the ARM DAPLink Bootloader

The ARM mbed USB MSD bootloader which is used on many silicon vendor boards has a big problem: it is vulnerable to operating systems like Windows 10 which can brick your board (see “Bricking and Recovering OpenSDA Boards in Windows 8 and 10“). To recover the board, typically a JTAG/SWD programmer has to be used. I have described in articles (see links section) how to recover from that situation, including using an inofficial new bootloader which (mostly) solves the problem. The good news is that ARM (mbed) has released an official and fixed bootloader. The bad news is that this bootloader does not work on every board because of a timing issue: the bootloader mostly enters bootloader mode instated executing the application.

DAPLink in Bootloader Mode

DAPLink in Bootloader Mode

Continue reading

WiFi OLED Mini Weather Station with ESP8266

I’m convinced that this ‘Internet of Things’ thing-thing is not real. Pure marketing and buz words without any added value, right? The IoT hype is so bizar: it must be originated by aliens which have taken over the brains of all the Pointy-haired Bosses of the world? There is no useful application or use case out there!

But wait! There *is* actually good use case, at least for the geeks of this world. We all love clocks as we want to know the time, and we all love the weather forecast so we can plan accordingly. At least I usually do :-).

SQUIX ESP8266 Mini Weather Station

SQUIX ESP8266 Mini Weather Station

Continue reading

Tutorial: Porting BLE+NRF Kinetis Design Studio Project to MCUXpresso IDE

The tools and IDE market is constantly changing. Not only there is every year at least one new major Eclipse IDE release, the commercial tool chain and IDE vendors are constantly changing the environment too. For any ARM Cortex-M development, the combination of Eclipse with the GNU tool chain provided by ARM Inc. is the golden standard. But this does not mean that things can be easily moved from one IDE package to another.

While moving between Eclipse versions and GNU versions is usually not a big deal at all, moving between the Eclipse build tool integration is usually not simple. While the GNU MCU Eclipse plugins are widely used (see Breathing with Oxygen: DIY ARM Cortex-M C/C++ IDE and Toolchain with Eclipse Oxygen), the Eclipse based IDEs from the silicon vendors or commercial Eclipse toolchain vendors are using  their own GNU toolchain integration. Which means the project files are not compatible :-(.

NXP FRDM-KW41Z Board

NXP FRDM-KW41Z Board

Continue reading

Getting Control over a 50 Watt CO2 Laser Cutter from China

There are people around me who think I’m crazy. And they are probably right. Who else would buy a machine from someone he does not know. I have to pay upfront. It is not clear how things will get delivered, what gets delivered, or if it gets delivered at all. Up to the point I can lose the money I have spent. Best of all: that machine is dangerous enough to potentially kill me. And it has the potential to put my home on fire too. Well, that sounds like an exciting weekend project, or not?

Weekend Box

60 kg Weekend Project Box arrived on the front door

Continue reading

Breathing with Oxygen: DIY ARM Cortex-M C/C++ IDE and Toolchain with Eclipse Oxygen

Last month (June 2017), the latest version of Eclipse “Oxygen” has been released, and I have successfully used it in several embedded projects. Time to write a tutorial how to use it to build a custom Do-It-Yourself IDE for ARM Cortex-M development: simple, easy, unlimited and free of charge. While the DIY approach takes a few minutes more to install, it has the advantage that I have full control and I actually know what I have.

Eclipse Oxygen

Eclipse Oxygen

Continue reading