电子工程师都知道,半导体技术发展迅猛,带动了各种芯片技术的不断升级。在数据存储方面,从最初的掩膜ROM,发展到现在的Flash技术,存储技术的不断改进,相对应的编程技术也在不断发展。
记得老一辈工程师在烧写51单片机的时候还是用一台硕大的编程器进行程序下载,而且还是一次性的(OTP),每次都小心谨慎的把代码调试了又调试后才下载看效果。现在简单到只需一个串口下载器即可实现程序下载,基本不需要考虑编程次数的问题,一有想法随时编译下载更新。
在这个发展过程中,也诞生了很多编程技术,比如ISP、IAP、ICP,另外还有JTAG编程、SWD编程、UART编程等等。玩单片机的对这些词应该都不陌生,但他们之间有什么区别呢?首先看下他们的定义:
ISP:In System Programing,在系统编程
ICP:In Circuit Programing,在电路编程
IAP:In Application Programing,在应用编程
JTAG编程:通过JTAG协议进行编程
SWD编程:通过SWD协议进行编程
UART编程:通过UART进行编程
看似很乱,其实捋清楚他们之间的层次关系就不会乱了。用个图来形象表示一下:
从图上看,ISP和ICP是处于最顶层的技术。描述的是一种编程结构,所用使用到的协