==== Mork Microchip PIC32MX ICSP ====
{{:projects:mork2.jpg?200|vcc-gnd}}
\\ \\
{{:projects:stmvcp.jpg?200|Windows 7}}
\\ \\
{{:projects:mmmork.jpg?200|Maple mini}}
This is a Microchip PIC32 ICSP (in circuit serial programmer) for STM32 micro-controllers. Mork allows an STM32 to program the flash on a PIC32.
Mork is adaptation of [[:projects:nanu-nanu|Nanu nanu]] Microchip PIC ICSP for the STM32 based [[:boards:vcc-gnd|vcc-gnd]] or [[:boards:maple|Maple mini]] (the stm32 F4 discovery is also supported in the build but not documented here).
Both STM32 boards are inexpensive boards which don't cost much more than the [[:boards:nano|Nano 3.0]] yet they are far more powerful.
One complication though for the [[:boards:vcc-gnd|vcc-gnd]], is that it comes with a serial boot loader which is not accessible via its USB port. This means that another device is required to program the [[:boards:vcc-gnd|vcc-gnd]] which can be an [[:tools:stlink|STLink]] compatible device or, if using a 3V3 UART, [[:tools:stm32flash|STM32Flash]].
The [[:boards:vcc-gnd|vcc-gnd]] page shows both examples of programming the board.
The [[:boards:maple|Maple mini]] comes with a USB boot loader which is compatible with [[:tools:dfu-util|dfu-util]]. This doesn't need any other hardware and is an easier option for running this application than the [[:boards:vcc-gnd|vcc-gnd]].
=== Licence ===
Mork is licensed under same terms as [[:projects:pickle|Pickle Microchip PIC ICSP]] which is the source of the software used to create this project. The Pickle [[:projects:pickle:licence|LICENCE]] is found here. This licence details the rights and liabilities of using the application and it should be especially understood that I, the author, will not accept any responsibility for any side effects of running it. Do not download and use this firmware unless you are willing to accept the consequences of it failing for any reason.
=== Credits and thanks ===
This software was written by Darron M Broad and is an adaptation of [[:projects:pickle|Pickle Microchip PIC ICSP]].
Thanks go to the libopencm3 developers for providing this library. This is used for a number of functions but most importantly, the USB driver.
=== Install ===
Mork utilises [[:tools:libopencm3|OpenCM3]] and this must be installed first. Installation of this will require [[:tools:gccarm|gccarm]] and Mork depends on that also.
When prepared we can fetch and build Mork.
hg clone http://hg.kewl.org/pub/Mork
cd Mork
make
Now we can install the firmware. In this example I am using [[:tools:stlink|STLink]] with a [[:boards:stm32f4|STM32 F4 discovery]] to program the [[:boards:vcc-gnd|vcc-gnd]].
make -f Makefile.vcc-gnd st-flash
If you need to use [[:tools:stm32flash|STM32Flash]], then program like this.
make -f Makefile.vcc-gnd stm32flash
You should follow the advice on the [[:boards:vcc-gnd|vcc-gnd]] page regarding wiring for [[:tools:stm32flash|STM32Flash]] and remember not to connect USB simultaneously when programming.
For the [[:boards:maple|Maple mini]] the programming process is simpler. Install [[:tools:dfu-util|dfu-util]] and press reset on the board and then one second later, enter the following.
make -f Makefile.maple_mini dfu-util
=== Set up ===
Connecting to the target is simple, the following schematic gives an overview of the ICSP requirements.
{{:projects:mork.png?200}}
The pins on the [[:boards:maple|Maple mini]] are the same as the [[:boards:vcc-gnd|vcc-gnd]].
=== Program & verify ===
When waiting for instructions Mork will blink the LED quickly and leave the target running.
Here I will use [[:tools:pic32prog|PIC32Prog]] to program the chip with the [[:projects:ape65|APE65]] firmware for the PICMX150F128B.
pic32prog -d /dev/ttyACM0 mx150.hex
Programmer for Microchip PIC32 microcontrollers, Version 1.119M
Copyright: (C) 2011-2014 Serge Vakulenko
Adapter: STK500v2 Bootloader
Program area: 1d000000-1d07ffff
Processor: Bootloader
Flash memory: 512 kbytes
Boot memory: 12 kbytes
Data: 55500 bytes
Erase: done
Program flash: ######################################################### done
Program boot: ### done
Verify flash: ######################################################## done
Verify boot: ## done
Rate: 10814 bytes per second
You may notice the LED blink more slowly during programming and slower still during verify. After the process is completed, the target runs again and Mork waits for further instructions.
=== Windows ===
If you want to use this device in Windows then the usbser.sys driver must be loaded.
If the device is unrecognised (XP) install using the stmcdc.inf file in the inf sub-directory of the project.
For Windows Vista and Windows 7 a STMicroelectronics Virtual COM Port will be installed via Windows update.
Later versions of Windows are not available to test.