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!