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

Austria MicrosystemsChungbuk TechnofastCypress SemiconductorHoltek
InfineonMelfasMicrochipNordic
NuvotonNXPRenesasRohm
Silicon LabsSonixSTMicroelectronicsSynergy
ToshibaTriad SemiconductorVeriSiliconVorago

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 FB226 Bytes
Novos EFB232 Bytes
Novos FCFS288 Bytes
Novos RRS296 Bytes
Novos PPS304 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--5664 72
DIH/FGE2424242424
Alarm4444484848
Queue4040444444
Event Group2020242424
Semaphore-24323236
RAM Pool-40444444
Mutex--242428

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):

TOTAL RAM860***
Tasks372216*
Queues24488**
Semaphores336108
DIH22448
Alarms24896
Base Novos PPS RAM304

*     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