Unknown's avatar

About Erich Styger

Embedded is my passion....

Adding a Rocktech Capacitive Touch LCD to the NXP i.MX RT1052 EVK

It is never too early to start thinking about Halloween projects :-).

rended Eyes with i.MX RT

rendered Eyes with i.MX RT

When I ordered originally the MIMXRT1050-EVK from Mouser, it was without the LCD display (see “MCUXpresso IDE V10.1.0 with i.MX RT1052 Crossover Processor“. I ordered the LCD for the board soon after writing that article, but I was too busy with the university lectures and exams to get a hand on it. Finally I have spent a few hours at night and I proudly can say: the display is working 🙂

Continue reading

Show Eclipse Project Location in System Explorer

How can I open a project folder location in the system explorer?

Starting with Eclipse Oxygen, the project properties have a button for this in the Resource settings:

Show in System Explorer

Show in System Explorer

Continue reading

Updating the S32K144EVB to Switch between 5V and 3.3V Logic Levels

By default, the NXP S32K144EVB and microcontroller is using a 5V supply voltage and logic levels which is great for noisy environment or any 5V devices. Many of my displays and sensors use 3.3V logic levels, so I would have to use a level shifter from 5V to 3.3V. There is another way: to change the board for 3.3V logic levels so I can use directly things like a SSD1306 display.

S32K144EVB with OLED SSD1306 using 3.3V Logic Levels

S32K144EVB with OLED SSD1306 using 3.3V Logic Levels

Continue reading

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

Execute-Only Code with GNU and gcc

“There is no ‘S’ for Security in IoT” has indeed some truth. With all the connected devices around us, security of code should be a concern for every developer. “Preventing Reverse Engineering: Enabling Flash Security” shows how to prevent external read-out of critical code from device. What some microcontroller have built in is yet another feature: ‘Execute-Only-Sections‘ or ‘Execute-Only-Memory‘. What it means is that only instruction fetches are allowed in this area. No read access at all. Similar like ‘read-only’ ‘execute-only’ it means that code can be executed there, but no other access from that memory is allowed.

Locked Code

Locked Code

In this article I describe the challenges for a toolchain like the GNU gcc, and how to compile and link code for such an execute-only memory.

Continue reading

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

Klöntalersee

Image

The Klöntalersee is a lake in the Canton of Glarus, Switzerland. The lake has a size of about 3.3 km² and has been created by a prehistoric rock slide after the last ice age. From 1908 on it is used as a reservoir for electricity production. The picture below is from the Schwammhöhe looking down to the lake.

Klöntalsee from Schwammhöhe

Klöntalsee from Schwammhöhe

Happy Klöntaling 🙂

Eclipse Debugging with Pointers and Arrays

In the C programming language it is good practice to pass values by reference (using a pointer), especially for large set of data. For example the following function takes a message string and pointer to integer data which then is printed to the console:

static void printData(const char *msg, const int *intBuf, size_t bufSize) {
  puts(msg); /* print message */
  for(int i=0; i<bufSize;i++) {
    printf("buf[%i] = %i\n", i, intBuf[i]);
  }
}

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