Desenvolvimento embarcado no Debian Linux com LaunchPad Tiva C Series e MSP430

Aproveitando a oportunidade com o início das aulas do curso Embedded Systems - Shape the World na plataforma edX.org, ministrado pelos professores Jonathan Valvano e Ramesh Yerraballi da University of Texas at Austin, este tutorial tem por objetivo oferecer aos interessados alternativas para configuração do ambiente de desenvolvimento, como o uso de Debian Linux com LaunchPad Tiva C TM4C123G e MSP430, ambas da Texas Instruments.

 

Figura 1 - Logo da plataforma LaunchPad
Figura 1 - Logo da plataforma LaunchPad

 

Os kits de desenvolvimento LaunchPad são ótimas alternativas de baixo custo para estudo e desenvolvimento de projetos, sendo o kit TM4C123G baseado no microcontrolador ARM Cortex-M4F e o MSP-EXP430G2 baseado no microcontrolador MSP430, de baixo consumo de energia.

 

LaunchPad TM4C123G - Debian Linux com LaunchPad Tiva C
Figura 2 - LaunchPad TM4C123G

 

O curso Embedded Systems - Shape the World utiliza tanto o kit TM4C123G quanto o LM4F120 e o objetivo inicial desse tutorial era permitir que os alunos interessados utilizassem plenamente a plataforma Linux no seu decorrer. Entretanto, para que os alunos recebam suas notas, é necessária instalação de uma biblioteca (DLL) desenvolvida pelo professor Valvano - Texas, que integra com a ferramenta de desenvolvimento Keil uVision.

 

Essa DLL avalia os exercícios de simulação e laboratório, devolvendo uma string com a nota do aluno para aquele exercício que será posteriormente colocada na plataforma edX.org. Para mais informações acesse aqui.

 

Apesar disso alguns usuários possuem como plataforma de desenvolvimento sistemas Linux, e a busca por ferramentas alternativas bem como compatibilidade com hardware é constante. Alguns fabricantes oferecem suporte parcial para suas plataformas e tecnologias e poucos deles dão suporte completo. No site da Texas Instruments é possível constatar que o MSP430, por exemplo, não tem suporte para Linux através do seu IDE Code Composer Studio.

 

LaunchPad MSP-EXP430G2
Figura 3 - LaunchPad MSP-EXP430G2

 

Então basicamente os usuários Linux têm duas opções: ficar tristes por não usar o sistema operacional de sua escolha ou ir à luta. Felizmente a comunidade de usuários e desenvolvedores está aí para ajudar e muitas vezes pode ser surpreendente todo suporte que já existe desenvolvido pela comunidade de software livre.

 

Para trabalhar com essas plataformas de desenvolvimento, necessitamos basicamente de um editor de textos, compilador, ferramenta de depuração (debug) e uma ferramenta para gravação dos programas. Esse conjunto de softwares é conhecido como toolchain.

 

Figura 4 - Logo GCC
Figura 4 - Logo GCC

 

O editor de textos é definitivamente a parte mais fácil, podendo ser do mais simples Vi até ambientes de desenvolvimento integrados (IDEs) que, como diz o nome, integram diversas ferramentas, inclusive para simulação. O Keil uVision e o Code Composer Studio são dois exemplos destas ferramentas.

 

Tomando como base o sistema Debian Linux na sua versão 8 (codinome Jessie), e salientando que muito provavelmente outras distribuições baseadas em Debian como Ubuntu e Linux Mint seguem uma linha semelhante, vamos configurar um ambiente básico de desenvolvimento com compilador, depurador e ferramenta para gravação do código nas plataformas LaunchPad Tiva C TM4C123G e MSP430. Toda instalação se baseia nos softwares disponíveis no repositório do Debian Linux e é necessária permissão de root ou sudo.

 

 

Suporte para a plataforma LaunchPad TM4C123G

 

Para o LaunchPad TM4C123G, vamos instalar os seguintes pacotes (e suas respectivas dependências):

 

 

Para que o usuário tenha permissão de acesso aos dispositivos é necessário que esteja em alguns grupos do sistema. Também é necessário efetuar login no sistema novamente para que reflita a mudança nos grupos:

 

 

Após a instalação dos pacotes é possível então plugar o TM4C123G na porta USB e verificar o reconhecimento no sistema:

 

 

Um retorno parecido com este é esperado:

 

 

