In this article we’ll discuss the design for a custom microcontroller programming/debug/extension PCB and we’ll look at an example project. One thing that I find consistently tiresome with custom microcontroller designs is the need for programming and basic testing hardware. Obviously you need a way to load program code into your microcontroller, and thus you have to include hardware that allows you to connect the relevant pins on the MCU to the programmer module. The most convenient approach is a connector that mates directly to the programmer cable, but you could also use a different connector in conjunction with some sort of cable assembly. This programmer connection can also be referred to as the debug connection, because the same signals can be used for debug execution through the integrated development environment (IDE). However, it’s important to remember that programming is by far the more important functionality. It is theoretically possible to develop microcontroller applications without the use of breakpoints and register inspection and what not, but you will certainly get nowhere fast if you have no way to download code into the device.”

Link