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 Environment||Minimum Code Size||Maximum Code Size||Available Services|
|Novos FB||1.4 Kbytes||4.2 Kbytes||31|
|Novos EFB||1.6 Kbytes||6.3 Kbytes||53|
|Novos FCFS||2.4 Kbytes||9.9 Kbytes||76|
|Novos RRS||2.8 Kbytes||10.1 Kbytes||78|
|Novos PPS||2.5 Kbytes||11.9 Kbytes||96|
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 Environment||Minimum RAM Size|
|Novos FB||192 Bytes|
|Novos EFB||220 Bytes|
|Novos FCFS||244 Bytes|
|Novos RRS||284 Bytes|
|Novos PPS||292 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 Class||Novos FB Environment||Novos EFB Environment||Novos FCFS Environment||Novos RRS Environment||Novos PPS Environment|
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