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