Sistemas embarcados começam a ser muito explorados em aplicações biomédicas e tendem a se expandir cada vez mais. Podemos citar, por exemplo, sistemas de controle de próteses de membros artificiais, controles de cadeiras de rodas inteligentes, tecnologias assistivas baseadas em exoesqueletos etc. Assim, o uso de dispositivos embarcados para coleta, tratamento e processamento de sinais em tempo real tem recebido cada vez mais atenção de empresas e laboratórios de pesquisa em todo mundo. Neste workshop focaremos nossa atenção nos dispositivos fabricados pela empresa ARM Holdings plc, em especial na linha de controladores Cortex M4 e M7. Além dos dispositivos, a ARM também disponibiliza um grande conjunto de funções para processamento de sinais, especificamente desenvolvida para uso otimizado do processador Cortex. Funções matemáticas básicas, transformadas, filtros digitais, funções estatísticas e de interpolação são parte desse conjunto conhecido como CMSIS-DSP (Cortex Microcontroller Software Interface Standard - Digital Signal Processing). Nesse workshop, será apresentado o CMSIS-DSP através de exemplos aplicados ao processamento de sinais biomédicos, evidenciado a sua forma de uso e vantagens. Os participantes deverão implementar pequenos sistemas de processamento em tempo real em kits contendo os controladores Cortex M.
ESTUDO DE PERFORMANCE DAS ARQUITETURAS RISC E CISC. UM BREVE HISTÓRICO DA EVO...Daniel Caixeta
Ähnlich wie [6/9] Sistemas embarcados de alto desempenho para tratamento e processamento de sinais biomédicos - Plataformas ARM Cortex M e CMSIS-DSP (20)
2. Roteiro
● Apresentação sobre CMSIS (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 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
5. 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
6. 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
7. 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
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-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
10. 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)
11. 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
12. 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