Tanto o núcleo Cortex M0+ como o Cortex M0, implementam a arquitetura ARMv6-M e possuem arquitetura Von Neumann. São microcontroladores de 32 bits de baixo custo desenvolvidos pela ARM, que pretendem ocupar o lugar de micros bem simples, que realizam funções específicas ou que demandam baixo consumo de energia. Se comparado ao seu irmão Cortex M0, veja o que mudou no M0+:

Cortex M0+: Dois estágio de pipeline

Essa arquitetura apresenta uma novidade: opera com dois estágios de pipeline apenas. Essa característica permite que o processador acesse menos a memória flash, e, assim, permite menor consumo, se comparado com uma mesma atividade do núcleo Cortex M0, que tem três estágios de pipeline, tal como os núcleos Cortex M3 e o ARM7.

As sombras de branch também são reduzidas e isso propicia um tempo de chamada à função bem pequeno e interrupções com latência menor.

Cortex M0+: Acesso a IOs em um só ciclo

Essa característica interessante dos Cortex M0+ permite que os estados de cada pino sejam monitorados ou alterados em um só ciclo. Assim, CIs pequenos podem oferecer um controle do estado individual de seus pinos. É possivel mudar o estado de um pino na frequência igual à metade da frequência de operação do microcontrolador. Por exemplo, caso o microcontrolador esteja operando a 12 MHz, é possível que todos os pinos digitais do microcontrolador oscilem a 6 MHz. 

Cortex M0+: MPU – Unidade protegida de memória

O Cortex M0+ suporta execução em nível previlegiado ou não previlegiado. Além disso, possui MPU – em oito regiões programáveis que podem ser utilizadas por um RTOS para criar regras de acessos e permissões para as diferentes tarefas rodando ao mesmo tempo. Ao fazer isso, são criados níveis de proteção no sistema, impedindo que uma aplicação em execução corrompa a memória de outras tarefas ou do próprio kernel do RTOS. Essa característica, no entanto, é opcional e só está presente nos Cortex M0+ da Freescale, família KM. Nenhum outro micro com núcleo Cortex M0+ possui MPU.

Cortex M0+: Realocação de tabela de vetores

O processor com arquitetura Cortex-M0+ suporta realocação de tabela de vetores. Isso permite realocação de vetores de exceção durante o tempo de execução.

Cortex M0+: Debug

O Cortex M0+ possui um solução de debug de baixo custo de trace baseado no uso de Micro Trace Buffer.

Uma pequena porção da SRAM pode ser alocada para isso pelo programador. O MTB armazena nessa área reservada todas as informações de trace relativas à essa instrução como se fosse um buffer circular. Quando o processador é parado, uma análise dessa região de SRAM pode ser realizada. Ele permite, assim, verificação do histórico de execução de instruções passadas.

Pode, além dessa forma, parar a execução quando o software passa por uma determinada instrução, para realizar seu trace.

A interface de debug é a SWD, 2 pinos ou JTAG.

MTB está presente nos microcontroladores Cortex M0+ da Freescale e da NXP. Não é encontrado, no entanto, nos micros da ATMEL. A memória utilizada para Trace é compartilhada com a memória SRAM nos microcontroladores da Freescale e NXP. Portanto, para realizar um trace, é interessante escolher um microcontrolador com um pouco mais de SRAM que a aplicação final demanda. Até 8 KB, para os micros da Freescale, podem ser utilizados para análise detalhada do que acontece durante a execução do código. 

Cortex M0+: Fabricantes

Apenas quatro fabricantes possuem microcontroladores Cortex M0+. Veja a seguir:

Freescale

 A Freescale possui diversos microcontroladores que já implementam a arquitetura Cortex M0+ e já os produz há mais tempo que seus concorrentes, hoje Atmel e NXP. Possui em todas as famílias suporte a debug utilizando a ferramenta livre OpenOCD. Detalho abaixo as famílias Freescale Cortex M0+:

NXP

ATMEL

Silicon Labs (antiga Energy Micro)

A linha de microcontroladores denominada ?EFM32ZG Zero Gecko, com 16 part numbers diferentes, tem até 32 KB de Flash e 4 KB de RAM, possuem capacidade de funcionar até 24 MHz com cristal externo. Como diferencial de mercado, possuem ADCs de 12-bits operando a até 1 Mbps. Alguns destes componentes também tem criptografia AES 128 em hardware. Essa linha era Cortex M0 e foi atualizada no fim de 2012 para Cortex M0+. Incorporou, assim, todas as características fundamentais para se atingir um consumo menor com relação ao núcleo anterior, M0.

Resumo

Referências

https://www.arm.com/files/pdf/Cortex-M0_Plus_Intro.pdf
https://en.wikipedia.org/wiki/Dhrystone
https://infocenter.arm.com/help/topic/com.arm.doc.ddi0432c/DDI0432C_cortex_m0_r0p0_trm.pdf
https://www.freescale.com/webapp/sps/site/taxonomy.jsp?code=KINETIS_L_SERIES
https://www.freescale.com/webapp/sps/site/taxonomy.jsp?code=KINETIS_E_SERIES
https://www.freescale.com/webapp/sps/site/taxonomy.jsp?code=KINETIS_M_SERIES
https://www.atmel.com/tools/ATSAMD20-XPRO.aspx
https://www.atmel.com/Images/Atmel-42129-SAM-D20_Datasheet.pdf
https://www.nxp.com/products/microcontrollers/cortex_m0_m0/series/LPC800.html#products
https://www.nxp.com/products/microcontrollers/cortex_m0_m0/series/LPC800.html

Canal ARMflix: Video Tutorial on ARM Cortex-M Series – Debug and Trace

Silicon Labs