Minha paixão pela comunidade open-source é recente. Foi de alguns anos para cá que comecei a entrar e entender este universo, cheio de gente competente, criativa e disposta a contribuir. Estas pessoas não buscam recompensas financeiras, mas sim conhecimento e troca de experiências. É muito mais fácil construir um castelo quando cada um esta disposto a ajudar com um tijolo. E esta é a filosofia que sigo quando penso em contribuir com meu pequeno tijolo aqui no blog.
E se você pensa em entrar para a área de sistemas embarcados, ou se aprofundar nela, não precisa gastar 1 centavo. A comunidade open-source está aí para te ajudar. Você quer aprender ou se aprofundar em microcontroladores PIC? Basta um PC, e você terá compiladores e ambientes de desenvolvimento completos, debuggers e simuladores, todos open-source. De desculpa pra aprender aqui, só sobra a preguiça.
Quem quiser conhecer mais sobre a filosofia open-source pode começar lendo o artigo da Wikipedia aqui.
Vamos ver então algumas ferramentas open-source para desenvolvimento de sofware em C para microcontroladores PIC. Vou apenas apresentar as ferramentas, o processo de instalação e configuração vocês podem verificar diretamente no link da página da ferramenta.
Compilador C
Para o compilador C, usaremos o SDCC. O SDCC é um compilador ANSI-C otimizado para microcontroladores de pequeno porte, como 8051, Z80 e 68HC08. Segundo a página do projeto, o suporte a PIC está em andamento (“Work in progress”), mas todas as vezes que usei funcionou perfeitamente. Ele está disponivel sob a licensa GPL para Windows, Linux e Mac.
Ele é apenas um compilador C, e vai apenas transformar seus arquivos “.c” em arquivos “.asm”. Então ele precisa do assembler e do linker para gerar o binário da sua aplicação.
Assembler e Linker
Para o assembler e o linker usaremos a ferramenta GPUTILS. Esta ferramenta é voltada exclusivamente para microcontroladores PIC, e além do assembler (gpasm) e do linker (gplink), também fornece uma ferramenta para criar bibliotecas (gplib).
Esta ferramenta também está disponivel através da licensa GPL para Linux, Windows e Mac.
IDE — Ambiente de Desenvolvimento
Para alguns, escolher um ambiente integrado de desenvolvimento (IDE) é quase a mesma coisa que escolher uma religião, e o defendem como tal. Para mim, é apenas uma forma de ser mais produtivo no seu ambiente de trabalho. Portanto, escolha uma ferramenta que se adapte melhor à você. Existem muitas ferramentas disponíveis, alguma específicas para PIC, dentre elas:
- PiKdev, compativel com assembly para todos os PICs e linguagem C apenas para a série PIC18.
- Piklab, é mais completo, bem parecido com o MPLAB, e totalmente integrado com SDCC e GPUTILS.
- Eclipse, ambiente mais genérico, mas pode ser extendido através de plugins. Particularmente acho ainda um pouco lento e complexo para configurar e trabalhar com projetos. Mas uma vez configurado pode se tornar um ambiente de desenvolvimento altamente produtivo.
- Kdevelop, ambiente com visual bem limpo e fácil de usar. É mais generico, mas para desenvolver em C está ótimo. É o que estou usando atualmente.
Gravadores
Se você tem um gravador PIC, existem algumas ferramentas open-source como o PICProg, compativel com os microcontroladores da série PIC12/16/18.
Simuladores
Um ótimo simulador open-source para PIC é o GPSIM. Também disponibilizado sob a licensa GPL, possui tudo o que um decente simulador precisa ter (breakpoints, execução passo-a-passo, disassembler, etc; e suporta até in-circuit emulator). Tem versões para Windows e Linux.
Integrando tudo
Vamos desenvolver aqui um projeto bem simples para exemplificar o uso de todas estas ferramentas.
Primeiro, nosso codigo-fonte em C, cujo único objetivo é acender um led ligado ao port B do PIC:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include "pic16/pic18f452.h" /* configuration bits */ code char at __CONFIG1H _conf0 = _OSC_HS_1H; code char at __CONFIG2L _conf1 = _PUT_OFF_2L & _BODEN_OFF_2L; code char at __CONFIG2H _conf2 = _WDT_OFF_2H; code char at __CONFIG3H _conf3 = _CCP2MUX_RC1_3H; code char at __CONFIG4L _conf4 = _LVP_OFF_4L & _STVR_OFF_4L; code char at __CONFIG5L _conf5 = _CP_0_OFF_5L & _CP_1_OFF_5L & _CP_2_OFF_5L & _CP_3_OFF_5L; code char at __CONFIG5H _conf6 = _CPD_OFF_5H & _CPB_OFF_5H; code char at __CONFIG6L _conf7 = _WRT_0_OFF_6L & _WRT_1_OFF_6L & _WRT_2_OFF_6L & _WRT_3_OFF_6L; code char at __CONFIG6H _conf8 = _WRTD_OFF_6H & _WRTB_OFF_6H & _WRTC_OFF_6H; code char at __CONFIG7L _conf9 = _EBTR_0_OFF_7L & _EBTR_1_OFF_7L & _EBTR_2_OFF_7L & _EBTR_3_OFF_7L; code char at __CONFIG7H _conf10 = _EBTRB_OFF_7H; void main( ) { TRISB = 0; PORTB = 0x01; while(1); } |
Vamos precisar de um arquivo Makefile para compilar, integrando o uso das ferramentas SDCC e GPUTILS:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | teste.hex: teste.o gplink \ -c \ -s /usr/share/gputils/lkr/18f452.lkr \ -o $@ \ -m \ $^ \ -I /usr/share/sdcc/lib/pic16 \ libdev18f452.lib teste.o: teste.asm gpasm -c $< crt018.o: crt018.asm gpasm -c $< teste.asm: teste.c sdcc -S -mpic16 -p18f452 $< |
Veja no Makefile que usamos a ferramenta “sdcc” para compilar o “.c” e gerar o “.asm”, depois usamos o “gpasm” para converter o “.asm” em “.o”, para então linkar usando o “gplink” e criar o arquivo binário “.hex”.
Agora, se você tiver um gravador pode gravar usando o PICProg com o comando abaixo:
picprog –erase –burn –input teste.hex –pic /dev/ttyS0
Ou então você pode usar o GPSIM para simular sua aplicação, com o comando abaixo:
gpsim –pp18f452 –L. teste.hex
Exemplo de uma tela do GPSIM:

