ISP、IAP、ICP烧写方式的区别

ISP:In System Programing          在系统编程
IAP:In applicating Programing    在应用编程
ICP:In Circuit Programing           在电路编程

注意:片内flash存储器的编程可以通过以下方法来实现:

(1)通过串口USART0进行在线系统编程(ISP)。

(2)通过通用嵌入片内的固化代码进行的在应用编程(IAP)。

(3)通过内置的JTAG接口进行编程。

ISP、IAP、ICP的区别:

1、ISP是把房子拆了再重造一间,那么在造好之前当然是不能住人的啦!
2、IAP是在造好的房子里边进行一些装修,装修的时候人还住在里面!
3、ICP是在电路编程,是LPC芯片的编程方式,相当于ATMEL的ISP,而LPC的ISP就相当于ATMEL的IAP了。

ISP是指可以在板级上进行编程,而不用把芯片拆下来放到烧写器中,即不脱离系统,所以称作“在系统编程”,它是对整个程序的擦除和写入,通过单片机专用的串行编程接口对单片机内部的Flash存储器进行编程。即使芯片焊接在电路板上,只要留出和上位机接口的串行口就能进行烧写。

IAP同样是在板级上进行编程,MCU获取新代码并对程序的某部分重新编程,即可用程序来改变程序,修改程序的一部分达到升级、消除bug的目的,而不影响系统的其它部分,烧写过程中程序可以继续运行,另外接口程序是自已写的,这样可以进行远程升级而不影响应用。IAP的实现更加灵活,通常可利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器。

IAP的实现

程序运行在CPU内部的高速Flash时无法完成内部Flash中代码的更新,为解决此问题,IAP从结构上将Flash存储器映射为两个存储体——应用boot区和程序存储区,在设计固件程序时编写两个项目代码,第一个项目程序存放在应用boot区,不执行正常的功能操作,而只是通过某种通信管道(如USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码,存放在程序存储区。这两部分项目代码都同时烧录在User Flash中,当芯片上电后,首先运行应用boot区程序,它作如下操作:
1)检查是否需要对第二部分代码进行更新
2)如果不需要更新则转到4)
3)执行更新操作
4)跳转到第二部分代码执行。

应用boot区代码为一个简单的应用程序,实现从外部Flash导入应用程序代码以及向应用程序代码区入口跳转的功能。应用boot通常存放在CPU内部Flash的开始部分,必须通过其它手段,如JTAG或ISP烧入,而且一旦写入后不再修改。

程序存储区代码可以使用第一部分代码IAP功能烧入,也可以和第一部分代码一道烧入,以后需要程序更新时再通过第一部分IAP代码更新。

对于STM32来说,因为它的中断向量表位于程序存储器的最低地址区,为了使第一部分代码能够正确地响应中断,第一部分代码通常位于Flash的开始区域(bootloader),而第二部分代码紧随其后。在第二部分代码开始执行时,首先需要把CPU的中断向量表映像到自己的向量表,然后再执行其他的操作。

如果IAP程序被破坏,产品必须返厂才能重新烧写程序,这是很麻烦并且非常耗费时间和金钱的。针对这样的需求,STM32在对Flash区域实行读保护的同时,自动地对用户Flash区的开始4页设置为写保护,这样可以有效地保证IAP程序(第一部分代码)区域不会被意外地破坏。

ISP、IAP、ICP与传统烧写方式的区别

