I want to design my PCB with Atmega328p chip on it and I want to be able to burn Bootloader and sketch after that while everything is soldered on the PCB. So my question is, what would be the best way to do that? My current idea is to leave extra pins for burning a Bootloader, and to leave also extra pins for uploading the sketch, and to "unplug" other stuff connected on these pins (for example on hardware UART) by adding\removing jumpers.

I'm pretty new to all this stuff, so I'm not quite sure what's the best approach.

  • 1
    If you're leaving pins (SPI pins, by the way) for uploading the bootloader, why bother with the bootloader at all - just program direct using those ISP pins.
    – Majenko
    Aug 5, 2016 at 23:57
  • I'm pretty new to arduino programming, I thought that I must have bootloader uploaded first and then to upload my sketch. I didn't know that I can upload sketch directly without bootloader...can I?
    – ShP
    Aug 5, 2016 at 23:59
  • Yes, you can. The bootloader is purely for convenience so you don't need a hardware programmer. Since you already have the hardware programmer you don't need the convenience of the bootloader.
    – Majenko
    Aug 6, 2016 at 0:00
  • By hardware programmer, do you mean another arduino which I can connect to my board like when I'm burning an bootloader, or it can be done even just with FTDI cable?
    – ShP
    Aug 6, 2016 at 0:01
  • Another Arduino, yes, or something more convenient like a USBASP ($2 on eBay from China), but not an FTDI cable, no.
    – Majenko
    Aug 6, 2016 at 0:05

1 Answer 1


Realistically, you should design ATmega boards to support both ISP and bootloader pins. The logic is simple:

  • Unless you buy pre-programmed chips, or have a programming fixture, you will need ISP either to load the firmware itself, or to load a bootloader.

  • Even if you plan to use only ISP for programming, it is still worth providing external connections to the UART pins for interacting with firmware during development; generally with ATmega-based Arduinos you do not have a breakpoint debugger, so debug messages on serial are your primary visibility into what is happening.

  • You should wire the reset line to somewhere that you can manipulate it, so you don't have to power cycle your firmware every time you want to restart it in testing.

Once you have done all that, you end up with support for both ISP and UART bootloader - regardless if you plan to use them both or not.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.