ISP 和 IAP 介绍
ISP:
简介
(In System Programable) 是指在系统编程,通俗的讲,就是芯片已经焊板子上,不用取下,就可以简单而方便地对其进行编程。
比如我们通过电脑给 STC 单片机下载程序,或给 AT89S51 单片机下载程序,使用的STC-ISP软件;以及利用Flash loader对STM32编程等,都是是利用了 ISP 技术
工作原理
一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。对于单片机来讲可以通过SPI或其它的串行接口接收上位机传来的数据并写入存储器中。所以即使我们将芯片焊接在电路板上,只要留出和上位机接口的这个串口,就可以实现芯片内部存储器的改写,而无须再取下芯片
IAP:
简介
(In Application Programable) 是指在应用编程,是应用在Flash程序存储器的一种编程模式。它可以在应用程序正常运行的情况下,通过调用特定的IAP程序对另外一段程序Flash空间进行读/写操作,甚至可以控制对某段、某页甚至某个字节的读/写操作,这为数据存储和固件的现场升级带来了更大的灵活性。
工作原理
IAP 的实现相对要复杂一些,在实现 IAP 功能时,单片机内部一定要有两块存储区,一般一块被称为 BOOT 区,另外一块被称为存储区。单片机上电运行在 BOOT 区,如果有外部改写程序的条件满足,则对存储区的程序进行改写操作。如果外部改写程序的条件不满足,程序指针跳到存储区,开始执行放在存储区的程序,这样便实现了 IAP 功能。
IAP的通信口有许多种:UART串口、ETH以太网、I2C、SPI…等。按理说只要能传输数据的通信口都能实现IAP的功能。
通俗点讲,也就是说程序自己可以往程序存储器里写数据或修改程序。,这种方式的典型应用就是用一小段代码来实现程序的下载,实际上单片机的 ISP 功能就是通过 IAP 技术来实现的,即芯片在出厂前就已经有一段小的 boot 程序在里面,芯片上电后,开始运行这段程序,当检测到上位机有下载要求时,便和上位机通信,然后下载数据到存储区。类比于windows,系统在运行的时候就可以联网升级更新程序,所以这个功能主要是用来方便系统自动升级的。
ISP 和 IAP 的优点
ISP 技术的优势是不需要编程器就可以进行单片机的实验和开发,单片机芯片可以直接焊接到电路板上,调试结束即成成品,免去了调试时由于频繁地插入取出芯片对芯片和电路板带来的不便。
IAP 技术是从结构上将 Flash 存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将程序从一个存储体转向另一个。
ISP 的实现一般需要很少的外部电路辅助实现,而 IAP 的实现更加灵活,通常可利用单片机的串行口接到计算机的 RS232 口,通过专门设计的固件程序来编程内部存储器,可以通过现有的 INTERNET 或其它通讯方式很方便地实现远程升级和维护。
两者的应用场合
ISP 程序升级需要到现场解决,不过好一点的是不必拆机器了;
IAP 如果有网管系统的话,用网管下载一切搞定,人不用跑来跑去;