‪Multicores‬ ‎assimétricos‬ no desenvolvimento de sistemas embarcados – Parte 5 – Projeto Final

Multicore Communication library Multicores assimétricos prática Firmware M4

Comunicação entre cores com a Multicore Communication library

Vamos iniciar os exemplos que estabelecem a comunicação entre núcleos. Conforme fizemos nos exemplos anteriores, o Núcleo A5 comandou o LED1 e Botão1 e o M4 comandou o LED2 e Botão2. Nesse exemplo vamos fazer o Botão1 (A5) enviar uma mensagem para o Led2 (M4) e o Botão2 (M4) enviar uma mensagem para o Led1 (A5).

O Fluxograma a seguir ilustra bem esse exemplo:

multicore-1 Multicore Communication library
Figura 1: Fluxograma apresentando a lógica dos programas

MultiCore Communication Library

Para utilizar a biblioteca mcc, é importante entender as funções básicas para estabelecer essa comunicação. Um resumo das funções dessa API é:

  • Inicialização/Informação
    • mcc_initialize (Inicializa MCC para um determinado NODE)
    • mcc_destroy (Destroi MCC para determinado NODE)
    • mcc_get_info (Retorna informações sobre o MCC)
  • Gerenciamento de EndPoint
    • mcc_create_endpoint (Cria um endpoint)
    • mcc_destroy_endpoint (Destroi um endpoint)
  • Comunicação
    • mcc_send (Envia menssagem para determinado endpoint)
    • mcc_receive_copy/mcc_receive_nocopy (Recebe menssagem de um endpoint)
    • mcc_msgs_available (Retorna a quantidade de menssagens na fila do endpoint)
    • mcc_free_buffer (Limpa o buffer da última menssagem da função mcc_receive_nocopy)

No exemplo desse projeto, só usaremos as funções em negrito. A figura abaixo ilustra como é estabelecida e organizada a comunicação:

multicore-2 Multicore Communication library
Figura 2: Funcionamento da MCC

Nesse exemplo, vamos usar o Projeto “MCC_A5” e “MCC_M4” para implementar a troca de mensagens. Abra os projetos com botão direito em cima do projeto e “Open Project”.

Compile, copie para a placa e execute primeiro o código correspondente ao M4:

Compilando o Firmware para o M4

Compile o projeto MCC_M4 conforme o menu:

Project > Clean…

Project > Build All

Feito isso, o binario “MCC_M4.bin” será gerado.

Executando o Firmware para o M4

Para executar o firmware, copie o arquivo binario para a placa usando SSH:

Acesse o terminal da placa, suba o modulo mcc e em seguida lance a aplicação:

Compilando o projeto para o Core A5

Conforme o exemplo anterior, compile usando o menu:

Project > Clean…

Project > Build All

Realizando o Debug do Core A5

Uma vez compilado o projeto, é importante atualizar a arvore do projeto para que o Eclipse encontre o arquivo Binário. Clique com o botão direito no projeto e selecione:

Refresh

Para realizar o Debug, acesse o menu:

Run > Debug Configuration

multicore-3 Multicore Communication library
Figura 3: Configuration Menu

Depurando a comunicação MCC. Para entender melhor a comunicação entre os dois núcleos, coloque um breakpoint no código em:

multicore-4 Multicore Communication library
Figura 4: Breakpoint

Sendo assim, ao pressionar o botão2 a mensagem será enviada pelo M4 e o A5 receberá nessa linha.

Outros artigos da série

<< Multicores assimétricos no desenvolvimento de sistemas embarcados – Parte 4: Prática
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

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

Comentários:
Notificações
Notificar
guest
0 Comentários
Inline Feedbacks
View all comments
Talvez você goste:

Séries



Outros da Série

Menu