Join the Conversation


  1. I don’t understand the attraction of bootloaders over something like the PICkit 3. The PICkit 3 is cheap and it gives you the ability to set breakpoints and examine variable values. My impression is that bootloaders don’t support anything like that.

    Wouldn’t the ease of debugging with a PICkit 3 greatly outweigh the convenience of a bootloader? Or am I misinformed about the bootloader’s abilities?

  2. You are off course right, PICkit3 is the best for developing and debugging, that’s why all our projects have the ICSP broken out… But it’s much easier for a majority of people to update their firmware through USB…

    1. Filip, I wonder if the people who think using a bootloader is easier are aware of what they’re missing out on. I’m a software engineer by trade, so I’m familiar with breakpoints. I also know how painful it is to have to debug with print statements. But a hobbyist who isn’t a SW engineer might not know what a breakpoint is and might not realize that his playing around would be a lot more enjoyable and productive if he could use them.

      Are we really doing such people a favor by giving them bootloaders and not introducing them to real debuggers?

      1. I see what you mean.

        However, if you take a standard “beginner” book on PIC’s they pretty much never mention the idea of breakpoints, so most people are not ever aware of them.

      2. THe ICSP is still there for the developers, but the majority of our audience don’t have a pickit. For them upgrading over a bootloader using USB or Ethernet is a the only option. When you sell stuff to a wide audience a bootloader is a lifesaver and imho mandatory.

      3. Remember that lot of the tools created here, buspirate for an example are usable for users on all platforms, why should I need to buy pickit, learn picprogramming, and so on to update my buspirate when my platform of choise is perhaps msp430?

      4. neslekkim, I agree that something like a Bus Pirate, which the user typically will not be writing code for, should be upgradable via bootloader.

        I was thinking more along the lines of Arduinos, ChipKITs, etc. that people buy with the intention of programming it themselves. When you’re writing and debugging your own code, a bootloader seems woefully inadequate.

  3. Yes, for debugging it is probably good to have Pickit, but some people build actual working projects around Arduinos and ChipKITs. These projects sometimes even scale to 10s-100s of units, may be more. They need to have firmware update mechanism.

    Besides, when you debug time critical code it is sometimes better to have a debug console than debugger. You can find stuff in logs which is dynamic and as such is hardly detectable with debugger. It’s definitely not a part of bootloader, but if it can use the same physical interface as bootloader (as is the case for Arduino) it is convenient. And for this you need USB stack.

Leave a comment

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail. You can also subscribe without commenting.