1)在开发阶段
改code时, 不再需要将MCU从板子上拔起来, 拿到烧录器上烧, 然后再装回去. 可以直接利用ISP/ICP Programmer做板上烧录, 为开发者提供了极大的便利性.
2)在量产阶段
客户可以采用”先焊到板子上再烧code”的方式, 将烧code的动作安排在生产线的某一站.
那么传统的方式 (先将code烧好再焊到板子上)有什么缺点?
传统的方式是这样的: 拆封–>从tray盘取出chip–>烧录–>把chip放回tray盘.
这样的流程比起上面建议的方式: 增加了烧录时间, 容易造成QFP包装的chip弯脚, 或忘了烧code即放回tray盘.
3)在成品阶段
已组装好的成品若要改code, 可以透过预留的接口, 利用ISP或ICP, 更新MCU, 不需要拆机.
什么是 IAP (In-Application Programming)?
IAP指的是, MCU在运行的状态下, 利用ISP的机制, 不透过外接工具 (例如: ISP Programmer) 的帮忙, 去更新APROM, DataFlash 或 CONFIG. 要实现这种功能,
系统必须有取得更新数据的能力, 例如: 处于某一种联机的状态.
(注: 有时候, ISP/IAP的分别并不是那么清楚!)

ISP与ICP的差别

For ISP
(1) MCU必须处于可执行程序的状态 (除了上电, 还要接XTAL), 且必须预烧ISP-code在LDROM里面
(2) 烧录范围只限于APROM, DataFlash或CONFIG (但对使用者来说, 应经够了!)
(3) chip在LOCK的状态下, 仍然可以只更新某一区块 (APROM, DataFlash或CONFIG)
(4) 因为烧录的动作取决于ISP-code的写法, 所以给系统设计者的弹性较大
For ICP
(1) MCU只要处于上电状态即可, 不必预烧任何code在MCU里面
(2) 烧录范围涵盖整颗MCU, 包括 APROM, DataFlash, CONFIG, LDROM 和 ROMMAP
(3) chip在LOCK的状态下, 无法只更新某一区块, 只能在erase-ALL之后, 更新某一区块, 再逐一烧回其它区块(因为ICP的本质就是走串行接口的Writer Mode, chip被LOCK之后, 除了erase-ALL, 所有烧录动作皆会被禁止)
(4) 因为烧录纯粹是ICP硬件的行为, MCU无法自己更新自己, 所以给系统设计者的弹性较小(例如: 无法藉由ICP去实现IAP的功能)

ISP与ICP的使用场合

依这两者的特性, 配合客户的系统需求, 而后才建议客户使用ISP或ICP.
注:上述差别的第(3)点和第(4)点, 可能是ICP带给使用者的最大限制. 站在使用者的观点, 若ISP与ICP只能择一的话, ISP会是必要的选择。

目前市场上不少的单片机具有ISP/IAP功能
ATMEL公司的单片机AT89SXXXX系列,提供了一个SPI串行接口对内部程序存储器编程(ISP)。
ATMEL公司的单片机AVR系列,提供了一个SPI串行接口对内部程序存储器编程(ISP)。
PHILIPS 公司的P89C51RX2xx系列是带ISP/IAP的8位Flash单片机。PHILIPS公司为了使ISP技术和IAP技术得以推广,在芯片上免费提供了Boot ROM固件,并且巧妙地解决了固件和FLASH的地址覆盖问题及一些具体实现细节问题,使它们的实现变得简单。
ST公司的μPSD32××系列单片机片内带128KB/256KB的FLASH存储器及32KB Boot ROM,通过JTAG串行口能很容易地实现ISP功能,IAP功能则可由用户在应用中实现。
SST公司的单片机SST89C54,其最大的特点内部有两块独立的FLASH存储器,具有IAP功能,对于8052系列的其它公司的单片机(ATMEL、 WINBOND、ISSI)可以直接代换,软硬件无须做任何改动。
PHILIPS公司的P89C51RX2xx系列是带ISP/IAP的8位Flash单片机。PHILIPS公司为了使ISP技术和IAP技术得以推广,在芯片上免费提供了Boot ROM固件,并且巧妙地解决了固件和FLASH的地址覆盖问题及一些具体实现细节问题,使它们的实现变得简单。
很多家公司的单片机都具备ISP功能,ISP在单片机领域的应用成为了必然的趋势。此外在外围器件中ST公司的PSD系列产品片内带大容量存储器,支持ISP及IAP功能。

