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.

  • Rafael Dias

    uai!
    cade os comentarios que estavam aqui?

  • Walter Roncada

    Ola' Fernando,
    Segui o seu tutorial e sou capaz de rodar o blinky.bin no meu Tiva TM4C123G. Voce poderia me dar umas dicas de como compilar e carregar no TM4C123G assim como fez com o MSP430 ? Ou e' o caso de compilar com gcc e carregar com lm4flash? Obrigado. Walter

    • http://desconstruindo.eng.br Fernando França

      Tudo bem Walter? Você está correto, é realmente compilar com o GCC e subir para a placa com o lm4flash. Agora que o curso - Embedded Systems Shape The World terminou darei continuidade nesse tutorial integrando essas ferramentas do toolchain com o IDE, no caso o Eclipse, para que esse processo de compilação e carga seja o menos penoso possível. Precisei fazer o curso todo utilizando Windows por conta das DLLs que o professor utilizava para dar as notas, mas meu objetivo é ter um ambiente todo integrado no Linux.

      • Walter Roncada

        Oi Fernando. Pois e', eu me matriculei no mesmo curso mas desisti entre outras razoes porque nao tenho Windows e nao soube como fazer para rodar no debian. De qualquer forma vou retomar as aulas no arquivo e seguir por minha conta ja' que nao vou precisar das notas. Vou seguir acompanhando seu blog e ver como segue seu trabalho de integracao no Linux. Obrigado pelo bom trabalho que fez ate' agora e se eu puder ajudar em algo, ou testar, me da' um toque.

        • http://desconstruindo.eng.br Fernando França

          Logo no início do curso eu já estava me movimentando pra fazer todo no Linux mas de fato seria no mínimo muito trabalhoso pra não dizer impossível. O professor Valvano desenvolveu uma DLL chamada Texas que faz integração do Keil com o sistema do edX para dar as notas tanto nas simulações quanto na própria placa.

          Como eu queria muito fazer esse curso, acabei instalando via QEmu o Windows 10 pra rodar todo ambiente, sorte que eu tinha uma licença educacional da minha Universidade.

          Assim que eu defender meu projeto final vou meter a mão nisso, e certamente publicaremos aqui no embarcados.com.br, será muito legal se você puder ajudar.

          Esse trabalho de setup de ambiente de desenvolvimento não é simples por conta do nível de integração entre as diversas ferramentas, isso faz com que as pessoas precisem optar pelo que está mais disponível, que são geralmente as ferramentas dos próprios fabricantes que na maioria é pra Windows.

          Como eu sou teimoso, me recuso a acreditar que pra cada plataforma que desenvolvo preciso ter um ambiente completo, eis minha motivação pra tentar integrar em um IDE como o Eclipse, partindo somente dos toolchains.

  • http://desconstruindo.eng.br Fernando França

    Fabio, aconteceu uma situação interessante comigo nessa questão da libusb que queria dividir com vocês: há muito tempo atrás eu instalei o MPLab X da Microchip no meu computador. Ele é baseado no Netbeans IDE se entendi bem e sem eu saber, sobrescreveu minha libusb (sensacional). O fato é que muito tempo depois comecei a ter problemas com ferramentas que utilizam a libusb como o lm4flash e descobri que era esse o motivo. Reinstalei a lib, observei se os links simbólicos estavam ok e tudo voltou a normalidade. Fica a dica para quem por acaso tem ou já teve o MPLab X rodando no seu Linux, foi um presente de grego pra mim.