Ferramentas open-source para pic

Em 17/06/2010, em Ferramentas, por sergioprado
Vamos ver neste post algu­mas fer­ra­men­tas open-source para tra­bal­har com desen­volvi­mento em lin­guagem C para micro­con­tro­ladores PIC.
Com­par­tilhe!
  • Twitter
  • Facebook
  • LinkedIn
  • del.icio.us
  • Digg
  • email
  • PDF
  • Print

Minha paixão pela comu­nidade open-source é recente. Foi de alguns anos para cá que come­cei a entrar e enten­der este uni­verso, cheio de gente com­pe­tente, cria­tiva e dis­posta a con­tribuir. Estas pes­soas não bus­cam rec­om­pen­sas finan­ceiras, mas sim con­hec­i­mento e troca de exper­iên­cias. É muito mais fácil con­struir um castelo quando cada um esta dis­posto a aju­dar com um tijolo. E esta é a filosofia que sigo quando penso em con­tribuir com meu pequeno tijolo aqui no blog.

E se você pensa em entrar para a área de sis­temas embar­ca­dos, ou se apro­fun­dar nela, não pre­cisa gas­tar 1 cen­tavo. A comu­nidade open-source está aí para te aju­dar. Você quer apren­der ou se apro­fun­dar em micro­con­tro­ladores PIC? Basta um PC, e você terá com­pi­ladores e ambi­entes de desen­volvi­mento com­ple­tos, debug­gers e sim­u­ladores, todos open-source. De des­culpa pra apren­der aqui, só sobra a preguiça. 

Quem quiser con­hecer mais sobre a filosofia open-source pode começar lendo o artigo da Wikipedia aqui.

Vamos ver então algu­mas fer­ra­men­tas open-source para desen­volvi­mento de sofware em C para micro­con­tro­ladores PIC. Vou ape­nas apre­sen­tar as fer­ra­men­tas, o processo de insta­lação e con­fig­u­ração vocês podem ver­i­ficar dire­ta­mente no link da página da fer­ra­menta.

Com­pi­lador C

Para o com­pi­lador C, usare­mos o SDCC. O SDCC é um com­pi­lador ANSI-C otimizado para micro­con­tro­ladores de pequeno porte, como 8051, Z80 e 68HC08. Segundo a página do pro­jeto, o suporte a PIC está em anda­mento (“Work in progress”), mas todas as vezes que usei fun­cio­nou per­feita­mente. Ele está disponivel sob a licensa GPL para Win­dows, Linux e Mac.

Ele é ape­nas um com­pi­lador C, e vai ape­nas trans­for­mar seus arquivos “.c” em arquivos “.asm”. Então ele pre­cisa do assem­bler e do linker para gerar o binário da sua apli­cação.

Assem­bler e Linker

Para o assem­bler e o linker usare­mos a fer­ra­menta GPUTILS. Esta fer­ra­menta é voltada exclu­si­va­mente para micro­con­tro­ladores PIC, e além do assem­bler (gpasm) e do linker (gplink), tam­bém fornece uma fer­ra­menta para criar bib­liote­cas (gplib).

Esta fer­ra­menta tam­bém está disponivel através da licensa GPL para Linux, Win­dows e Mac.

IDE — Ambi­ente de Desen­volvi­mento

Para alguns, escol­her um ambi­ente inte­grado de desen­volvi­mento (IDE) é quase a mesma coisa que escol­her uma religião, e o defen­dem como tal. Para mim, é ape­nas uma forma de ser mais pro­du­tivo no seu ambi­ente de tra­balho. Por­tanto, escolha uma fer­ra­menta que se adapte mel­hor à você. Exis­tem muitas fer­ra­men­tas disponíveis, alguma especí­fi­cas para PIC, den­tre elas:

  • PiKdev, com­pa­tivel com assem­bly para todos os PICs e lin­guagem C ape­nas para a série PIC18.
  • Pik­lab, é mais com­pleto, bem pare­cido com o MPLAB, e total­mente inte­grado com SDCC e GPUTILS.
  • Eclipse, ambi­ente mais genérico, mas pode ser exten­dido através de plu­g­ins. Par­tic­u­lar­mente acho ainda um pouco lento e com­plexo para con­fig­u­rar e tra­bal­har com pro­je­tos. Mas uma vez con­fig­u­rado pode se tornar um ambi­ente de desen­volvi­mento alta­mente produtivo.
  • Kde­velop, ambi­ente com visual bem limpo e fácil de usar. É mais gener­ico, mas para desen­volver em C está ótimo. É o que estou usando atual­mente.

