ARM Cortex M0+

ARM Cortex

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.

pipe6_1 ARM Cortex

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.

 pipe8_1 ARM Cortex

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. 

mtb ARM Cortex

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

  • Freescale Kinetis E - feito para ser utilizado em equipamentos que trabalham em ambientes ruidosos e/ou hostis pois possuem alta imunidade a ruído. Podem operar com cristal interno, de 32 kHz e 20 MHz, e com cristal externo. Opera em 5V e suporta grandes variações de temperatura.
    • Kinetis KE02 - primeira linha de microcontroladores dessa família - já é lançado com 10 microcontroladores de 3 opções diferentes de encapsulamento ( 32, 48 e 64 LQFP )

29472_KE02_BD ARM Cortex

  • Freescale Kinetis L, que são os microcontroladores de uso geral, e podem operar a até 48 MHz com cristal externo ou 4 MHz com oscilador interno. Apresentam um consumo bem baixo de corrente em seus modos especiais de economia de energia.
    • Kinetis KL0x - Microcontroladores básicos e de menor preço e capacidade de memória e recursos
    • Kinetis KL1x - De uso geral
    • Kinetis KL2x - Micros com periférico USB OTG - Low Speed e Full Speed
    • Kinetis KL3x - Microcontroladores com interface LCD
    • Kinetis KL4x - Uma mistura do 2x e 3x - Microcontroladores com interface LCD e USB OTG Low e Full Speed

KL02_BD ARM Cortex

  • Freescale Kinetis M é dedicado para dispositivos medidores de energia. Ele possui, como destaque, 2 a 4 canais de 24 bits ADC sigma-delta, ISO-7816 para leitura de smart cards, interface com display, um ou dois Amplificadores de ganho variável e características de segurança, como detector de tamper e gerador de números aleatórios. Três microcontroladores diferentes estarão disponíveis para venda, com encapsulamento MAPBGA 44, QFP 64 e QFP 100. É o M0+ mais veloz fabricado até hoje - opera até 50 MHz. São os únicos M0+ do mundo atualmente com MPU. Ainda não existe nenhum datasheet completo de componente no site da Freescale, tampouco User Manual dessa família de microcontroladores.

KINETISM_BD ARM Cortex

NXP

  • NXP LPC800 - Essa família, lançada em 2012, conta já com 5 diferentes microcontroladores, cada um com um encapsulamento diferente. Os micros já lançados contam com até 20 pinos. A NXP deixa claro nessa linha que quer utilizar esse microcontrolador como dispositivo de entrada e vem pra ser um forte competidor dos microcontroladores de 8 e 16 bits. Pode operar até a 30 MHz com cristal externo, ou 12 MHz com oscilador interno, sem necessidade de cristal. O que chama atenção nesse microcontrolador é sua matriz de configuração, que permite que pinos digitais de diferentes funções sejam recolocados em diferentes posições, inclusive durante operação, e possui um micro de 8 pinos com encapsulamento DIP8. Do ponto de vista do desenvolvimento de software, possui ferramentas visuais que permitem configurar os pinos de maneira fácil. Além disso, a comunidade mbed possui suporte às duas placas de desenvolvimento com microcontroladores dessa família.

lpc800 1 ARM Cortex

 

ATMEL

  • ATMEL SAM D20 - Recém lançada, as novidades mais interessantes desse componente são o periférico específico para aplicações touch e uma inovadora forma dos periféricos se comunicarem sem passar por DMA ou sem que o core se preocupe com isso. Em outubro será comercializado o primeiro microcontrolador dessa família, o SAMD20J18, encapuslamento LQFP64, o mesmo que está no Evaluation KIt SAM D20 Xplained Pro. Opera até 48 MHz e possui oscilador interno de 8 MHz. Do ponto de vista de software, tem já suporte no ATMEL Studio, com diversos exemplos prontos pra usar.

sam d20 ARM Cortex

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.

siliconlabs ARM Cortex

Resumo

comparativo cortex m0+ ARM Cortex

 

 

Referências

http://www.arm.com/files/pdf/Cortex-M0_Plus_Intro.pdf

http://en.wikipedia.org/wiki/Dhrystone

http://infocenter.arm.com/help/topic/com.arm.doc.ddi0432c/DDI0432C_cortex_m0_r0p0_trm.pdf

http://www.freescale.com/webapp/sps/site/taxonomy.jsp?code=KINETIS_L_SERIES

http://www.freescale.com/webapp/sps/site/taxonomy.jsp?code=KINETIS_E_SERIES

http://www.freescale.com/webapp/sps/site/taxonomy.jsp?code=KINETIS_M_SERIES

 http://www.atmel.com/tools/ATSAMD20-XPRO.aspx

http://www.atmel.com/Images/Atmel-42129-SAM-D20_Datasheet.pdf

http://www.nxp.com/products/microcontrollers/cortex_m0_m0/series/LPC800.html#products

http://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

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Thiago Lima
Sou formado em Engenharia Elétrica na USP Sao Carlos, com mestrado em Engenharia Elétrica no Rochester Institute of Technology pelo CsF. Tenho 17 anos de experiência em projetos de circuitos eletrônicos. Escrevo regularmente para o Embarcados, adoro eventos sobre tecnologia, onde posso rever amigos e conhecer pessoas do ramo.

6
Deixe um comentário

avatar
 
5 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
5 Comment authors
Matheus Leitzke PintoMario WilsonMatheus QuickThiago LimaMarcelo Barros de almeida Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Matheus Quick
Visitante
Matheus Quick

Muito bom, cortex m0+ é muito bom e não é atoa que está sendo usado por várias empresas.

Marcelo Barros de almeida
Visitante
Marcelo Barros
Thiago Lima
Visitante

Obrigado Prof., Marcelo! Vou corrigir o texto.

Matheus Leitzke Pinto
Visitante
Matheus

Só para deixar registrado, usando o cortex m0+ em projetos com RTOS percebi que ele não foi feito pra esse tipo de projeto. O núcleo mão permite desabilitar uma classe de interrupções acima de certa prioridade e dessa forma, interrupções criticas podem não ser atendidas. Mas, para aplicações baremetal cai como uma luva!

trackback

[…] acesso em um ciclo a todos os IOs e pipeline de dois estágios, conforme pode ser conferido nesse artigo publicado por Thiago Lima há algumas semanas atrás, no caso do menor encapsulamento, o […]

Mario Wilson
Visitante
Mario Wilson

Otimo artigo! Senti falta dos custo de cada familia de microcontrolador para fazer uma comparação com os micros de 8 e 16 bits. Estou passando por esse dilema em um projeto!