Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
166 changes: 166 additions & 0 deletions dist/tools/pic32prog/doc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
Flashing on Linux using pickit-3
================================

This document describes how to enable flashing a pic32-wifire from Linux with a
PICkit3 using [pic32prog](https://github.com/sergev/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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This document contains several spellings of VirtualBox (capitalization differs). Please decide on one (I prefer the canonical spelling).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated all to VirtualBox.

machine and flash the PICkit3 from it.

Informations come from this comment

https://github.com/RIOT-OS/RIOT/pull/6092#issuecomment-261987955


Steps
-----

### Setup your computer

The steps were run on Ubuntu 16.04

* Install VirtualBox
* Add yourself to the 'vboxusers' group
```
sudo usermod -a -G vboxusers your_username
```
* Reboot

### Setup Windows VM

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
* Doc: https://www.virtualbox.org/manual/ch04.html#additions-windows
* 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

### Downloads

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`
* 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


pic32prog
---------

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.

### Troubleshooting

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"
```

Flashing
--------

* 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
```