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 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:
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:
scp /home/usuario/curso/workspace/MCC_M4/src/MCC_M4.bin root@192.168.10.2:/home/root/
Acesse o terminal da placa, suba o modulo mcc e em seguida lance a aplicação:
modprobe mcc mqxboot /home/root/MCC_M4.bin 0x8f000400 0x0f000411
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
Depurando a comunicação MCC. Para entender melhor a comunicação entre os dois núcleos, coloque um breakpoint no código em:
Sendo assim, ao pressionar o botão2 a mensagem será enviada pelo M4 e o A5 receberá nessa linha.








