Bob Blick wrote: > But since you have not used a bootloader, you have not had the chance to > see how useful it can be, even when one already has an ICD or ICE. I have used everything you mentioned (ICE, ICD2, bootloader) plus direct load via ICSP, and replace chip in socket that you didn't mention. Of all these methods, the ICE is definitely the best for debugging. You can see everything going on in the chip in the real target circuit environment without requiring additional resources, which can often be a serious limitation. The downside is that an ICE is relatively expensive for hobbyists (it's a no-brainer for professionals where time=money and you get the heft discount) and lately there have been more and more limitations as the chips get faster. Still, this is currently my debug method of choice for most projects simply because it's the fastest way to get to working code. The ICD2 is a good value for the money, but I use it only grudgingly because there seem to be some flakies and it has some annoying properties even when it's working right. Still, it's probably the best value for a serious hobbyist. Most modern PIC circuits are designed for ICSP. For those it's easy to dump a new version into the PIC and try it. I usually set up a build script that automatically dumps the HEX file to the PIC via a programmer if the build succeeded. As long as your circuit is set up for ICSP, this is better than a bootloader in all cases since it requires no extra hardware resources, and takes about the same time or less. The only drawback from a hobbyist point of view is that you need a programmer, preferably one capable of releasing the programming lines to high impedence when done depending on how the circuit is wired and the PGC/PGD pins used. I think a minimum programmer is a must for a hobbyist anyway, and that relying solely or mostly on a bootloader is not a good idea. I use a ProProg for this since the EasyProg was not designed to release the lines when done. The new USB programmer is designed for that (working very nicely from a serial port by the way, faster than the EasyProg and ProProg, USB software/firmware in progress). I have used a bootloader a few times, generally when that was required for the finished project anyway. In that case it's about equivalent to an ICSP dump since the hardware is designed for bootloader access. In one case the circuit wasn't designed for ICSP but the project required a bootloader for field upgrades, so I used that. However it's been a few years since the last time I saw a circuit not designed for ICSP. The drawbacks of a bootloader are that there are too many things that can go wrong, it requires hardware resources, and you still have to get the bootloader in the chip the first time plus whenever you mess up and overwrite it. Also many chips are not capable of bootloading or a bootloader would take too large a fraction of the limited program memory. My 16F UART based bootloader is around 300 words if I remember right, and my dsPIC external IIC EEPROM bootloader is about the same number of instructions. Both were carefully designed for reliability, so it should be possible to make smaller quick and dirty bootloaders. However, I think that is a bad idea since there are already enough risks and hassles when using bootloaders. In the end, I usually use a combination of initial test with the simulator, then real debugging with the ICE, then testing incremental changes using ICSP dump-and-run. Once the firmware is basically working, bugs are minimal and when they do occur you can usually find them from the symptom fairly quickly. At that stage I only haul out the ICE when I'm really stumped and can't figure it out with a few minutes of testing. ****************************************************************** Embed Inc, Littleton Massachusetts, (978) 742-9014. #1 PIC consultant in 2004 program year. http://www.embedinc.com/products -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist