‪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
Website | Veja + conteúdo

Raul Rosetto Muñoz é graduado em Engenharia Elétrica pela Universidade São Francisco. Desde 2008, tem trabalhando na área de sistemas embarcados. No começo da sua carreira trabalhou com desenvolvimento de software para microcontroladores. Nos últimos 8 anos, tem focado no desenvolvimento e customização de Linux embarcado. Atualmente é engenheiro de aplicação e vendas na empresa Toradex Brasil, empresa global com matriz na Suíça qual desenvolve computadores em módulo de alta performance.

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