Verificamos que o sistema reconheceu o LaunchPad e o dispositivo está disponivel em /dev/ttyACM0. De outra forma, podemos verificar também:

 

 

Veja que a permissão de acesso ao dispositivo /dev/ttyACM0 é para o usuário root e grupo dialout, motivo pelo qual incluímos o usuário neste grupo.

 

Entretanto ainda não é possível acessar o dispositivo como usuário comum sem antes escrevermos uma regra específica para o udev, do contrário teremos um erro na biblioteca libusb:

 

 

Interessante que depois dessa configuração o sistema seja reiniciado para termos certeza de que as regras do udev foram recarregadas, e será possível testar o dispositivo.

 

O teste consiste em baixar um dos exemplos disponíveis na biblioteca da Texas Instruments, disponível aqui. O download é gratuito mas é necessário se registrar antes.

 

Feito download, basta descompactar o arquivo .exe (visto que é um zip na verdade), entrar no diretório raiz criado e executar:

 

 

Vamos então acessar o diretório examples/boards/ek-tm4c123gxl/blinky/sourcerygxx, onde se encontra o arquivo blinky.bin, um programa já compilado (e como aprendizado podemos espiar o código fonte na mesma pasta). Podemos então enviar o programa para a placa através do comando:

 

 

O retorno do lm4flash será algo como:

 

 

Feito isso, a placa deve rapidamente reiniciar a executar o programa que pisca seu LED. Um possível erro será a seguinte mensagem:

 

 

É justamente o problema que tratamos com a criação da regra udev no arquivo /etc/udev/rules.d/99-stellaris-launchpad.rules. Para ter certeza, podemos verificar executando o lm4flash como root:

 

 

Se funcionar, verifique se seu conteúdo do arquivo 99-stellaris-launchpad.rules está correto e reinicie o sistema.

 

 

Suporte para a plataforma MSP430

 

Agora que temos a plataforma TM4C123G funcionando, vamos configurar o suporte para a plataforma MSP430. Começamos novamente pela instalação dos pacotes necessários e suas dependências através do apt:

 

 

Vamos em seguida adicionar o usuário do sistema nos grupos necessários, não esquecendo de fazer logout e login depois:

 

 

Agora podemos plugar a placa na porta USB e verificar o log do sistema:

 

 

Onde devemos ter uma saída semelhante:

 

 

Novamente o sistema reconheceu o LaunchPad e o dispositivo está disponivel em /dev/ttyACM0. Podemos verificar também:

 

 

Dessa vez a permissão de acesso ao dispositivo /dev/ttyACM0 é para o usuário root e grupo plugdev. Não teremos problemas desde que nosso usuário já esteja neste grupo.

 

Vamos testar a placa através da ferramenta mspdebug. Se tudo correu bem deverá funcionar como usuário normal:

 

 

Sendo o retorno esperado algo como:

 

 

Estando nosso ambiente todo instalado e funcional, vamos agora testar compilando um código simples e subindo para o MSP430. Digitando no nosso editor de textos favoritos:

 

 

Após salvar o arquivo como blink.c, podemos compilar:

 

 

Compilado, vamos programar a placa utilizando o mspdebug. Para carregar o programa usamos os comandos prog blink.elf e run:

 

 

Com isso conseguimos subir e executar nosso código no MSP430. Para sair do mspdebug basta pressionar CTRL+D.

 

 

Conclusão

 

O objetivo desse tutorial foi viabilizar um ambiente mínimo de desenvolvimento para as plataformas LaunchPad Tiva C TM4C123G e MSP430 da Texas Instruments no sistema operacional Debian Linux, com compilador, depurador e ferramenta de gravação.

 

Existem diversas ferramentas disponíveis, algumas com suporte parcial ao Linux e poucas com suporte total, e quando trabalhamos com várias plataformas de desenvolvimento, é interessante contar com esse suporte a partir do próprio repositório de programas do sistema operacional. Nesse caso, a árvore de pacotes do Debian Jessie.

 

A partir de uma configuração mínima como a apresentada, é possível utilizar por exemplo um ambiente de desenvolvimento integrado (IDE) como o Eclipse, mapeando o compilador, linker, depurador e ferramenta de gravação dentro do IDE, centralizando seu ambiente de desenvolvimento.

 

Todas as marcas e produtos citados são propriedade dos seus respectivos responsáveis.