How to design a PCB that allows firmware updates.

Nah, you need a real programmer for this. Someone that has made bootloaders before.