mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
167 lines
5.0 KiB
Markdown
167 lines
5.0 KiB
Markdown
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
|
|
machine and flash the PICkit3 from it.
|
|
|
|
Information 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
|
|
```
|