Since upgrading to MPLAB X, I’ve had difficulty using the PICkit2 from within the IDE, so I’ve mainly been using the PICkit2 helper application to transfer my compiled hex files to the dsPIC. However, there is another handy way of doing it from the command line – the free pk2cmd utility. This software can be downloaded from microchip.com.
pk2cmd has lots of options, but here’s a typical command:
pk2cmd.exe -M -PdsPIC30F4011 -Fprogram.hex -T
These are the meanings of the command line arguments:
- -M tells pk2cmd to write all memory areas of the target device.
- -PdsPIC30F4011 tells pk2cmd that the microcontroller is a dsPIC30F4011.
- -Fprogram.hex tells pk2cmd that the hex file to be transferred to the microcontroller is “program.hex”.
- -T tells pk2cmd to supply power to the device once programming is complete.
I’ve been using this alongside Microchip’s free XC16 compiler, which I use to compile my C code. I’ve been editing the C code in a plain text editor (Notepad++), so I don’t actually need to use MPLAB X at all. Here’s an example of the type of makefile I use to manage the XC16 build process:
MP_CC_DIR="D:\Program Files\Microchip\xc16\v1.00\bin" MP_CC="D:\Program Files\Microchip\xc16\v1.00\bin\xc16-gcc.exe" all: program.hex program.cof: main.c $(MP_CC) main.c -o program.cof -mcpu=30F4011 -Wall -Wl,--script=p30F4011.gld program.hex: program.cof $(MP_CC_DIR)\\xc16-bin2hex program.cof -a -omf=elf
I have Microsoft nmake installed (I think it came with ,Visual C++ Express) but GNU make (e.g. from MinGW) or any other common version will probably work without much modification. Of course, you don’t actually need a makefile, but typing in the xc16-gcc command yourself is a little bit unwieldy.
For convenience, I copied the files “pk2cmd.exe” and “PK2DeviceFile.dat” directly into my program folder. Here’s what it looks like in the command window when I build a new hex file and program it onto the dsPIC: