Multicores assimétricos no desenvolvimento de sistemas embarcados – Parte 4: Prática

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

Dando sequência à série de artigos que visa auxiliar no desenvolvimento de produtos que façam uso de multicores assimétricos, baseado no computador em módulo Colibri VF61 (Freescale® Vybrid), este capítulo oferece uma parte prática de tudo que foi discutido nos três artigos anteriores.

Iniciando

Para realizar o curso, disponibilizamos em sua mesa o seguinte material:

  1. Computador em módulo Colibri VF61;
  2. Placa Base Iris;
  3. Placa Acessório (3 botões/3 Leds);
  4. Cabo Serial + Adaptador DB9 p/ header X13;
  5. Fonte 12v + Adaptador para ligar na placa;
  6. Cartão SD com imagem do Linux;
  7. Cabo de Rede.

Conectando o módulo na placa base

Para inserir o módulo da família colibri, é necessário inserir o módulo na diagonal no conector SODIMM. Lembre-se que esse conector é compatível entre todos os módulos da Família.

Conexão dos cabos

Conecte o cabo serial conforme a figura abaixo no conector X13 e conecte a placa de testes que contém botões e LEDs que serão utilizados nas práticas.

Multicores assimétricos - Conexão serial na placa IRIS e do acessório com botões e LEDs
Figura 1 – Conexão serial na placa IRIS e do acessório com botões e LEDs

Conecte também o cabo de rede na Ethernet da placa e no computador. Agora no terminal, da máquina Linux, abra o “picocom” na serial correta:

Energize a placa para ver o Linux realizar boot.

Multicores assimétricos - Boot do Linux
Figura 2 – Boot do Linux

Ao terminar, entre com o usuário e senha:

Alterando IP da placa

Alguns comandos podem ser executados para interagir um pouco com a placa. Para trocar o IP por exemplo, execute a seguinte sequência (por favor não altere o mesmo pois está configurado corretamente para a conexão no Eclipse nas práticas que estão na sequência, o IP deve ser 192.168.10.2):

Trabalhando com GPIO

Para piscar um led, execute os seguintes comandos:

Exemplo 1 – BlinkLed A5

O primeiro exemplo que vamos executar irá apenas piscar o LED1. Esse exemplo tem como objetivo mostrar a integração do Eclipse com o Linux do A5. Ele já deve estar no seu Eclipse na árvore de projetos.

Na sua máquina virtual, abra o projeto “BlinkLed”. Note que o projeto foi configurado conforme os capítulos anteriores.

Multicores assimétricos: firmware-m4-projeto-blink-led
Figura 3 – Projeto Blink Led

Arquivos do projeto

A apiSysClass foi criada para exportar e acessar as GPIOs através do sistema de arquivo do Linux, “/sys/class/gpio”. O arquivo principal, BlinkLed.c utilizando as chamadas para apiSysClass irá, exportar, configurar e Ligar/Desligar o LED1 a cada 500ms.

BlinkLed.c

Compilando para ARM

Na árvore do projeto, existem duas pastas: ARM e DEBUG. Essas pastas contêm os arquivos compilados para as arquiteturas ARM e x86 respectivamente.

Para compilar o projeto para ARM, é necessário certificar-se que o mesmo está configurado para ARM. Aperte botão direito no projeto e selecione: Build Configurations > Set Active > ARM.

Ao selecionar essa configuração o binário será gerado na pasta ARM. Agora podemos compilar os exemplos usando o comando CTRL + B. Ou por meio do menu:

Realizando Debug

Uma vez compilado o projeto, é importante atualizar a árvore 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:

multicores-assimetricos-pratica-debug
Figura 4 – Configuração do debug

Em seguida clique no botão Debug. Caso a janela de Login na placa apareça, clique em OK para prosseguir. Pode ocorrer também uma solicitação para gerar as chaves de Criptografia, neste caso selecione “Yes”. Nesse momento, uma mensagem solicitando a troca de perspectiva irá aparecer. Ao aceitar, a perspectiva irá trocar para Debug. No menu superior do Eclipse, os botões de debug devem estar habilitados:

multicores-assimetricos-pratica-botoes-eclipse
Figura 5 – Botões do Eclipse

Esses botões, respectivamente, tem a seguinte função:

  1. Resume (Executa a aplicação);
  2. Suspend (Para a aplicação);
  3. Terminate (Cancela);
  4. Disconnect (Desconecta do Target);
  5. Step Into (Entra em uma determinada função);
  6. Step Over (Proxima Linha);
  7. Step Return (Sai da função).

