单片机程序烧录的3种方式:ISP是在线编程,指电路板上的空白器件可以编程写入最终用户代码, 而不需要从电路板上取下器件;ICP是一种串行编程方式,其通过一根时钟线和一根数据线串行传输编程指令及数据。IAP指MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。
一、ISP是什么
ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。ISP技术是未来发展方向。
ISP 的实现相对要简单一些,一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。对于单片机来讲可以通过SPI或其它的串行接口接收上位机传来的数据并写入存储器中。所以即使我们将芯片焊接在电路板上,只要留出和上位机接口的这个串口,就可以实现芯片内部存储器的改写,而无须再取下芯片。
二、ICP是什么
ICP是一种串行编程方式,其通过一根时钟线和一根数据线串行传输编程指令及数据,ICP功能使用芯片的5个管脚()与LCP900连接器上的5个引脚,PCL,PDA,RESET相连(这里V 使用3.3V电压)。
ICP方式在应用中有以下优点:
- 在产品发货前,可以随时装载最新版软件程序。
- 在开发过程中,不需将芯片从系统板上取下,即可实现重新编程。
- 不占用程序存储空间(ISP要占用一定空间驻留ISP服务程序)。
- 不受串口的影响。
三、IAP是什么
IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。
通常在用户需要实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,名列前茅个项目程序不执行正常的功能操作,而只是通过某种通信管道(如USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。这两部分项目代码都同时烧录在User Flash中,当芯片上电后,首先是名列前茅个项目代码开始运行,它作如下操作:
- 检查是否需要对第二部分代码进行更新
- 如果不需要更新则转到
- 执行更新操作
- 跳转到第二部分代码执行
四、ISP 和 IAP 的工作原理
ISP 的实现相对要简单一些,一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。对于单片机来讲可以通过 SPI 或其它的串行接口接收上位机传来的数据并写入存储器中。所以即使我们将芯片焊接在电路板上,只要留出和上位机接口的这个串口,就可以实现芯片内部存储器的改写,而无须再取下芯片。
IAP 的实现相对要复杂一些,在实现 IAP 功能时,单片机内部一定要有两块存储区,一般一块被称为 BOOT 区,另外一块被称为存储区。单片机上电运行在 BOOT 区,如果有外部改写程序的条件满足,则对存储区的程序进行改写操作。如果外部改写程序的条件不满足,程序指针跳到存储区,开始执行放在存储区的程序,这样便实现了 IAP 功能。
延伸阅读1:单片机
单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。