Expert - firmware - Multi core
Neste laboratório, iremos desenvolver uma aplicação que utiliza os dois núcleos de processamento da Raspberry Pi Pico.
Laboratório
Trabalharemos com o modelo de execução multicore, no qual cada core da Pico será responsável por uma parte específica do sistema. A comunicação entre os núcleos será realizada por meio da FIFO de sincronização disponibilizada pelo hardware.
A proposta é expandir o LAB-3-pra, distribuindo as responsabilidades da seguinte forma:
Core 0:
- Leitura da UART
- Implementação do protocolo de comunicação com o PC
Core 1:
- Leitura do sensor ultrassônico HC-SR04
Conforme ilustrado no diagrama abaixo:

FIFOs
No diagrama, observe que o Core 0 e o Core 1 se comunicam por meio das FIFOs de sincronização. Elas serão utilizadas para:
- Core 0 → Core 1: envio da frequência de leitura do sensor
- Core 1 → Core 0: envio da distância medida
Pensar
Alguns problemas que precisam ser resolvidos:
- Como sinalizar ao
Core 1que a leitura deve ser interrompida (por exemplo, ao receber o comandostop)? - Como o
Core 1deve informar aoCore 0que ocorreu um erro na leitura do sensor?
Lembrem que as FIFOs utilizadas no processador rp2350 são de 32 bits.
Printfs
Devido às características das funções da biblioteca stdio (printf, scanf, etc.), não é possível utilizá-las simultaneamente em diferentes núcleos, pois não são reentrantes.
Por esse motivo, recomenda-se que apenas o Core 0 seja responsável pelas operações de printf e scanf.