分几种情况吧,有些可以通过isp协议之类操作flash读写寄存器来实现烧写,有些通过内部固化的一小段程序来和上位机通讯,或者两者都有。
如果是支持ram执行的单片机,比如stm32,则两种方式都可以,但是前者的方式显然慢得多。所以jlink,stlink之类都是先写一小段程序到ram,再执行这段程序和上位机通讯,这样就快多了。此外stm32还有厂家固化的串口bootloader,详见应用笔记an2606。
再就是自己写一个bootloader,用着就舒服多了。安利一下我的: