Intel Galileo – Linux e Arduino IDE

goodbye

Infelizmente a Microsoft anunciou o fim do suporte a Windows na plataforma Intel Galileo em 30 de Novembro de 2015. Minha especialidade não é Windows, mas confesso ter ficado um pouco chocado com a notícia porque claro que houve investimento na plataforma, inclusive a Microsoft me selecionou para escrever a respeito da board de primeira geração enviando-me uma placa “de gratis” e obviamente um monte de gente recebeu também.

Com o abandono da plataforma, resta resgatar a placa com um Linux (o que não é nada mal), mas não é transparente, alguns passos extras serão necessários em se tratando da versão Gen1 da board. Primeiro vamos a uma introdução sobre a placa.

IMG_20151213_103403
Características

A Intel Galileo possui um processador Quark SoC X1000, relativamente novo e sua arquitetura é x86. Isto é, a mesma arquitetura utilizada em computadores desktop e notebooks. Trata-se de um processador de 32-bits rodando à 400MHz e possui 512MB de RAM. Sua área de flash é generosa (8MB para o firmware) e possui uma área de EEPROM também tentadora (11KB). Suporta cartão micro-sd de até 32GB, possui uma interface ethernet 10/100 e porta USB2.0, além de RS232 e uma mini PCI express.

Na placa encontram-se além da interface ethernet e micro-sd, um slot JTAG, pinos para ICSP, um jack TS para comunicação UART, um micro-usb client e um micro-usb host e as outras coisas que não sei o nome vou chamar de ‘etc’.




GPIO

A pinagem é a mesma do Arduino, incluindo 6 entradas analógicas, SPI, I²C, UART e PWM, dando total flexibilidade no desenvolvimento sem reaprendizado.

Com o poder de um sistema operacional, a board se torna um parque de diversões e pode lhe tomar longas horas conforme sua criativadade estiver sendo alimentada pelas possibilidades. A maioria dos sketches para UNO e Leonardo podem ser portados diretamente para o Galileo, e isso é uma das motivações para experimentar uma board dessas, além de que você tem acesso às mais diversas bibliotecas populares do Arduino como EEPROM (que será muito bem vinda nessa board), SD (fundamental também), Ethernet (claro que precisa), WiFi, Wire, SPI, etc. Agora, utilizando um Linux na board, você pode acessá-lo através da chamada system() e ai, meu amigo, estará a um passo da domininação do mundo!

x86 versus ARM

Essa questão polêmica pode gerar muita discussão devido a conceitos envolvidos, inclusive tive um atrito relacionado recentemente. Independente disso, retomo o assunto citando características importantes e às vezes contraditórias.

A plataforma X86 foi criada pela IBM para desktops. A arquitetura X86 tem mais clock e é mais poderosa que ARM se comparando-a desse modo. A diferença fundamental dessas arquiteturas está no set de instruções; ARM é RISC (Reduced Instructions Set Computing) e um X86 até pouco era exclusivamente CISC (Complex Instructions Set Computing).

A plataforma X86 consome mais energia e fim.

Atualizar o firmware do Galileo

Como citei lá no início, a versão GEN1 da Intel Galileo traz a necessidade de uma atualização de firmware antes que possa ser instalado um Linux no micro-sd. Baixe o firmware (32 ou 64 bits, dependendo da arquitetura do seu computador, não da Galileo), descomprima-o e deixe reservado (receita de bolo?). Depois, remova o cartão micro-sd e conecte uma fonte 5v (a do meu Galileo é 1.5A, mas 1A deve ser suficiente), aguarde entre 15 e 20 segundos. Após, conecte um cabo micro-usb na porta usb-client da Intel Galileo e conecte-a ao computador. Entre no diretório que você descomprimiu e execute a IDE do Arduino. TEM que ser essa porque só ela tem a opção de Firmware Update no menu help, apesar de eu ter adicionado suporte ao Galileo na IDE mais nova, o menu help não disponbilizou essa opção. O processo deve levar longos 5 minutos e um aviso será exibido informando a necessidade de alimentação externa e que em hipótese alguma a board deve ser desligada. Ao final (se tudo der certo) uma mensagem será exibida com o status da atualização, nada excepcional.

Linux para Intel Galileo

Baixe o Yocto através desse link. Descomprimi essa imagem e então fiz dd para o cartão que já continha o sistema de arquivos FAT32 (mas que é sobrescrito pelo dd de qualquer modo). A imagem descomprimida tem 1.4GB (!) e deve levar um tempinho até escrever no cartão. Vou passar o procedimento que adotei, mas se você não souber fazer, tiver dúvidas ou não entender qualquer coisa, melhor pedir ajuda pra alguém:

mkfs.vfat -F32 /dev/DEVICE_DO_CARTAO_SD sudo dd if=if=iot-devkit-1.5-i586-galileo of=/dev/DEVICE_DO_CARTAO_SD bs=3M conv=fsync

Isto é, se seu dispositivo DEVICE_DO_CARTAO_SD for sdb, substitua por sdb. Se for mmcblk0, substitua por mmcblk0 e assim por diante.




Fazendo o boot do Linux na Galileo

Ao término do processo dd, retire o cartão sd do computador e coloque-o no Galileo, realimente-o conectado à sua rede e em um minutinho, vasculhe pelo IPs da rede para descobrí-lo. Eu costumo olhar na interface de gerenciamento do roteador os clients conectados, mas excepcionalmente hoje estava com preguiça de levantar e preferi configurar um servidor DHCP no meu notebook escutando na eth0. Só isso no dhcpd.conf:

Depois do boot da Galileo, digite ‘arp’ no console para ver o IP que a board pegou:

A galileo pegou o 10.0.0.10. Como o IP veio do meu servidor, poderia ver nos logs ou no dhcp.leases, mas não importa; isso não é uma aula de Linux. Seguindo.

Agora basta fazer o acesso por ssh no IP que pegou para desfrutar do sistema:

sshGalileo

Se quiser manipular o GPIO pelo Linux, veja esse post sobre a board Carambola. O processo de manipulação do GPIO é o mesmo.

Se você quiser acessar o shell do Linux através da serial, você tem duas opções; uma é digitar os comandos pelo terminal que você conectou via ssh:

e A outra maneira é subir um sketch:

Após isso, você poderá se conectar a 115200 pelo terminal serial, mas não poderá mais subir sketches até que a modificação seja desfeita:

Agora é só brincar com os recursos da board. Falando de Internet das Coisas, o Broker Mosquitto vem por padrão nessa imagem, bastando fazer a configuração, caso deseje utilizá-lo. Se não conhece o MQTT ou se quer saber como fazer uma comunicação entre Broker e client, veja esse post de uma comunicação em Lua e esse para configurar um Broker com Mosquitto.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Próximo post a caminho!




Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Deixe uma resposta