Programando PIC em Linux: Ferramentas

Estou montando um ambiente de desenvolvimento para PIC em Linux. Pelo que eu pude constatar, a Microchip não disponibiliza o mesmo número de ferramentas para Linux quanto para Windows, mas ainda assim existe um conjunto de ferramentas livres para o sistema do pinguim:

Compilador - SDCC;
Coleção de utilitários para PIC - gputils;
Gravadora - Hardware para o programador serial compatível com JDM da Olimex. Existem outras opções mais sofisticadas no site da Olimex, mas o design JDM é bem simples e barato. O único inconveniente é que ele usa porta serial real, sendo que os conversores USB/Serial não costumam funcionar.
Gravadora - Software de gravação picprog;
IDE - Piklab.


Link para vários utilitários (gravadora, IDE, etc) - GNUPIC.

Existe também este pequeno tutorial mostrando como programar em C para PIC. Existe também este outro que é mais completo. Na página do Scott Dattalo existe mais ferramentas e dicas para uma utilização mais eficiente do PIC.

Um conjunto básico de ferramentas livres para programar PIC em Linux pode ser formado por SDCC + gputils + picprog.
Contudo, uma IDE que pode ser utilizada é o Piklab. A grande vantagem dessa IDE é que ela faz a integração do compilador e do software de gravação. Sendo assim, vários compiladores podem ser utilizados e é possível utilizar vários tipos de hardwares para gravação. E o melhor: tudo isso em um ambiente integrado, sem a necessidade de se preocupar com Makefile e outros parâmetros de configuração.
Dessa forma, eu recomendo o seguinte ambiente de desenvolvimento: gputils + SDCC + Piklab.


Instalando as ferramentas

- SDCC:

A instalação do SDCC é bem suave. Basta entrar na página do SDCC que se encontra no Sourceforge, baixar o pacote que contém o código-fonte, descompactar em uma pasta temporária e executar a boa e velha seqüência
> ./configure
> make
> make install

Se tudo ocorrer bem o SDCC terá sido instalado. Para conferir, é só executar
> sdcc -v
e a versão do SDCC será impressa na tela.

Para conferir se tudo está indo bem, veja a seção Testing the SDCC Compiler.

Porém, ainda falta conferir se as bibliotecas do PIC estão instaladas. Então com o mesmo teste.c, execute o seguinte comando:

> sdcc -mpic14 -p16f877a teste.c

As diretivas -mpic14 -p16f877a indicam que o código vai ser gerado para o PIC com palavras de 14 bits e o modelo utilizado é o 16F877A. Devem ser mudadas caso o PIC utilizado seja diferente.

Se aparecer o erro libsdcc.lib: No such file or directory significa que as bibliotecas específicas para o PIC não foram instaladas. Felizmente a instalação dessas bibliotecas é bem simples:

> cd $(sdcc_source)/device/lib/pic
> ./configure
> make
> sudo make install
> cd ..
> sudo make install

Ao tentar compilar novamente, é bem provável que ocorra um erro relacionado à inclusão da biblioteca string.h (se o código que está sendo testado for o da seção Testing the SDCC compiler). Até o momento presente o suporte ao PIC pelo sdcc era parcial, sendo que muitas bibliotecas de alto nível não estão disponíveis. Sendo assim, não utilize a biblioteca string.h e a compilação deverá ocorrer normalmente.

- gputils:

A instalação do pacote gputils é igualmente simples. Basta baixar o código-fonte do Sourceforge, descompactar em uma pasta temporária e executar os três comandos mágicos, tal como foi feito na instalação do SDCC.

- Software da gravadora serial (não é necessário se for utilizado o Piklab)

picprog - Software para gravação b
em simples e eficiente que funciona principalmente com hardwares baseados no design JDM. A instalação é igualmente simples:

> make dep
> make
> sudo make install

Para testar o picprog, basta gerar um arquivo .hex no sdcc e tentar gravá-lo no PIC (É necessário ter permissão de acesso à porta serial, ou seja, pertencer ao grupo uucp):

> picprog --burn --input main.hex --pic /dev/ttyS0

Para uma listagem mais completa de comandos, basta verificar a documentação do picprog.

piklab: Instalação análoga às anteriores.








Comentários

Postagens mais visitadas deste blog

Shakey: um dos mais importantes milestones da robótica autônoma

Documentação de código com o Doxygen