-
Notifications
You must be signed in to change notification settings - Fork 52
Using PICkit3
This document describes how to enable flashing a pic32-wifire from Linux with a PICkit3 using pic32prog.
It will require flashing a specific firmware on the PICkit3. As this can only be done from a Windows computer, that not many Linux users have, the following steps explain how to setup a Windows VirtualBox virtual machine and flash the PICkit3 from it.
Informations come from this comment
https://github.com/RIOT-OS/RIOT/pull/6092#issuecomment-261987955
The steps were run on Ubuntu 16.04
- Install VirtualBox
- Add yourself to the 'vboxusers' group
sudo usermod -a -G vboxusers your_username
- Reboot
You can download a free 90 days valid windows VirtualBox image from:
https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/
This document was tested on a Windows 10 VirtualBox image
- Create a machine in VirtualBox in File-Import Appliance.
- Start the virtual machine and wait until you are on the windows desktop
- Install VirtualBox Guest-additions for USB support
- Shutdown the virtual machine
- Plug the PICkit3 flasher USB to your computer
- In the virtual machine settings, go to USB:
- Select "Enable USB Controller" with "USB 1.1"
- Click the small '+' sign on the right and add the Microchip devices.
- Doc: https://www.virtualbox.org/manual/ch03.html#idm1640
- Start the virtual machine
Download and extract:
- PICkit3-Programmer http://ww1.microchip.com/downloads/en/DeviceDoc/PICkit3%20Programmer%20Application%20v3.10.zip
The steps were adapted from the archive's README:
- Extract
PICkit3 Programmer Application Setup v3.10.zip
- Run
setup.exe
- Run PICkit3
- Tools/Download PICkit Operating System
- Select
c://Program Files/Microchip/PICkit3/PK3OSV020005.hex
- Select
- Device will be flashed with the new firmware
- The GUI status should now say that the board is found
- Close the program (it crashes when closing it but it is ok)
- Turn off your VM
Download and compile pic32prog
flasher
https://github.com/sergev/pic32prog
Run the following command with PICkit3 connected in usb but without the chipKIT-Wi-Fire board connected
$ pic32prog
Programmer for Microchip PIC32 microcontrollers, Version 2.0.221
Copyright: (C) 2011-2015 Serge Vakulenko
Adapter: PICkit3 Version 2.0.5
No device attached.
No target found.
You should see the Adapter: PICkit3 Version 2.0.5
line.
If you do not get the Adapter: PICkit3 Version 2.0.5
line,
try running it with sudo pic32prog
. If it works with sudo
it is a
permission issue.
Add yourself to the plugdev
group, add the following udev
rule to
/etc/udev/rules.d/26-microchip.rules
and reboot.
# Adapted from http://en.microstickplus.com/mplabx-on-linux
ATTR{idVendor}=="04d8", MODE="664", GROUP="plugdev"
- Connect the chipKIT-Wi-Fire to USB
- Connect the PICkit3 to JP1 ICSP holes
- https://docs.creatordev.io/wifire/guides/wifire-programming/
- The triangle
▶
goes into the port number 1 (a hole with a square around it) Opposite side of the JP1 ICSP text.
Run pic32prog again
$ pic32prog
Programmer for Microchip PIC32 microcontrollers, Version 2.0.221
Copyright: (C) 2011-2015 Serge Vakulenko
Adapter: PICkit3 Version 2.0.5
Processor: MZ2048EFG100 (id 1720E053)
Flash memory: 2048 kbytes
Boot memory: 80 kbytes
Configuration:
DEVCFG0 = fff6fff7
3 Debugger disabled
4 JTAG enabled
8 Use PGC2/PGD2
3 Flash ECC disabled, unlocked
DEVCFG1 = 03743cb9
1 System PLL
8 Internal-external switch over enabled
0 Primary oscillator: External
4 CLKO output disabled
DEVCFG2 = fff9b11a
2 PLL divider: 1/3
1 PLL input frequency range: 5-10 MHz
31 PLL feedback divider: x50
1 PLL postscaler: 1/2
4 USB PLL input clock: 24 MHz
8 Enable USB PLL
DEVCFG3 = 86ffffff
2 Default Ethernet pins
USBID pin: controlled by port
Now try flashing the chipKIT-Wi-Fire with RIOT default example compiled for
pic32-wifire with pic32prog path/to/firmware.hex
$ pic32prog bin/pic32-wifire/default.hex
Programmer for Microchip PIC32 microcontrollers, Version 2.0.221
Copyright: (C) 2011-2015 Serge Vakulenko
Adapter: PICkit3 Version 2.0.5
Processor: MZ2048EFG100
Flash memory: 2048 kbytes
Boot memory: 80 kbytes
Data: 117020 bytes
Erase: done
Program flash: ########################### done
Program boot: #### done
Verify flash: ########################## done
Verify boot: ### done
Program rate: 6159 bytes per second