Após os testes para a aplicação através do botão Terminate.

Trocando de Perspectiva

Para voltar a perspectiva anterior, no canto superior direito do Eclipse, selecione o botão C/C++.

multicores-assimetricos-pratica-seleção-de-perspectiva-no-eclipse
Figura 6 – Seleção de perspectiva no Eclipse

Utilize o mesmo menu para voltar a perspectiva Debug.

Finalizando Prática 1

Para fechar o projeto, aperto botão direito no projeto e “Close Project”.

Exemplo 2 – BlinkLed M4

Esse exemplo irá fazer a mesma coisa do exemplo 1 porém comandado pelo M4. Note que nesse exemplo vamos acessar o LED2 e não será possível realizar Debug desse core.

multicores-assimetricos-pratica-estrutura-projeto
Figura 7 – Estrutura de projeto Blink LED M4

Na sua máquina virtual, abra o projeto “BlinkLed_M4”. Note que o projeto foi configurado conforme os capítulos anteriores.

Arquivos do projeto

O arquivo principal, “BlinkLed_M4.c” acessa uma série de API encontradas na pasta build-tree para configurar e Ligar/Desligar o LED2 a cada 500ms.

BlinkLed_M4.c

BlinkLed_M4.h

Compilando o Firmware para o M4

O projeto já está configurado para compilar utilizando o arquivo makefile. O makefile acessa a toolchain já instalada e gera o arquivo binário final conforme os capítulos anteriores. Compile o projeto conforme o menu:

Feito isso, o binário “BlinkLed_M4.bin” será gerado.

Executando o Firmware para o M4

Para executar o firmware, copie o arquivo binário para a placa usando SSH:

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

Nesse ponto, será possível ver o LED2 Piscando.

Finalizando Prática 2

Para fechar o projeto, aperto botão direito no projeto e “Close Project”.

Exemplo 3 – ReadSwitch A5

Nesse exemplo, vamos usar o Projeto BlinkLed para implementar a leitura de um botão. Abra o projeto BlinkLed com botão direito em cima do projeto e “Open Project”.

Altere o Código

Vamos alterar o Código C dele para fazermos a seguinte lógica:

  • Ler Botão 1, Se pressionado Ligar Led1. Caso contrário, Desligar LED1.

No Final, seu arquivo BlinkLed.c deve ficar assim:

BlinkLed.c

Compile

Conforme o exemplo anterior, compile usando o menu:

Debug

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

Para realizar o Debug, acesse o menu:

multicores-assimetricos-pratica-run-configuration
Figura 8 – Run Configuration

Em seguida clique no botão Debug.

Exemplo 4 – ReadSwitch M4

Nesse exemplo, vamos usar o Projeto BlinkLed_M4 para implementar a leitura de um botão. Abra o projeto BlinkLed_M4 com botão direito em cima do projeto e “Open Project”.

Altere o Código

Vamos alterar o código C do projeto para mesma lógica do exemplo anterior, porem usando o LED2 e Botão2:

  • Ler Botão 2, Se pressionado Ligar Led2. Caso contrário, Desligar LED2.

No Final, seu arquivo BlinkLed_M4.c deve ficar assim, não esqueça de salvar após executar as alterações:

BlinkLed_M4.c

Compilando o Firmware para o M4

O projeto já está configurado para compilar utilizando o arquivo makefile. O makefile acessa a toolchain já instalada e gera o arquivo binário final conforme os capítulos anteriores.

Compile o projeto conforme o menu:

Feito isso, o binário “BlinkLed_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:

Nesse ponto, será possivel ver o LED2 Piscando.

Finalizando Prática 4

Para fechar o projeto, aperto botão direito no projeto e “Close Project”.

Outros artigos da série

<< Multicores assimétricos no desenvolvimento de sistemas embarcados – Parte 3: Firmware M4‪Multicores‬ ‎assimétricos‬ no desenvolvimento de sistemas embarcados – Parte 5 – Projeto Final >>
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
1 Comentário
recentes
antigos mais votados
Inline Feedbacks
View all comments
Guilherme Pigato Paes
Guilherme
06/06/2020 17:03

Boa tarde
Pode disponibilizar os códigos exemplos?

Talvez você goste:

Séries



Outros da Série

Menu