ISP、IAP、ICP的区别!相关推荐

  1. 嵌入式 - 单片机三种烧录方式 ISP, IAP, ICP 简述

    更新历史 20220315 首次创建文档,就三种 flash 编程方式进行了简单的概念介绍与归类: 20220319 增加 ISP IAP 的差异说明: 文章目录 引言 IAP 方法依赖 ISP 进入 ...

  2. 单片机程序烧录的3种方式(ISP、ICP、IAP)是什么?

    说起给单片机烧录程序,大家应该都不陌生吧,我最早接触单片机是从51单片机开始的,型号是STC89C52RC,当时烧录程序就是用的下面这种烧录软件--STC-ISP. 这种方式,通过串口连接单片机,选择 ...

  3. STM32的升级--ICP/ISP/IAP以及Ymodem协议分析

    资料下载 Ymodem协议传输过程分析 ICP/ISP/IAP 区别 ICP(In-Circuit Programing): 通过J-Link/SWD等下载器烧写程序,上位机需要借助其他硬件的参与才能 ...

  4. 系统编程(ISP)与应用编程(IAP)的区别!

    系统编程(ISP)与应用编程(IAP)的区别! 1.定义 (1)系统编程(ISP) ISP在系统编程是指电路板上的空白器件可以编程写人最终用户代码,而不需要从电路板上取下器件.已经编程的器件也可以用I ...

  5. isp,iap,sw-jtag

    https://blog.csdn.net/weixin_45905650/article/details/107707858?ops_request_misc=%257B%2522request%2 ...

  6. ISP IAP(转自EETOP)

    ISP(In-System Programming)在系统可 编程, 指电路板上的空白器件可以编程写入最终用户代码, 而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程.IAP( ...

  7. ISP和DSP的区别

    看了别人的说明,再加上个人的理解. ISP,Image Signal Processor,图像信号处理器: DSP,Data Signal Processor,数字信号处理器. DSP是对数字信号的处 ...

  8. ISP 和IAP 原理与区别

    1  ISP和IAP的工作原理   ISP的实现相对要简单一些,一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写.对于单片机来讲可以通过SPI或其它的串行接口接收上位机传来的数据并写入存 ...

  9. 宽带服务价值链之:ISP,ICP,ASP,IDC,CDN

    ISP:Internet Service Provider,互联网服务提供商 ISP的英文是Internet Service Provider,翻译为互联网服务提供商,即向广大用户综合提供互联网接入业 ...

最新文章

  1. OpenGL概念辨析: 窗口,视口,裁剪区域
  2. 优化webpack配置
  3. 互联网+”时代,如何实现高效协同移动办公?
  4. 第二次冲刺每日站立会议04
  5. word下设置多个起始页面
  6. php自动维护,完全禁用关闭Windows Server 2012R2自动维护功能禁用WIN2012R2自动维护
  7. Parasoft C++test使用教程:执行测试用例(上)
  8. pandas map applymap apply方法详解
  9. 前端-----文本类标签汇总
  10. GIGO1.1数据清洗利器,文献计量同义词合并
  11. VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
  12. 品优购案例 html css
  13. 记牌器内存扫描法原理(转)
  14. EBS R12.2 ADOP (R12.2 AD Online Patching) - 3
  15. 七牛云这个API,让我轻松搞定Banner背景自动切换的功能
  16. 手机qpython3 如何画图_记住这3个功能,一分钟掌握python sns作图
  17. python爬虫爬取网页内容
  18. cmdy5(cmdy5庆余年)
  19. 运行时数据区-堆(Heap)
  20. Qt中文帮助文档-QX11Info

热门文章

  1. bzoj1513【POI2006】Tet-Tetris 3D
  2. Docker - command in docker container
  3. Java基础笔记-异常
  4. ThinkPad E440 加内存后导致开不了机
  5. 已经使用过的rails插件
  6. 【一个实体对象不能由多个 IEntityChangeTracker 实例引用】原因及解决方法
  7. Help Jimmy(递归)
  8. 函数式编程与REST的思考
  9. kill()函数 详解
  10. 2030年人类将成为混合式机器人?