单片机程序代码烧写方法有专用编程器烧写、编程器/调试器烧写及ISP和IAP,简单介绍及个人总结如下:
专用编程器:裸片烧写,可同时烧写多个芯片,速度快,单片机烧写好程序后再焊接到电路板上,但编程器价格贵,适用于大批量生产
仿真器/调试器:通过电路板上安装的编程接口与单片机连接烧写程序,需要给电路板通电,操作麻烦,效率低。这种方式本来是给工程师调试程序用的,但是现在普通功能的仿真器/调试器已经很便宜了,而且一般也都有配套的编程软件可用,因此对于少量产品的程序烧写可以采用此种方式,比ISP方便。
ISP(In-System Programming)在系统编程:指芯片已经焊接在电路板上的情况下对其进行编程。厂家在单片机中内置了一段bootloader程序,上电时通过一个IO口状态选择是运行此bootloader程序还是运行flash中的用户程序。如果配置为运行此bootloader程序,那么此bootloader可对flash进行擦除、代码烧写,代码可通过UART或其他外设接口接收来自PC发送的数据,很多单片机都有此功能。此种方式不需要昂贵的编程器(早期的普通仿真器也是很贵的),是少量产品情况下低成本的代码烧写方式。
IAP(In-Application Programming)在应用编程:指在flash中运行的程序再对flash进行编程。ISP方式虽然好用,但也有其缺点:必须在上电时手动配置一个IO口状态(使用按键或跳线)使芯片进入ISP代码部分,编程完成后需要断电将IO口配置改回来以便上电时运行flash中的代码,而且ISP代码功能由厂家固定,且需配合PC端专用的ISP软件使用