O PICkit2 no Linux não é compatível oficialmente, mas seu uso é essencial para processo de automação para otimizar o desenvolvimento de projetos e produtos usando PIC.
1. Materiais Necessários
- Computador Linux (Será usado um Raspberry Pi 4 pare esse processo);
- Gravador PICkit 2;
- Microcontrolador PIC (ex. PIC12F683 ou outro modelo compatível).
2. PICkit2 no Linux: Instalação do software
A Microchip não oferece suporte oficial ao PICkit2 para o Linux, porém existem ferramentas alternativas como é o pk2cmd que é o que iremos usar. Como não é fornecido diretamente, temos que baixar de um repositório do GitHub, mas antes disso é necessário fazer algumas instalações adicionais para evitar problemas.
2.1 Atualizar o Sistema e Instalar Dependências
Primeiro, atualize o sistema e instale as ferramentas necessárias para compilar o pk2cmd:
sudo apt-get update
sudo apt-get install build-essential libusb-dev
Esses pacotes incluem as bibliotecas e ferramentas essenciais para compilar o software e comunicar-se via USB, sem ele o pk2cmd não irá funcionar.
2.2 Baixar e Compilar o pk2cmd
Agora, clone o repositório com o código do pk2cmd e compile-o no seu Linux:
git clone https://github.com/psmay/pk2cmd
Após fazer o download do repositório, é necessário acessar o diretório pk2cmd/pk2cmd e em seguida fazer a compilação dos códigos, para isso faça os seguintes comandos:
cd pk2cmd/pk2cmd
make linux
2.3 Verificar a Instalação
Após a compilação, verifique se de fato o pk2cmd foi instalado corretamente com o seguinte comando:
./pk2cmd -?V
Esse comando exibirá a versão do pk2cmd, confirmando que a ferramenta foi compilada corretamente e está pronta para uso.
3. Apagar memória do PIC
Em alguns caso possa ser que seja necessário fazer o erase da memória do microcontrolador PIC, então para isso basta executar o seguinte comando:
sudo ./pk2cmd -PPIC12F683 -E
4. Gravando o Firmware no PIC
Se tudo deu certo até aqui, então já podemos fazer uma gravação de firmware usando o pk2cmd, mas antes separe um arquivo .hex do seu microcontrolador desejado, conecte ao microcontrolador e o gravador a USB do Linux.
4.1 Comando de Gravação
O comando para gravar o firmware no microcontrolador é bastante simples. Aqui está um exemplo de como gravar um arquivo .hex no microcontrolador PIC12F683:
sudo ./pk2cmd -PPIC12F683 -F/home/pi/pic/test.hex -M -R

4.1.1 Explicação dos parâmetros:
-P: Especifica o modelo do PIC (Se não especificar ele faz a detecção automática, mas demora mais para gravar).-F: Especifica o caminho completo do arquivo .hex (o firmware que será gravado no PIC).-M: Realiza a programação da memória do PIC.-R: Reinicia o PIC automaticamente após a gravação.
Substitua o caminho /home/pi/pic/test.hex pelo caminho onde o arquivo .hex está localizado no seu Linux.
4.2 Problemas comuns que podem acontecer
Durante o processo de gravação no microcontrolador pode ocorrer vários problemas, mas os principais problemas são relacionados a falhas na conexão ou conexão invertida.
4.2.1 Program Memory Errors
Esse problema pode ocorrer principalmente quando se tem problemas de conexões físicas ou então modelo de PIC incompatíveis.

O erro acima só ocorre quando o microcontrolador é definido no comando, mas quando é deixado para definição automática o erro retornado é: Auto-Detect: No known part found.
4.2.2 Conexão invertida do GND e VCC
Pode ser que ao colocar o gravador no microcontrolador, é comum acabar invertendo acidentalmente os pinos e isso pode causar um curto em que o gravador entra em proteção, nesse processo o LED vermelho do gravador pode piscar intervalado indicando que está tentando se conectar e está falhando. No final o erro retornado é igual o da imagem.

Se o problema persistir, pode haver um problema físico com o microcontrolador ou com as conexões.
4.3 Falha para configurar o modo de gravação via botão
No Windows o PICKit2 tem uma opção no qual é possível habilitar o botão do gravador para que ao clicar o gravador gravava o ultimo firmware carregado, porém no Linux isso não funciona, o PK2DeviceFile.dat é responsável por fazer esse processo, porém ele não funciona, você pode testar usando esse código:
sudo ./pk2cmd -PPIC12F683 -F/home/pi/pic/test.hex -B/home/pi/pk2cmd/pk2cmd/PK2DeviceFile.dat -M -R
