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.
2. Instrutores
Prof. Dr. Marcelo Barros
Formado em 1996 pela UNIFEI Itajubá, sempre
atuando na área de desenvolvimento de sistemas
embarcados.
Mestre e doutor pela UFMG.
Atualmente professor na UFU (+3a)
marcelo.barros@ufu.br
(34) 98846-8116
3. Instrutores
Prof. Dr. Márcio José da Cunha
Formado em 2000 pela UNIP Ribeirão Preto.
Mestre e doutor pela USP/SC.
Professor da FEELT, Controle e automação.
mjcunha@ufu.br
5. Agenda
DuraçãoDuração DescriçãoDescrição
50m
Introdução aos processadores Cortex M e microcontrolador
STM32F7
20m Ecossistema de desenvolvimento da ST Eletronics
30m Hands On: Hello World
20m CMSIS e os componentes RTOS e DSP
30m Coffe break
15m Casos de uso com CMSIS DSP
55m Uso avançado do STM32F7 (DMA, ADC, DAC, Timers)
50m Hands on: Amostragem e processamento de sinais
7. 7
Modelo de Negócio da ARM
● A ARM não fabrica chips, somente núcleos de
processadores para licenciamento.
● Outras empresam crias sistemas personalizados
usando esses núcleos.
9. 9
Profiles ARM Cortex
Cada tipo de núcleo tem um foco específico (profile):
● Cortex A:
– Processador de aplicação, usado em aplicações com display, rede intensa,
elevado processamento. Beaglebone, RPi, Cube, Toradex, smartphones,
tablets, relógios inteligentes, roteadores, servidores…
● Cortex R:
– Foco em aplicações de hard real time, como modems para telefonia, HDD,
SSD. Sendo empregado em modens 5G, por exemplo, e áreas críticas com
redundância (automotiva, aviônica). Suporte a virtualização.
●
Cortex M:
– Aplicações microcontroladas, menos restritivas no quesito real time. Custo
efetivo. Boa parte dos fabricantes do mercado de microcontroladores usam
Cortex M hoje em dia.
● SecureCore:
– Aplicações microcontroladas mas com requisitos de segurança com tamper
detection, ID único, modos de segurança, etc. Smartcards, modems, IoT,
aparelhos fiscais, etc.
11. Diagrama de Blocos de um
Cortex M7
Referência: Apresentação da ARM, “ARM Cortex M7 – Bringing high performance to the Cortex-M processor series
12. Características do
Cortex M7
● Arquitetura ARMv7E-M (RISC)
● 32 bits de endereçamento (4GB)
● Barramento do tipo Harvard
● Cache de instruções e dados
● Ponto flutuante de dupla precisão
● Divisão e multiplicação por hardware
● Instruções de DSP
● Pipeline de 6 estágios e predição de salto
● Unidade de proteção de memória
13. Características do
Cortex M7
● NVIC (Nested Vectored Interrupt Controller), com até 240
requisições de interrupção e uma NMI
● Latência fixa de atendimento de interrupções:
– 12 ciclos (sem ponto flutuante)
– 29 ciclos (com ponto flutuante)
– 6 ciclos (quando já interrompido)
● Acesso a bit (áreas de região de memória “bit band”)
● Suporte a O.S. (systick, SP sombreado, PendSV, SVC,
thread mode x handler mode)
● Reuso de código via CMSIS (Cortex Microcontroller
Software Interface Standard)
15. Conjunto de Instruções do
Cortex M7
Referência: Apresentação da ARM, “ARM Cortex M7 – Bringing high performance to the Cortex-M processor series
16. 16
ARM Cortex M
Comparativo Qualitativo
M0 M0+ M3 M4 M7
Família ARMv6-M ARMv6-M ARMv7-M ARMv7-M ARMv7E-M
Preço ■ ■ ■■■ ■■■■ ■■■■■
Conjunto de
Instruções
■ ■ ■■ ■■■■ ■■■■■
Debug ■ ■ ■■■■ ■■■■ ■■■■■
Tratamento de
Interrupções
■ ■ ■■■ ■■■■ ■■■■■
Desempenho ■ ■ ■■■ ■■■ ■■■■■
Suporte a
RTOS
□ ■ ■■■■ ■■■■ ■■■■
Ponto
Flutuante
□ □ □ ■■■ ■■■■■
DSP ○ ○ ○ ● ●●
DMIPS/MHz 0,84 0,93 1,25 1,25 2,14
17. Modos de Operação e Estados
● Nem todas as instruções/registros estão
disponíveis em modo não privilegiado (NVIC,
por exemplo)
● Kernel mode x User mode
21. NVIC (Nested Vectored
Interrupt Controller)● Até 240 entradas de interrupção
● Non-Maskable Interrupt (NMI*)
● Até 16 exceções do processador
● A quantidade de níveis e de interrupções é determinada pelo integrador mas a forma de tratamento é
igual (256 níveis, no máximo, até 128 níveis de preempção). Números mais baixo indicam
interrupções mais prioritárias.
● Exceção x Interrupção x Falha:
– Exceção: evento que altera o fluxo de programa, retornando depois do tratamento
– Uma interrupção é uma exceção (geralmente associado a periférico)
– Falha é uma exceção também (associada ao processador)
* Finalmente !
25. Suporte a Sistema Operacional
● Recursos disponíveis para Sistemas Operacionais de
Tempo Real (RTOS)
– Kernel mode x User mode
● Níveis privilegiados e não privilegiados de acesso
● Stack pointers separados (MSP x PSP)
– SysTick: um temporizador (geralmente de 1ms), usado
como base de tempo para o RTOS
– SVC (Supervisor Call): uma forma de fazer uma chamada
de serviços do sistema (system call), geralmente imediata
– PendSV (Pendable Service Call): outra forma de realizar
uma chamada, mas com baixa prioridade
– Instruções de acesso exclusivo (mutex)