Implementing FreeRTOS Performance Counters on ARM Cortex-M

When using an RTOS like FreeRTOS, sooner or later you have to ask the question: how much time is spent in each task? The Eclipse based MCUXpresso IDE has a nice view showing exactly this kind of information: For FreeRTOS … Continue reading

Investigating ARM Cortex® M33 core – WiFi with Mikroe WiFi 10 click board

For this last blog in the series Investigating ARM Cortex® M33 core I decided to explore the expansion features of the LPC55S69-EVK. This board has three expansion ports (PMOD, Arduino Duo, Mikroe click) and I picked the Mikroe expansion port. … Continue reading

Investigating ARM Cortex® M33 core – Dual Core debug tutorial

In last week’s blog I explained that the LPC55S69 microcontroller from NXP has two Cortex® M33 cores, named core0 and core1. There was a lot of theory, and so this week I put it all into practice and show you … Continue reading

Investigating ARM Cortex® M33 core – NXP LPC55S69 has *two* M33 cores.

Throughout this series I’ve been using the LPC55S69 microcontroller from NXP as a platform to investigate the ARM Cortex® M33 core. NXP designed the LPC55S69 with two Cortex M33 cores and so this week I’m investigating these in more detail. … Continue reading

Investigating ARM Cortex® M33 core – DSP Acceleration 3 (PowerQuad FFT Tutorial)

I’ve always felt that the Fourier Transform (and in particular the embedded implementation Fast Fourier Transform) is the GOAT* of the DSP algorithms. The ability to convert a time-domain signal into a frequency-domain signal is invaluable in applications as diverse … Continue reading

Investigating ARM Cortex® M33 core – DSP Acceleration 2 (PowerQuad Matrix Engine Tutorial)

Last week I showed you how to use the Coprocessor interface of PowerQuad to calculate (mostly) unary functions. As an example the natural logarithm ln(x) takes just one operand, whilst the floating divide in PowerQuad requires two operands (x1)/(x2). PowerQuad … Continue reading

Investigating ARM Cortex® M33 core with TrustZone® – DSP Acceleration 1

If you ask your colleagues about ARM Cortex® M33 core, they’ll most likely remember that the ARMv8-M architecture adds the (optional!) TrustZone® security extension. But one, overlooked but significant new feature in ARMv8-M is the new coprocessor interface. With the … Continue reading

Investigating ARM Cortex® M33 core with TrustZone® – In-Application Programming Tutorial

Last week I investigated the In-System Programming feature in the boot ROM of the LPC55S69. Using the command-line program blhost I was able to erase the flash and download simple LED blinky programs. Of course, the functions that erase and … Continue reading

Investigating ARM Cortex® M33 core with TrustZone® – In-System Programming Tutorial

This week I’m back to the normal ‘Tutorial’ format with a look at the In-System Programming feature in the boot ROM of the LPC55S69. I’ll use the NXP-provided command-line program blhost and interface with the ROM to erase the flash … Continue reading

Investigating ARM Cortex® M33 core with TrustZone® – Trusted Execution Environment tutorial

When we are learning about TrustZone® it does not take long to recognise that it is the security attributes for memory that define memory regions to be Secure, Non-Secure or Non-Secure Callable. This week’s video shows how the Cortex® M33 … Continue reading

Investigating ARM Cortex® M33 core with TrustZone® – transition from non-secure to secure world

You might purchase a Cortex® M33 microcontroller with TrustZone® where the supplier has installed a secure ROM. Or you might be an IOT developer using LPC55S69 in your own application where you have partitioned the code into secure and non-secure … Continue reading

Investigating ARM Cortex® M33 core with TrustZone® – running TrustZone® example projects in MCUXpresso IDE

Last week I wrote about why we need the TrustZone® security extension for ARMv8-M. There are software use-cases where it can be very helpful to partition the software into 2 separate worlds, secure and non-secure. TrustZone® acts as the gatekeeper … Continue reading

Investigating ARM Cortex® M33 Core with TrustZone® – What is TrustZone® anyway?

After the Getting Started material from the previous weeks, today we are ready to investigate TrustZone®. We all remember TrustZone® – it is that magic piece of embedded IP that miraculously solves all of our IOT security problems – right? … Continue reading

Investigating ARM Cortex® M33 core with TrustZone® – Using the Clocks Config Tool

Clocks. I’ve always found the clock setting of a microcontroller one of the hardest things to get right during my embedded career. If I re-use the clocks setup from the development board it is easy. But if the development board … Continue reading

Investigating ARM Cortex® M33 core with TrustZone® – Using the Pins Config Tool

Well let’s face it, modern microcontrollers are complicated. The User Manual for the LPC55S69 has 1148 pages (Rev 1.3) and that does not include any of the electrical characteristics – see the Datasheet (129 pages) nor does it include the … Continue reading

Investigating ARM Cortex® M33 core with TrustZone® – Setting up your environment and creating your first project with MCUXpresso IDE

This is the second of my 17-part video tutorial series investigating the ARM Cortex® M33 core with TrustZone® security extension. My preferred platform for this investigation is the LPC55S69 from NXP, and of course it is necessary to have a … Continue reading

Investigating ARM Cortex® M33 core with TrustZone® – Unboxing and Getting Started

Hi, I’m Mark from embeddedpro® in the United Kingdom and Erich’s allowed me to be a guest blogger here on mcuoneclipse. At many industry events, trade shows and conferences I’ve seen and given presentations about TrustZone®, but have not found … Continue reading

Programming the ESP32 with an ARM Cortex-M USB CDC Gateway

The Espressif ESP32 devices are getting everywhere: they are inexpensive, readily available and Espressif IDF environment and build system actually is pretty good and working well for me including Eclipse (see “Building and Flashing ESP32 Applications with Eclipse“). The default … Continue reading

First Steps with the LPC55S69-EVK (Dual-Core ARM Cortex-M33 with Trustzone)

For the long Easter weekend I have organized a new toy: the NXP LPC55S69-EVK board: a dual ARM Cortex-M33 running at 100 MHz with ARM TrustZone:

Be aware: Floating Point Operations on ARM Cortex-M4F

My mantra is *not* to use any floating point data types in embedded applications, or at least to avoid them whenever possible: for most applications they are not necessary and can be replaced by fixed point operations. Not only floating … Continue reading