芒果爱吃胡萝卜 - mcu烧录
type: channel
link: http://blog.mangolovecarrot.net/tag/mcu%E7%83%A7%E5%BD%95/
items: 关于MCU的烧录方式的讨论 ISP，IAP，ICP

关于MCU的烧录方式的讨论 ISP，IAP，ICP
type: item
date: 2018-10-25T03:46:00+08:00
description: （本文为转载，感谢原文作者）众所周知，MCU都会有调试，烧录，下载的工具，比如JLINK,STLINK,NULINK,等很多，不同厂家，不同品牌几乎都会有他们自己烧录，下载的方式，那么今天我给大家讲讲新唐的烧录方式：在讲新唐单片机的烧录方式之前，有必要先讲讲ICP,IAP,ISP的关系。这是MCU通用的概念。ISP：In System Programing 在系统编程IAP：In applicating Programing 在应用编程ICP：In Circuit Programing 在电路编程区别：ISP是把房子拆了再重造一间，那么在造好之前当然是不能住人的啦！IAP是在造好的房子里边进行一些装修，装修的时候人还住在里面！ICP是在电路编程，是LPC芯片的编程方式，相当于ATMEL的ISP，而LPC的ISP就相当于ATMEL的IAP了。ISP是指可以在板级上进行编程，而不用把芯片拆下来放到烧写器中，即不脱离系统，所以称作“在系统编程”，它是对整个程序的擦除和写入，通过单片机专用的串行编程接口对单片机内部的Flash存储器进行编程。即使芯片焊接在电路板上，只要留出和上位机接口的串行口就能进行烧写。IAP同样是在板级上进行编程，MCU获取新代码并对程序的某部分重新编程，即可用程序来改变程序，修改程序的一部分达到升级、消除bug的目的，而不影响系统的其它部分，烧写过程中程序可以继续运行，另外接口程序是自已写的，这样可以进行远程升级而不影响应用。IAP的实现更加灵活,通常可利用单片机的串行口接到计算机的RS232口，通过专门设计的固件程序来编程内部存储器。ISP、IAP、ICP与传统烧写方式的区别在开发阶段改code时, 不再需要将MCU从板子上拔起来, 拿到烧录器上烧, 然后再装回去. 可以直接利用ISP/ICP Programmer做板上烧录, 为开发者提供了极大的便利性.在量产阶段客户可以采用”先焊到板子上再烧code”的方式, 将烧code的动作安排在生产线的某一站.那么传统的方式 (先将code烧好再焊到板子上)有什么缺点?传统的方式是这样的: 拆封–>从tray盘取出chip–>烧录–>把chip放回tray盘.这样的流程比起上面建议的方式: 增加了烧录时间, 容易造成QFP包装的chip弯脚, 或忘了烧code即放回tray盘.在成品阶段已组装好的成品若要改code, 可以透过预留的接口, 利用ISP或ICP, 更新MCU, 不需要拆机.什么是 IAP (In-Application Programming)?IAP指的是, MCU在运行的状态下, 利用ISP的机制, 不透过外接工具 (例如: ISP Programmer) 的帮忙, 去更新APROM, DataFlash 或 CONFIG. 要实现这种功能,系统必须有取得更新数据的能力, 例如: 处于某一种联机的状态.(注: 有时候, ISP/IAP的分别并不是那么清楚!)ISP（In-System Programming）在系统可编程，指电路板上的空白器件可以编程写入最终用户代码，而不需要从电路板上取下器件，已经编程的器件也可以用ISP方式擦除或再编程。ISP技术是未来发展方向。ISP的工作原理 ISP 的实现相对要简单一些，一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。对于单片机来讲可以通过SPI或其它的串行接口接收上位机传来的数据并写入存储器中。所以即使我们将芯片焊接在电路板上，只要留出和上位机接口的这个串口，就可以实现芯片内部存储器的改写，而无须再取下芯片。这里博主补充一句，其实很多人看到ISP下载就想到串口下载。其实ISP下载也可以用I2C，SPI，CAN等通信协议，甚至你自己定义一个通信协议也没问题，完全取决于ISP接收端的程序怎么写。只是串口通信比较简单，这种ISP相对常见而已ISP的优点 ISP技术的优势是不需要编程器就可以进行单片机的实验和开发，单片机芯片可以直接焊接到电路板上，调试结束即成成品，免去了调试时由于频繁地插入取出芯片对芯片和电路板带来的不便。ICPICP是一种串行编程方式，其通过一根时钟线和一根数据线串行传输编程指令及数据。ICP的特点：在产品发货前，可以随时装载最新版软件程序。在开发过程中，不需将芯片从系统板上取下，即可实现重新编程。不占用程序存储空间（ISP要占用一定空间驻留ISP服务程序）。不受串口的影响。ICP的应用利用ICP的功能，实现在电路编程，可以提高电子产品的功能，甚至改变电子产业的科技。IAPIn Application Programming的首字母缩写，IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写，目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序…