Usando o compilador SDCC no MPLAB

Post date: 14/08/2010 13:48:01

A pouca alternativa de bons compiladores open-source de C para PIC é porque a linguagem C não se dá muito bem com a arquitetura Harvard. Mesmo assim o projeto Small Devices C Compiler está muito bom. Possui suporte a maioria dos processadores (sim, podemos usar o mesmo compilador para mais de uma arquitetura).

Para o PIC o desenvolvimento está descrito como incompleto. Apesar disto estou surpreso com a capacidade do mesmo e até o momento não tive nenhum problema (principalmente para o uso acadêmico).

Ele possui versões para linux e windows. No curso que estou ministrando estou usando-o no windows em conjunto com a IDE do MPLAB. Mas a instalação e configuração não é trivial. Seguem os passos para instalar o SDCC no MPLAB para compilar programas para a famíla PIC 18F. (Não testei com a família 16F, se alguem tiver um micro disponível e testar me avise para atualizar este artigo).

Programas:

Será utilizado o MPLAB 8.50 (testei também no 8.0 e no 8.53). O compilador é o SDCC versão 2.9.0. O SDCC utiliza o GPUtils como ferramenta de linker e assembler para a arquitetura PIC. Utilizaremos a versão 0.13.9 do GPUtils. Os links para downloads de todos os programas está em unifei -> downloads -> ELT025. Existe também um plugin que configura o MPLAB, mas como ele é de 2007 algumas aterações precisam ser feitas. (Obs: se alguem souber como montar os plugins me avisa pra fazermos uma versão 2.0 dele)

Durante a instalação anote os diretórios onde foram instalados o MPLAB, SDCC e o GPUtils, vamos precisar de alterar alterar alguns arquivos.

Entre no diretório do MPLAB C:\Arquivos de Programas\Microchip\MPLAB IDE\Core\MCT Suites\ e abra o arquivo gplink.mct. Copie todo o conteúdo. Abra agora o arquivo sdcclink.mct, apague o conteúdo e cole o conteúdo que você copiou do gplink.mct. Grave.

Abra agora o arquivo pic16devices.txt dentro do diretório do SDCC (padrão: C:\Arquivos de Programas\SDCC\include\pic16). De preferência use o wordpad, o notepad não lida muito bem com as quebras de linha. Como o nome do processador é passado via linha de comando existe um problema: o MPLAB usa os nomes dos microprocessadores com as letras em maiúsculo (18F4550) e o sdcc reconhece apenas em minúsculo (18f4550). Por isso precisamos trocar todas as letras do arquivo pic16devices.txt para maiúsculo. Para facilitar basta ir em Editar->Substituir e trocar "18f" por "18F". Após isso salve o arquivo.

Como último passo temos que configurar as ferramentas dentro do MPLAB. Abra o programa e vá ao menu "Project->Set Language Tool Location". Será apresentada a tela abaixo:

Para a família PIC18 utilizaremos o SDCC16.

O arquivo gpasm e o gplink estão no subdiretório \bin dentro do GPUtils (padrão: C:\Arquivo de Programas\gputils\bin).

Na opção sdcc16 utilizaremos o arquivo sdcc.exe que está no subdiretório \bin dentro do SDCC (padrão: (padrão: C:\Arquivos de Programas\SDCC\bin).

Pronto. O MPLAB agora possui um compilador em linguagem C open source funcional! Aos poucos coloco alguns artigos sobre as nuâncias do compilador SDCC e alguns exemplos de código.

Abraços!