Most of us have PIC programmers for development, such as Microchip IDC2 or a PIC ICSP programmer such as PRESTO, which are very good at what they do. But they are not ideal for either production or field updates, because they require too much knowledge to use or need a laptop to be used in a challenging environment.
PIC microcontrollers, like most modern microcontrollers, can be programmed in system (or in circuit – ICSP) rather than in a socket programmer. This has advantages in development and in production, for example, to use different firmware for different versions or to speed up production. The major benefit though is field upgrades. We can give you lots of horror stories about people who didn’t think of firmware upgrades and had to recall products to fix a bug, not a cheap option. So how do you add In System Programming to your designs?
The major factors are the electronic design of the ICSP circuit and the ICSP connector format. Let’s look at the connector format first. Most Microchip development boards (and ICD2/3 debuggers) use RJ11 connector by default, but this is a poor choice for field or production use.
Microchip have scored a winner over Atmel AVR by including all the information required to program a PIC microcontroller in one Hex file. This includes code, EEPROM data, User bytes (User ID) and most importantly, configuration words.
This makes it much easier to transfer the project from development to production or between engineers, as all the information needed is in one file. Atmel, now they have been taken over by Microchip, have belatedly added an ELF production file format that can do the same thing. See this post for details – Producing AVR and ATxmega ELF production files So, what is this PIC file format?