Gravadores

Se você tem um gravador PIC, exis­tem algu­mas fer­ra­men­tas open-source como o PICProg, com­pa­tivel com os micro­con­tro­ladores da série PIC12/16/18.

Sim­u­ladores

Um ótimo sim­u­lador open-source para PIC é o GPSIM. Tam­bém disponi­bi­lizado sob a licensa GPL, pos­sui tudo o que um decente sim­u­lador pre­cisa ter (break­points, exe­cução passo-a-passo, dis­as­sem­bler, etc; e suporta até in-circuit emu­la­tor). Tem ver­sões para Win­dows e Linux.

Inte­grando tudo

Vamos desen­volver aqui um pro­jeto bem sim­ples para exem­pli­ficar o uso de todas estas fer­ra­men­tas.

Primeiro, nosso codigo-fonte em C, cujo único obje­tivo é acen­der um led lig­ado 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 pre­cisar de um arquivo Make­file para com­pi­lar, inte­grando o uso das fer­ra­men­tas 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 Make­file que usamos a fer­ra­menta “sdcc” para com­pi­lar o “.c” e gerar o “.asm”, depois usamos o “gpasm” para con­verter 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 sim­u­lar sua apli­cação, com o comando abaixo:

gpsim –pp18f452 –L. teste.hex

Exem­plo de uma tela do GPSIM:




Muito bem, agora é com você! Aprenda, troque exper­iên­cias e aproveite o que a comu­nidade open-source têm para lhe ofer­e­cer. E depois, a mel­hor forma de agrade­cer é deixar tam­bém sua con­tribuição para a comu­nidade!

Um abraço,

Ser­gio Prado

VN:F [1.9.0_1079]
Rat­ing: 0.0/10 (0 votes cast)
Com­par­tilhe!
  • Twitter
  • Facebook
  • LinkedIn
  • del.icio.us
  • Digg
  • email
  • PDF
  • Print

Posts rela­ciona­dos:

  1. Open Source Hardware
  2. Nova fer­ra­menta para debug de con­sumo de energia
  3. Análise estática de código
Tags:  

