Syntax for inline assembly operands in GCC

The GNU Compiler Collection (GCC) provides an inline assembler that allows embedding assembly language code into C and C++ programs. This can be useful for writing time-critical code segments, accessing processor-specific instructions, or implementing code requiring direct hardware access. One of the key components of using GCC’s inline assembler is properly defining the operands that…

Inline assembly in C code for Cortex-M0/M0+

Inline assembly allows inserting assembly language code directly into C/C++ code. This can be useful for Cortex-M0/M0+ programming when you need more control than C/C++ alone provides, such as for low-level hardware access, performance optimizations, and access to specialized processor instructions. When to use inline assembly Typical situations where you would want to use inline…

Key factors in upgrading legacy Cortex-M0 designs to Cortex-M0+

Upgrading from the older Cortex-M0 to the newer Cortex-M0+ microcontroller can provide several benefits for devices and systems needing an extra performance boost. The Cortex-M0+ architecture builds on the strengths of the original Cortex-M0 design while adding some key enhancements. When considering an upgrade, there are a few key factors to take into account to…

Choosing an MCU based on peripheral sets and vendor longevity

When choosing a microcontroller unit (MCU) for a new project, two key factors to consider are the peripheral sets offered and the vendor’s longevity. The peripherals available on the MCU determine what features can be implemented without external components. A vendor’s longevity gives an indication of future device availability and tool support. Selecting an MCU…

Code Compatibility Between Cortex-M0 and M0+ Cores

The Cortex-M0 and Cortex-M0+ are two microcontroller cores from ARM aimed at low-cost and low-power embedded applications. While they share architectural similarities, there are some key differences that can impact code compatibility when migrating between the two cores. Introduction to Cortex-M0 and M0+ The Cortex-M0 is a 32-bit ARM processor core launched in 2009 for…

Fast I/O for Industrial Use Cases with Cortex-M0+

The Cortex-M0+ processor offers fast, flexible I/O capabilities that make it well-suited for a wide range of industrial applications requiring real-time responsiveness and deterministic behavior. With features like bit-banding, hardware interrupts, DMA, and various peripheral interfaces, Cortex-M0+ enables high-speed data acquisition, processing, and control in space-constrained embedded systems. Introduction to Cortex-M0+ The Cortex-M0+ processor from…

Selecting a Cortex-M0+ MCU for an Industrial Automation Application

Choosing the right microcontroller unit (MCU) is a crucial decision when designing any embedded system. For industrial automation applications, factors like performance, peripherals, power consumption, development tools and cost become especially important. The Cortex-M0+ series of MCUs from ARM offer an attractive option for such applications due to their combination of low cost, low power…

Porting existing LCD drivers to new Cortex M0+ MCUs

Upgrading to a new microcontroller (MCU) can provide benefits like better performance, more memory, and new features. However, it often requires porting existing peripheral drivers like LCD controllers to work with the new MCU. This article provides guidance on porting LCD drivers to new Cortex M0+ based MCUs. Overview of the Cortex M0+ Architecture The…

Parallel interfacing for LCD displays with Cortex M0+

Interfacing an LCD display in parallel mode with a Cortex M0+ microcontroller provides a simple and efficient way to drive the LCD while minimizing utilization of the microcontroller’s limited I/O pins. The Cortex M0+ parallel interface uses 8 data pins and 3 control pins to send characters and commands to the LCD display. Overview of…