Arm Cortex-M0 / M0+

Arm Cortex-M0 / M0+

The Arm Cortex-M0 32-bit CPU is the smallest Arm processor available. It features an exceptionally small silicon area, low power and a minimal code footprint.

The Arm Cortex-M0+ 32-bit CPU is the most energy efficient Arm processor. It builds on the Cortex-M0, retaining full instruction set and tool compatibility, while further reducing energy consumption and increasing performance.

More information is available on the Arm website.

Manufacturers using Arm Cortex-M0 / M0+ cores

More information is available for manufacturers marked in bold:

Austria Microsystems        Chungbuk Technofast        Cypress Semiconductor        Holtek       Infineon        Melfas        Microchip        Nordic        Nuvoton        NXP        Renesas        Rohm        Silicon Labs        Sonix        STMicroelectronics        Synergy        Toshiba        Triad Semiconductor        VeriSilicon        Vorago

Novos Environments for use with Arm Cortex-M0 / M0+

Novos FB – Foreground / Background Environment
Novos EFB – Extended Foreground / Background Environment
Novos FCFS – First Come, First Served Scheduling Environment
Novos RRS – Round Robin Scheduling Environment
Novos PPS – Pre-emptive Priority Scheduling Environment

Novos Compiler Compatibility

Novos ROM/Flash Requirements

The ROM/Flash on Cortex-M0 / M0+ processors vary extensively from a few hundred bytes to a few kilobytes. How much of that space the Novos environment takes determines how much is available for the application. That’s why the small size of each Novos environment, whether in a minimum or maximum configuration, ensures the application has maximum access to the available ROM/Flash.

The following table gives nominal code sizes for both minimum and maximum configurations of each Novos environment. The exact size you experience depends on the compiler you use and the services you invoke in the application. The minimum sizes in the table are for a configuration and kernel services that support an application using the scheduling policy of the environment. An application rarely makes use of every service supported by an operating system, making the maximum size a worst case number.

Novos EnvironmentMinimum Code SizeMaximum Code SizeAvailable Services
Novos FB1.4 Kbytes4.2 Kbytes31
Novos EFB1.6 Kbytes6.3 Kbytes53
Novos FCFS2.4 Kbytes9.9 Kbytes76
Novos RRS2.8 Kbytes10.1 Kbytes78
Novos PPS2.5 Kbytes11.9 Kbytes96

Novos RAM Requirements

Processors based on Arm Cortex-M0 / M0+ cores are often equipped with only a small amount of RAM. Making effective use of it is an important consideration for the application developer. Each Novos environment imposes a fixed amount of RAM, regardless of its configuration, as shown in the following table. That amount of RAM will increase based on user-defined parameters such as the objects in each class used by the application code, stack sizes, queue sizes, etc.

Novos EnvironmentMinimum RAM Size
Novos FB192 Bytes
Novos EFB220 Bytes
Novos FCFS244 Bytes
Novos RRS284 Bytes
Novos PPS292 Bytes

How much RAM do Novos objects use?

When the application creates an object for its use, it is allocated from the available RAM. Thus, it is important to know how much RAM is needed to support the application’s requirements. The following table shows the amount of RAM needed (in bytes) for the objects in each class in each Novos environment. User-defined stacks, queue sizes, etc. are user-defined and will be in addition to the table entries.

Object ClassNovos FB EnvironmentNovos EFB EnvironmentNovos FCFS EnvironmentNovos RRS EnvironmentNovos PPS Environment
Task--5260 68
DIH/FGE1818181818
Alarm4040444448
Queue4040444448
Event Group2018202024
Semaphore-22282836
RAM Pool-36404044
Mutex--202026

Example

An application using Novos PPS consisting of 3 Tasks, 2 Queues, 3 Semaphores, 2 Deferred Interrupt Handlers, and two Alarms would require the following amount of RAM (in bytes):

*     Does not include user-defined RAM needed for each Task’s Stack
**   Does not include user-defined RAM needed for body of the queues
*** Does not include user defined RAM needed for Interrupt Stack