17 Respostas para “Ferramentas open-source para pic”

  1. Marcelo Marcelo disse:

      Olá Sér­gio, blz?
      Seguinte… dig­amos que vc tenha o ICD2 ou qquer outra fer­ra­menta da microchip pra pro­gra­mar e debugar… sabe se é pos­sível  debugar passo a passo? Aliás, isso é algo que eu sem­pre tive dúvi­das no open source, pois só usei sdk pro­pri­etários e aí vc com­pila, grava em modo debug e sai exe­cu­tando.
      Como fun­ciona isso no open source?

  2. Tiago Tiago disse:

    Olá Sér­gio
    Sug­estão: O MPLAB já traz um com­pi­lador Assem­bly e um Linker tam­bém e ambos são gra­tu­itos.
    Por­tanto é mais uma alternativa

  3. sergioprado sergioprado disse:

    Olá Tiago,

    É ver­dade. Nunca testei a inte­gração destes caras com o SDCC, mas acred­ito que deva fun­cionar sem problemas.

    Um abraço!

  4. Sér­gio, bom dia. Primeiro gostaria de lhe dar os parabéns, não só por esta matéria, mas por todas as out­ras que venho lendo no seu blog com certa fre­quên­cia. Gostaria de saber se exis­tem fer­ra­men­tas gra­tu­itas como estas para o desen­volvi­mento em código C de micro­con­tro­ladores 8051. Outra coisa que me deixa pensativo…como gravo infor­mações numa memória E2PROM?? Ou seja, quais os coman­dos em C para os micro­con­tro­ladores 8051, para esta tarefa? Des­culpe se as per­gun­tas são bási­cas, mas come­cei estas pesquisas, menos de uma sem­ana. Grande abraço e con­tinue este exce­lente tra­balho. Arlei

  5. […] This post was men­tioned on Twit­ter by Lor­rene Car­olline, Ser­gio Prado. Ser­gio Prado said: #blogsprado: Fer­ra­men­tas open-source para PIC http://goo.gl/fbvQ […]

  6. sergioprado sergioprado disse:

    Olá Arlei,

    O SDCC que apre­sen­tei neste post é um ótimo com­pi­lador 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 hard­ware. Se a inter­face for ser­ial, você pode pre­cisar de um bar­ra­mento SPI ou I2C, e imple­men­tar um dri­ver para inter­facear seu dis­pos­i­tivo. Se a caso con­trário, você pode até pre­cisar de um hard­ware a parte para pro­gra­mar sua E2PROM.

    Um abraço!

  7. sergioprado sergioprado disse:

    Olá Marcelo, tudo bem?

    É pos­sível debugar passo-a-passo com o MPLAB ICD2 sem prob­le­mas. Com relação à soft­ware open-source, o ambi­ente de desen­volvi­mento Pik­lab (http://piklab.sourceforge.net/), que citei neste artigo, suporta inclu­sive gravação e debug­ging via ICD2. Se você tiver a opor­tu­nidade de tes­tar, deixe suas exper­iên­cias por aqui.

    Um abraço!

  8. Léo... Léo... disse:

    boa ser­jão!!!
    ja colo­quei seu blog nos favoritos! pre­cisamos de bas­tante apoio nessa área qnd se trata de open source!

    []‘s
    Léo…

  9. Valdemiro Valdemiro disse:

    Como eu con­fig­uro “cre­ate Make target”?

  10. sergioprado sergioprado disse:

    Olá Valdemiro,

    À qual IDE você se refere?

    Um abraço!

  11. Valdemiro Valdemiro disse:

    Eu estou usando o eclipse

  12. chico chico disse:

    favoritei sua página tem­po­rari­a­mente. mas pode ser eterno, depen­dendo da resposta pois vou me envolver no mundo open source tbém
    tam­bém quero saber como con­figura o eclipse. vou insta­lar ainda.
    grato

  13. sergioprado sergioprado disse:

    Olá Chico,

    Ainda não tra­bal­hei com PIC no Eclipse. Exis­tem alguns bons tuto­ri­ais 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!

  14. chico chico disse:

    grato colega! agora posso tirar seu blog dos meus favoritos. rs tô brin­cando. vou ten­tar insta­lar e se con­seguir, caso queiramos/possamos (eu e você), uso seu espaço para pub­licar o cam­inho das pedras (no win­dows, sorry)
    abç

  15. sergioprado sergioprado disse:

    Olá Chico,

    Ótima idéia! Me avise se você desco­brir o cam­inho das pedras.

    Abraços!

  16. chico chico disse:

    venho através desta infor­mar que desisti (tem­po­rari­a­mente) de usar o eclipse. ao invés dele, preferi, após algu­mas pesquisas, usar o mplab mesmo o qual já uso há alguns anos. veja um tuto­r­ial em:
    https://sites.google.com/site/rmaalmeida/extra/usandoocompiladorsdccnomplab
    caso alguém tente usar e não con­siga, tem alguns detal­hes não descritos que estou a dis­posição para infor­mar. descobri-os com alguma exper­iên­cia pois não os encon­trei na net (ainda). Caso alguem con­siga usar como está descrito, gen­tileza me avisar através desta via pra que cor­rija min­has 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. Gen­tileza me cor­ri­gir mostrando algum (não achado ainda) exem­plo de pro­jeto com­pleto sdcc/mplab

    Mudando de assunto mas man­tendo no assunto, gostaria tam­bém de reg­is­trar minha sat­is­fação com as fer­ra­men­tas free avrstu­dio e winavr pois com elas um código de pro­grama (fun­cional) ficou menor (pasme!) do que seu “con­cor­rente” IAR que custa uma mini for­tuna. Foi um pro­grama para um ATTINY26.
    Sem mais para o momento, devo man­ter seu blog nos meus favoritos e even­tual­mente visitá-lo para troca de infor­mações e claro parabenizá-lo pelo blog/trabalho. Ah, o email não existe, mas se insi­s­tir, posto um de ver­dade.
    abç

     

  17. sergioprado sergioprado disse:

    Olá Chico,

    Com­bi­nado. Colo­quei na minha lista de próx­i­mos posts um estudo sobre a dupla Eclipse + PIC.

    Um abraço!

Deixe um comentário