Verified support of PIC24HJ12GP201. Added notes to that effect.
[goodfet] / firmware / apps / pic / README.txt
1 PIC programmer
2 March, April 2010.
3
4 Scott Livingston <slivingston AT caltech.edu>
5
6
7 Currently targeted at dsPIC33F/PIC24H chip family and tested on
8
9 dsPIC33FJ128GP710,
10 dsPIC33FJ128GP708,
11 PIC24HJ12GP201.
12
13
14 For the 14-pin GoodFET port (size 2x7), the pinout is
15 3 -> PGD
16 5 -> !MCLR
17 7 -> PGC
18 2 -> Vcc
19 9 -> GND
20
21 Programming is done over a protocol similar to 2-wire SPI (i.e., MOSI
22 and MISO are combined into a single data line), where the GoodFET is
23 the master. Currently only ICSP is supported, i.e., the programming
24 executive (similar to a bootstrap loader in other architectures) is
25 ignored, if present. Note that dsPIC33F/PIC24H chips seem to ship
26 without the programming executive present. Confer Microchip document
27 "dsPIC33F/PIC24H Flash Programming Specification" (DS70152G).
28
29 When receiving from (resp. replying to) host, data on the PGD line is
30 latched (resp. written) by the dsPIC33f/PIC24H chip on the rising edge
31 of PGC. A statement to this effect appears as a note in section 5.3,
32 Chapter 5, of the dsPIC33F/PIC24H Flash Programming Spec.
33
34 In the dsPIC33F/PIC24H flash programming spec, there is a typo
35 regarding verification of the presence of the programming
36 executive. In Section 5.11, it is stated that an Application ID of
37 0xBB indicates the programming executive is resident. As of 4 April
38 2010, the correct App ID is 0xCB, as listed later in the spec
39 document, Section 7 "Device ID". To dump the device and application
40 IDs and hardware revision number of an attached dsPIC33F/PIC24H chip,
41 use the goodfet.pic client:
42
43 $ ./goodfet.pic devid
44
45
46 Much more documentation is needed for the programmer and is
47 forthcoming along with more common tools (e.g. verify programming
48 results). For now, here are some quick examples. To bulk erase program
49 memory (this is necessary before programming),
50
51 $ ./goodfet.pic erase
52
53 Then to program the device with a code file, foo.hex,
54
55 $ ./goodfet.pic program foo.hex
56
57
58 A quick visual check of results might be a dump of the first few
59 instruction words.
60
61 $ ./goodfet.pic - 0x200 0x220 pretty
62
63 This command prints (24-bit width) contents of program memory at
64 addresses 0x200 through 0x220 to stdout.
65
66
67 For setting up your development environment, I suggest matt's article
68 on installing Microchip's GCC port for dsPIC/PIC24 microcontrollers
69 under GNU/Linux (and almost certainly extends to other Unix-like
70 environments):
71
72 http://www.electricrock.co.nz/blog/2009/08/installing-microchips-c-compiler-for-pic24-mcus-and-dspic-dscs-c30-on-ubuntu-9-04/
73
74 The port is called C30 by Microchip.