CMSIS
Prof. Marcelo Barros de Almeida
Prof. Márcio José da Cunha
COBEC-SEB 2017
Roteiro
● Apresentação sobre CMSIS (Cortex
Microcontroller Software Interface Standard).
● Componentes de RTOS e DSP.
CMSIS
●
Segundo site Embarcados: *
“É notável que nos últimos anos, ocorreu um crescimento significativo da
eletrônica embarcada e sua popularidade. Novas arquiteturas surgiram,
outras foram atualizadas, mas o que pode ser observado é a quantidade de
microcontroladores disponíveis para novos projetos. Uma das arquiteturas
que mais cresceu e que faz parte dos projetos são os microcontroladores
com núcleo ARM da família Cortex M”
● Problemas encontrados:
– Tempo de desenvolvimento
– Defeitos (falhas) em produtos
– Em alguns cenários, a interoperabilidade de vários componentes se
torna crítica
– Portabilidade
* (fonte: https://www.embarcados.com.br/compilando-cmsis-dsplib-para-cortex-m4)
CMSIS
● Fornecer para os desenvolvedores uma infraestrutura de software consistente para
soluções para Cortex-M
● CMSIS é considerado com um backbone para o desenvolvimento de aplicações para
dispositivos que utilizam Cortex-M
● CMSIS é definido em coperação com vários fornecedores de silício e software, visando
uma abordagem comum para interface para periféricos, sistemas operacionais em
tempo real e componentes de middleware
CMSIS
● Benefícios:
– O CMSIS reduz a curva de aprendizado, os custos de desenvolvimento e o tempo de projeção do produto no
mercado
– Os desenvolvedores podem escrever os seus softwares de forma rápida, através de uma variedade de
interfaces de softwares padronizadas e fáceis de se utilizar
– Possui uma interface de software consistente, melhorando a portabilidade e a reutilização de software. Isso é
feito por meio da utilização de bibliotecas e interfaces genéricas
– Provê uma interface para depuração, depuração de periféricos, entrega de software e suporte a dispositivos, o
que reduz o tempo de projeção no mercado para a implantação de novos microcontroladores
CMSIS
● Benefícios:
– Fornece uma camada independente do compilador, o que permite a utilização de
compiladores diferentes. O CMSIS é suportado por compiladores convencionais
– Auxilia de forma significativa na depuração do programa, fornecendo informações
periféricas para os depuradores e canais ITM, além de informações referentes do kernel
do RTOS
CMSIS
● Regras de codificação
– Possui conformidade com ANSI C e C++
– Utiliza o tipo de dados definidos no padrão ANSI C (<stdint.h>)
– Está em conformidade com a MISRA 2012
– Letras maiúsculas identificam CORE Registers, Peripheral Registers e instruções da
CPU
– Comentários seguem os moldes dos comentários feitos em C/C++
● Validação
– Os vários componentes do CMSIS da versão 5 são validados utilizando compiladores
tradicionais (mdk-arm, gcc, ewarm)
– Os componentes CMSIS são compatíveis com as últimas versões do padrão da
linguagem C
– Os códigos fonte do CMSIS são certificados para MISRA C:2012
● Licença
– O CMSIS é fornecido gratuitamente pela ARM sob licença Apache 2.0
CMSIS
● Componentes
– CMSIS-Core (Cortex-M): API para processadores Cortex-M e periféricos.
Esse componente provê uma interface padrão para Cortex-M0, Cortex-M0+,
Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M23, Cortex-M33, SC000 e SC300
– CMSIS-Core (Cortex-A): API e sistema de tempo de execução básico para
processadores Cortex-A5, A7, A9 e periféricos
– CMSIS-Driver: Esse componente define interfaces de driver genéricas
utilizadas pelo o middleware, podendo ser utilizado por outros dispositivos
suportados. Essa API é independente do RTOS e conecta os periféricos do
microcontrolador com o middleware, que é responsável por implementar as
funções, como por exemplo, pilhas de comunicação, sistemas de arquivos,
interfaces gráficas com usuários, dentre outras
– CMSIS-DSP: Possui mais de 60 funções para vários tipos de dados: pontos
fixos, ponto flutuante com precisão simples (32 bits). Esta biblioteca está
disponível para todos os núcleos Cortex-M, e possui um conjunto de
instruções SIMD otimizadas para Cortex-M4, Cortex-M7 e Cortex-M33
CMSIS
● Componentes
– CMSIS-RTOS v1: API para sistemas operacionais em tempo real,
incluindo a implementação de referências baseadas em RTX.
Essa API fornece uma interface de programação padronizada
portátil para vários RTOS, permitindo que seus componentes
funcionem em vários sistemas RTOS.
– CMSIS-RTOS v2: Essa API é uma extensão do RTOS v1 com
suporte para arquitetura ARMv8-M, permite a criação de objetos
dinâmicos, sistemas multi-core
CMSIS-RTOS
● É uma interface genérica para RTOS focados em ARM Cortex M
● Fornece uma API padronizada para componentes de software que
trabalham com funcionalidades RTOS, provendo diversos benefícios
para usuários finais
● Características Opcionais:
– Suporte para sistemas multi processados
– Suporte para controlador DMA
– Mudança de contexto determinística
● É possível escolher o seu RTOS,
por exemplo:
– RTX (keil)
– FreeRTOS (STM32Cube)
CMSIS-DSP
● Essa biblioteca de software possui um conjunto de funções comuns de
processamento de sinal para uso em dispositivos baseados em Cortex-M
● Essa biblioteca possui as seguintes categorias:
– Funções básicas de matemáticas
● Vector Absolute Value, Vector Addition, Vector Multiplication
– Funções matemáticas de alto desempenho
● Raiz quadrada, cosseno, seno
– Funções matemáticas complexas
● Conjugado complexo, multiplicação entre partes complexas de
números complexos, multiplicação entre partes complexas e reais
de números complexos
– Filtros
● Convolução, FIR, Filtros normalizados, convolução parcial
CMSIS-DSP
● Essa biblioteca de software possui um conjunto de funções comuns de
processamento de sinal para uso em dispositivos baseados em Cortex-M
● Essa biblioteca possui as seguintes categorias
– Funções para matrizes
● Adição de matriz, inicialização, multiplicação, inversas
– Transformadas
● FFT, FFT complexa
– Funções de controle
● PID
– Funções estatísticas
● Máximo, mínimo, média, potência
– Funções de interpolação
● Interpolação linear, interpolação bilinear
CMSIS-DSP
● Exemplo
– Cálculos matriciais
http://www.keil.com/pack/doc/CMSIS/DSP/html/index.html

[6/9] Sistemas embarcados de alto desempenho para tratamento e processamento de sinais biomédicos - Plataformas ARM Cortex M e CMSIS-DSP

  • 1.
    CMSIS Prof. Marcelo Barrosde Almeida Prof. Márcio José da Cunha COBEC-SEB 2017
  • 2.
    Roteiro ● Apresentação sobreCMSIS (Cortex Microcontroller Software Interface Standard). ● Componentes de RTOS e DSP.
  • 3.
    CMSIS ● Segundo site Embarcados:* “É notável que nos últimos anos, ocorreu um crescimento significativo da eletrônica embarcada e sua popularidade. Novas arquiteturas surgiram, outras foram atualizadas, mas o que pode ser observado é a quantidade de microcontroladores disponíveis para novos projetos. Uma das arquiteturas que mais cresceu e que faz parte dos projetos são os microcontroladores com núcleo ARM da família Cortex M” ● Problemas encontrados: – Tempo de desenvolvimento – Defeitos (falhas) em produtos – Em alguns cenários, a interoperabilidade de vários componentes se torna crítica – Portabilidade * (fonte: https://www.embarcados.com.br/compilando-cmsis-dsplib-para-cortex-m4)
  • 4.
    CMSIS ● Fornecer paraos desenvolvedores uma infraestrutura de software consistente para soluções para Cortex-M ● CMSIS é considerado com um backbone para o desenvolvimento de aplicações para dispositivos que utilizam Cortex-M ● CMSIS é definido em coperação com vários fornecedores de silício e software, visando uma abordagem comum para interface para periféricos, sistemas operacionais em tempo real e componentes de middleware
  • 5.
    CMSIS ● Benefícios: – OCMSIS reduz a curva de aprendizado, os custos de desenvolvimento e o tempo de projeção do produto no mercado – Os desenvolvedores podem escrever os seus softwares de forma rápida, através de uma variedade de interfaces de softwares padronizadas e fáceis de se utilizar – Possui uma interface de software consistente, melhorando a portabilidade e a reutilização de software. Isso é feito por meio da utilização de bibliotecas e interfaces genéricas – Provê uma interface para depuração, depuração de periféricos, entrega de software e suporte a dispositivos, o que reduz o tempo de projeção no mercado para a implantação de novos microcontroladores
  • 6.
    CMSIS ● Benefícios: – Forneceuma camada independente do compilador, o que permite a utilização de compiladores diferentes. O CMSIS é suportado por compiladores convencionais – Auxilia de forma significativa na depuração do programa, fornecendo informações periféricas para os depuradores e canais ITM, além de informações referentes do kernel do RTOS
  • 7.
    CMSIS ● Regras decodificação – Possui conformidade com ANSI C e C++ – Utiliza o tipo de dados definidos no padrão ANSI C (<stdint.h>) – Está em conformidade com a MISRA 2012 – Letras maiúsculas identificam CORE Registers, Peripheral Registers e instruções da CPU – Comentários seguem os moldes dos comentários feitos em C/C++ ● Validação – Os vários componentes do CMSIS da versão 5 são validados utilizando compiladores tradicionais (mdk-arm, gcc, ewarm) – Os componentes CMSIS são compatíveis com as últimas versões do padrão da linguagem C – Os códigos fonte do CMSIS são certificados para MISRA C:2012 ● Licença – O CMSIS é fornecido gratuitamente pela ARM sob licença Apache 2.0
  • 8.
    CMSIS ● Componentes – CMSIS-Core(Cortex-M): API para processadores Cortex-M e periféricos. Esse componente provê uma interface padrão para Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M23, Cortex-M33, SC000 e SC300 – CMSIS-Core (Cortex-A): API e sistema de tempo de execução básico para processadores Cortex-A5, A7, A9 e periféricos – CMSIS-Driver: Esse componente define interfaces de driver genéricas utilizadas pelo o middleware, podendo ser utilizado por outros dispositivos suportados. Essa API é independente do RTOS e conecta os periféricos do microcontrolador com o middleware, que é responsável por implementar as funções, como por exemplo, pilhas de comunicação, sistemas de arquivos, interfaces gráficas com usuários, dentre outras – CMSIS-DSP: Possui mais de 60 funções para vários tipos de dados: pontos fixos, ponto flutuante com precisão simples (32 bits). Esta biblioteca está disponível para todos os núcleos Cortex-M, e possui um conjunto de instruções SIMD otimizadas para Cortex-M4, Cortex-M7 e Cortex-M33
  • 9.
    CMSIS ● Componentes – CMSIS-RTOSv1: API para sistemas operacionais em tempo real, incluindo a implementação de referências baseadas em RTX. Essa API fornece uma interface de programação padronizada portátil para vários RTOS, permitindo que seus componentes funcionem em vários sistemas RTOS. – CMSIS-RTOS v2: Essa API é uma extensão do RTOS v1 com suporte para arquitetura ARMv8-M, permite a criação de objetos dinâmicos, sistemas multi-core
  • 10.
    CMSIS-RTOS ● É umainterface genérica para RTOS focados em ARM Cortex M ● Fornece uma API padronizada para componentes de software que trabalham com funcionalidades RTOS, provendo diversos benefícios para usuários finais ● Características Opcionais: – Suporte para sistemas multi processados – Suporte para controlador DMA – Mudança de contexto determinística ● É possível escolher o seu RTOS, por exemplo: – RTX (keil) – FreeRTOS (STM32Cube)
  • 11.
    CMSIS-DSP ● Essa bibliotecade software possui um conjunto de funções comuns de processamento de sinal para uso em dispositivos baseados em Cortex-M ● Essa biblioteca possui as seguintes categorias: – Funções básicas de matemáticas ● Vector Absolute Value, Vector Addition, Vector Multiplication – Funções matemáticas de alto desempenho ● Raiz quadrada, cosseno, seno – Funções matemáticas complexas ● Conjugado complexo, multiplicação entre partes complexas de números complexos, multiplicação entre partes complexas e reais de números complexos – Filtros ● Convolução, FIR, Filtros normalizados, convolução parcial
  • 12.
    CMSIS-DSP ● Essa bibliotecade software possui um conjunto de funções comuns de processamento de sinal para uso em dispositivos baseados em Cortex-M ● Essa biblioteca possui as seguintes categorias – Funções para matrizes ● Adição de matriz, inicialização, multiplicação, inversas – Transformadas ● FFT, FFT complexa – Funções de controle ● PID – Funções estatísticas ● Máximo, mínimo, média, potência – Funções de interpolação ● Interpolação linear, interpolação bilinear
  • 13.
    CMSIS-DSP ● Exemplo – Cálculosmatriciais http://www.keil.com/pack/doc/CMSIS/DSP/html/index.html