I recently bought a PICkit 2 clone (the ICA03) from PICCircuit.com. Programming it has been something of a challenge, mostly because Microchip no longer really supports Linux programming of PIC chips.
First, I needed to get pk2cmd. There are lots of pointers to Microchip’s website, but all of them go to 404s. What I ended up using is a github repo: https://github.com/psmay/pk2cmd. After reading the threatening license agreement, I cloned the repo and built it with make then sudo make install.
git clone https://github.com/psmay/pk2cmd
cd pk2cmd/pk2cmd
make linux
sudo make install
Even after installing PK2DeviceFile.dat in /usr/share and including /usr/share/pk2 on the path (ugh) per the instructions, I still wasn’t able to use it from anywhere except the directory I built it from. At some point I’ll need to look into that.
I plugged the PIC into the ZIF socket with the marking near the top, and made sure the selection switch was on 28-40.
Next, I took my .hex file and stuffed it in ~/pk2cmd/pk2cmd/. Then:
~/pk2cmd/pk2cmd$ sudo pk2cmd -P
Auto-Detect: Found part PIC16F886.
Yay! Let’s try writing the file:
~/pk2cmd/pk2cmd$ sudo ./pk2cmd -PPIC16F886 \
-f my_hex_file.hex -MPC -Y
(I didn’t include IE on the -M switch because I think my hex file has ID and EEPROM memory in it. -Y does the verification.)
PICkit 2 Program Report
8-1-2020, 23:12:12
Device Type: PIC16F886
Program Succeeded.
PICkit 2 Verify Report
8-1-2020, 23:12:12
Device Type: PIC16F886
Verify Succeeded.
Operation Succeeded
Yay!