Muito bem, agora é com você! Aprenda, troque experiências e aproveite o que a comunidade open-source têm para lhe oferecer. E depois, a melhor forma de agradecer é deixar também sua contribuição para a comunidade!
Um abraço,
Sergio Prado
Posts relacionados:

















Olá Sérgio, blz?
Seguinte… digamos que vc tenha o ICD2 ou qquer outra ferramenta da microchip pra programar e debugar… sabe se é possível debugar passo a passo? Aliás, isso é algo que eu sempre tive dúvidas no open source, pois só usei sdk proprietários e aí vc compila, grava em modo debug e sai executando.
Como funciona isso no open source?
Olá Sérgio
Sugestão: O MPLAB já traz um compilador Assembly e um Linker também e ambos são gratuitos.
Portanto é mais uma alternativa
Olá Tiago,
É verdade. Nunca testei a integração destes caras com o SDCC, mas acredito que deva funcionar sem problemas.
Um abraço!
Sérgio, bom dia. Primeiro gostaria de lhe dar os parabéns, não só por esta matéria, mas por todas as outras que venho lendo no seu blog com certa frequência. Gostaria de saber se existem ferramentas gratuitas como estas para o desenvolvimento em código C de microcontroladores 8051. Outra coisa que me deixa pensativo…como gravo informações numa memória E2PROM?? Ou seja, quais os comandos em C para os microcontroladores 8051, para esta tarefa? Desculpe se as perguntas são básicas, mas comecei estas pesquisas, menos de uma semana. Grande abraço e continue este excelente trabalho. Arlei
[…] This post was mentioned on Twitter by Lorrene Carolline, Sergio Prado. Sergio Prado said: #blogsprado: Ferramentas open-source para PIC http://goo.gl/fbvQ […]
Olá Arlei,
O SDCC que apresentei neste post é um ótimo compilador open-source para 8051. Um bom artigo sobre como usá-lo: http://embeddedtutorial.com/2009/12/using-sdcc-open-source-compilerfor-8051-development/.
Já com relação à gravação da E2PROM, depende muito do seu hardware. Se a interface for serial, você pode precisar de um barramento SPI ou I2C, e implementar um driver para interfacear seu dispositivo. Se a caso contrário, você pode até precisar de um hardware a parte para programar sua E2PROM.
Um abraço!
Olá Marcelo, tudo bem?
É possível debugar passo-a-passo com o MPLAB ICD2 sem problemas. Com relação à software open-source, o ambiente de desenvolvimento Piklab (http://piklab.sourceforge.net/), que citei neste artigo, suporta inclusive gravação e debugging via ICD2. Se você tiver a oportunidade de testar, deixe suas experiências por aqui.
Um abraço!
boa serjão!!!
ja coloquei seu blog nos favoritos! precisamos de bastante apoio nessa área qnd se trata de open source!
[]‘s
Léo…
Como eu configuro “create Make target”?
Olá Valdemiro,
À qual IDE você se refere?
Um abraço!
Eu estou usando o eclipse
favoritei sua página temporariamente. mas pode ser eterno, dependendo da resposta pois vou me envolver no mundo open source tbém
também quero saber como configura o eclipse. vou instalar ainda.
grato
Olá Chico,
Ainda não trabalhei com PIC no Eclipse. Existem alguns bons tutoriais disponiveis. Dê uma olhada nestes dois:
http://kr3l.wordpress.com/2008/11/02/using-eclipse-for-pic-development/
http://www.chiefdelphi.com/forums/showthread.php?t=35571
Um abraço!
grato colega! agora posso tirar seu blog dos meus favoritos. rs tô brincando. vou tentar instalar e se conseguir, caso queiramos/possamos (eu e você), uso seu espaço para publicar o caminho das pedras (no windows, sorry)
abç
Olá Chico,
Ótima idéia! Me avise se você descobrir o caminho das pedras.
Abraços!
venho através desta informar que desisti (temporariamente) de usar o eclipse. ao invés dele, preferi, após algumas pesquisas, usar o mplab mesmo o qual já uso há alguns anos. veja um tutorial em:
https://sites.google.com/site/rmaalmeida/extra/usandoocompiladorsdccnomplab
caso alguém tente usar e não consiga, tem alguns detalhes não descritos que estou a disposição para informar. descobri-os com alguma experiência pois não os encontrei na net (ainda). Caso alguem consiga usar como está descrito, gentileza me avisar através desta via pra que corrija minhas opções. Uma delas: tive que tirar a palavra “extern” do arquivo de #include pois o linker não estava achando as definiçoes de PORT´s. Gentileza me corrigir mostrando algum (não achado ainda) exemplo de projeto completo sdcc/mplab
Mudando de assunto mas mantendo no assunto, gostaria também de registrar minha satisfação com as ferramentas free avrstudio e winavr pois com elas um código de programa (funcional) ficou menor (pasme!) do que seu “concorrente” IAR que custa uma mini fortuna. Foi um programa para um ATTINY26.
Sem mais para o momento, devo manter seu blog nos meus favoritos e eventualmente visitá-lo para troca de informações e claro parabenizá-lo pelo blog/trabalho. Ah, o email não existe, mas se insistir, posto um de verdade.
abç
Olá Chico,
Combinado. Coloquei na minha lista de próximos posts um estudo sobre a dupla Eclipse + PIC.
Um abraço!