ISP与IAP的区别

转:

ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码, 而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。IAP(In-Application Programming) 指MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。ISP和IAP技术是未来仪器仪表的发展方向。

   1   ISP和IAP的工作原理

   ISP的实现相对要简单一些,一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。对于单片机来讲可以通过SPI或其它的串行接口接收上位机传来的数据并写入存储器中。所以即使我们将芯片焊接在电路板上,只要留出和上位机接口的这个串口,就可以实现芯片内部存储器的改写,而无须再取下芯片。

   IAP的实现相对要复杂一些,在实现IAP功能时, 单片机内部一定要有两块存储区,一般一块被称为BOOT区,另外一块被称为存储区。单片机上电运行在BOOT区,如果有外部改写程序的条件满足,则对存储区的程序进行改写操作。如果外部改写程序的条件不满足,程序指针跳到存储区,开始执行放在存储区的程序,这样便实现了IAP功能。

   2   ISP和IAP在单片机中的应用

   2.1 传统编程方法的不足

   在一般的单片机的实验或开发时,编程器是必不可少的装置。仿真、调试完的程序需要借助编程器烧到单片机内部或外接的程序存储器中。普通的编程器价格从几百元到几千元不等,对于一般的单片机用户来说还是一笔不小的开支。另外,在开发过程中,程序每改动一次就要拔下电路板上的芯片编程后再插上,这样不但麻烦也很容易对芯片和电路板造成损伤,另外在程序需要升级做改动时,必须将设备返厂或是技术人员到现场操作,既不方便也造成成本浪费。

   2.2 ISP和IAP的优点

   ISP技术的优势是不需要编程器就可以进行单片机的实验和开发,单片机芯片可以直接焊接到电路板上,调试结束即成成品,免去了调试时由于频繁地插入取出芯片对芯片和电路板带来的不便。

   IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将程序从一个存储体转向另一个。

   ISP的实现一般需要很少的外部电路辅助实现, 而IAP的实现更加灵活,通常可利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器,可以通过现有的INTERNET或其它通讯方式很方便地实现远程升级和维护。

   2.3 产品分析

   目前市场上不少的单片机具有ISP和IAP功能。

   ST公司的μPSD32××系列单片机片内带128KB/256KB的FLASH存储器及32KB Boot ROM,通过JTAG串行口能很容易地实现ISP功能。IAP功能则可由用户在应用中实现。

   ATMEL公司的单片机AT89S8252,提供了一个SPI串行接口对内部程序存储器编程(ISP)。SST公司的单片机SST89C54,其最大的特点内部有两块独立的FLASH存储器,具有IAP(应用中在线编程)功能,对于8052系列的其它公司的单片机(ATMEL、 WINBOND、ISSI)可以直接代换,软硬件无须做任何改动。

   PHILIPS公司的P89C51RX2xx系列是带ISP/IAP的8位Flash单片机。PHILIPS公司为了使ISP技术和IAP技术得以推广,在芯片上免费提供了Boot ROM固件,并且巧妙地解决了固件和FLASH的地址覆盖问题及一些具体实现细节问题,使它们的实现变得简单。

   此外在外围器件中ST公司的PSD系列产品片内带大容量存储器,支持ISP及IAP功能。

 

ISP,In System Programing

       主要是指代芯片的烧写方式,以往写片子需要把片子拿下来,离开电路,用

     编程器烧,换句话说,芯片不能不脱离应用系统进行写入。

       ISP 主要针对这个问题,使用JTAG或者串行口(MCU 内部有Boot Loader ,

     通过指定的方式激活之,它可以和PC或其它上位机通过串口联系,不用使单片

     机离开应用系统而更新内部的程序/设置)进行程序的烧写操作。

       因此,具有ISP 功能的MCU 可以不使用编程器进行编程。当然,实现ISP 可

     能需要一些硬件电路支持,具体的在数据手册中有说明。

IAP,In Application Programing

       单片机内部具有一些可擦写的非易失存储器,如Flash。在单片机独立运行时,

     不具备IAP 功能的单片机并不能对Flash的数据进行修改,比如,对自身的某一

     个模块的代码,数据进行修改。

       具备了IAP 功能的MCU ,能够通过使用各自公司开发的技术,对于自身进行修

     改。

简言之:ISP=>修改MCU 内部数据需要有外部介入;

           IAP=>修改MCU 内部数据可以不用外部介入。

二者可以说是数据更新的一种实现机制。

一般具备ISP 功能后,就不要编程器了,而是使用下载线进行编程工作。

但是不是说他们就一定不支持编程器了,具体型号具体分析。

是否需要仿真器进行仿真和是否具备ISP和IAP没有必然的联系。

只不过具备了IAP功能,可以在MCU内写入监控程序,模拟一个仿真器,

当然,这个监控程序是要消耗资源的,和使用硬件的仿真器还有一定的差异。

IAP的应用,在51上可能比较多,就是SST出的那个SoftICE功能。

他的MCU 其实不具备ISP功能,需要使用编程器烧一个Boot Loader进去,

然后,利用IAP功能,就可以通过串行口下载数据了。

SST的那个,使用的是自己开发的一个SoftICE软件,和Keil C的Mon51接口。

看DataSheet上说,先要用编程器烧Boot Loader进去,

然后,用串口烧SoftICE进去,然后就可以用了。

ISP:in system programming,

IAP: in applicatin programming

但两者的操作方式,结果和应用场合有什么区别

ISP:

用写入器将code烧入,不过,芯片可以在目标板上,不用取出来,在设计目标板的时候就将接口设计在上面,所以叫"在系统编程",即不用脱离系统;

IAP:

在应用编程,有芯片本身(或通过外围的芯片)可以通过一系列操作将code写入,比如一款支持Iap的单片机,内分3个程序区,1作引导程序区,2作运行程序区,3作下载区,芯片通过串口接收到下载命令,进入引导区运行引导程序,在引导程序下将new code内容下载到下载区,下载完毕并校验通过后再将下载区内容复制到2区,运行复位程序,则Iap完成;

应用场合:

1,ISP 程序升级需要到现场解决,不过好一点的是不必拆机器了;

2,IAP 如果有网管系统的话,用网管下载一切搞定,人不用跑来跑去,

这可能是他们的优点或应用吧

典型IAP:IC卡电话机

内含V.xx MODEM芯片,MCU自带引导区,可远程下载更新程序。

========================================================

在线编程目前有两种实现方法:在系统编程(ISP)和在应用编程(IAP)。ISP一般是通过单片机专用的串行编程接口对单片机内部的Flash存储器进行编程,而IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。ISP的实现一般需要很少的外部电路辅助实现,而IAP的实现更加灵活,通常可利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器。

总结,简单滴说,就是ISP是在设计板子的时候留了个下载程序的口出来,可以通过这个口和PC上的烧写软件通信,然后直接把程序下载到电路板的MCU上。(MCU的整个程序系统被更改了喔)而,IAP则需要MCU里面有两部分程序,一部分事固件程序简称boot,另一部分叫做flash(存用户代码的喔),单片机上电首先运行boot再执行flash(所以说嘛,这个要求就高了哦,要求 MCU里面有固件,才可以进行程序更新重新烧写flash,刷机啊~~!!)

转载于:https://www.cnblogs.com/prayer521/p/4427925.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376080.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】手把手实现企业级开源监控软件cacti+nagios+ntop整合(图解)

http://freeze.blog.51cto.com/1846439/386828转载于:https://www.cnblogs.com/nhlinkin/p/3595532.html

【BZOJ】【1041】【HAOI2008】圆周上的点

数学 orz hzwer 完全不会做…… 很纠结啊,如果将来再遇到这种题,还是很难下手啊…… 引用题解: 【分析】: 样例图示: 首先,最暴力的算法显而易见:枚举x轴上的每个点,带入圆的方程,检…

php authcode java_PHP(authcode)加密解密

//************************加密解密*************************//** $string: 明文 或 密文* $operation:DECODE表示解密,其它表示加密* $key: 密匙* $expiry:密文有效期* */function authcode($string, $operation DECODE, $key…

nginx环境下搭建nagios 3.5.0,及配置pnp4nagios画图

本文基于《LNMP最新源码安装脚本》,Nagios依赖PHP环境和perl环境,由于Nginx不支持Perl的CGI,需先来搭建Perl环境,Nagios原理介绍略。一、下载最新稳定源码包和Perl脚本wget http://www.cpan.org/modules/by-module/FCGI/FCGI-0.74.tar.gzwget…

python indexerror怎么办_Python IndexError:使用列表作为可迭代对象时...

这是代码:import math as mprimeproduct 5397346292805549782720214077673687806275517530364350655459511599582614290primes [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127…

【Android】配置APK开发环境

【Android】配置APK开发环境1.安装java jdk去oracle公司下载jdk-7u15-windows-i586.exehttp://www.oracle.com/technetwork/cn/java/javase/downloads/jdk7-downloads-1880260-zhs.html---C:\Documents and Settings\XXXX>java -versionjava version "1.7.0_15"Ja…

C++细节系列(零):零散记录

老规矩:记录细节,等待空余,再进行整理。 1:const,static,const static成员初始化。 1、const成员:只能在构造函数后的初始化列表中初始化 2、static成员:初始化在类外,且不加static修饰。 3、co…

java js highcharts_Highcharts.js -纯javasctipt图表库初体验

一.highcharts简介以及引入highcharts作为免费提供给个人学习、个人网站和非商业用途使用的前端图表演示插件的确使用起来十分方便和轻便。在我最近完成一个需求的时候用到了它, 它的兼容性也很强,其在标准(W3C标准)浏览器中使用SVG技术渲染图形&#xf…

PHP:class const

const变量经常被当做常量用在php的类中&#xff0c;隐含的意思是这个变量是常量&#xff0c;不能被修改。编译器会自动检测&#xff0c;如果被赋值会被提示错误警告。 正确实例1&#xff1a; <?php class test {const ERRNO 100; } echo test::ERRNO."\n"; 输出…

java web核心知识_JAVA web 相关知识点

1&#xff1a; web的三个核心标准&#xff1a;URL&#xff1a; http VS httpsHTTP: 通信协议&#xff0c;客户端&#xff0f;服务器端信息交互方式; 特点是无状态&#xff1b;HTML:2: HTTP 协议&#xff1a;http是通用的&#xff0c;无状态的&#xff0c;面向对象的协议。H…

20135127陶俊杰 实验一

北京电子科技学院(BESTI) 《Java程序设计》课实验报告 班 级&#xff1a;201351 姓名及学号&#xff1a;陶俊杰 20135127 指导教师&#xff1a;娄佳鹏 必修/选修&#xff1a;选修 实验日期&#xff1a; 2015年4月16日 实验时间&…

2014.3.12-C语言小测试

测试代码&#xff1a; 学号:14020491.请实现一个函数&#xff0c;功能为使用循环输出以下的图案void print_alpha(int n) {int i, j;for(i0;i<n;i){for(j0;j<i;j)printf("%c", A j);printf("\n");} }2.请实现一个函数&#xff0c;功能为删除数组指定…

seqlist插入java_大话数据结构(五)(java程序)——顺序存储结构的插入与删除...

获得元素操作对于线性表的顺序存储结构来说&#xff0c;我们要实现getElement操作&#xff0c;即将线性表的第i个位置元素返回即可插入操作插入算法思路&#xff1a;1、如果插入位置不合理&#xff0c;抛出异常2、如果插入表的长度大于等于数组长度&#xff0c;则抛出异常或动态…

142. Linked List Cycle II

Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Follow up:Can you solve it without using extra space? Craking interview书上原题&#xff0c;快慢指针&#xff0c;话题较简单说明。 /** * Definition for singly-lin…

无法嵌入互操作类型ESRI.ArcGIS.Carto.MapDocumentClass.请改用适用的接口

在对地图文档进行操作时&#xff0c;居然出现如下问题&#xff1a; IMapDocument m_MapDocument new ESRI.ArcGIS.Carto.MapDocumentClass(); 报错: 无法嵌入互操作类型"ESRI.ArcGIS.Carto.MapDocumentClass".请改用适用的接口. 解决方案如下&#xff1a; 解决方案—…

java文件定时读写_java定时任务及日志的使用

需要引入日志的两个架包&#xff1a;log4j.jar和commons-logging.jarpackage com.lzl;import java.util.TimerTask;import org.apache.log4j.Logger;import com.sun.org.apache.commons.logging.Log;import com.sun.org.apache.commons.logging.LogFactory;public class MyTask…

Google Code Jam 2015 Round 1A Haircut 二分

题意&#xff1a;给你每个理发师的理发时间&#xff0c;问你排在队列中的第N个位置&#xff0c;问你应该被哪个理发师剪发。 解题思路&#xff1a;二分时间&#xff0c;看这个时间到第几个人理发了&#xff0c;然后找到临界值&#xff0c;看这个值的时候有那些理发师接待了新旅…

java编写科赫曲线_matlab绘制peano(皮亚诺)曲线和koch(科赫曲线,雪花曲线)分形曲线...

koch曲线matlab plot函数绘制koch曲线程序&#xff0c;程序还是比较简单的&#xff0c;这里只绘制出了雪花的三分之一function koch_curve(number)%number代表koch的阶数&#xff0c;范围为大于等于2figureset(gcf,position,[0,0,1920,1080]);%设置窗口分辨率&#xff0c;[0,0]…

ajax翻页效果模仿yii框架

ajax翻页效果模仿yii框架 ajax翻页效果&#xff0c;模仿yii框架。 复制代码代码如下:<!DOCTYPE html> <html> <head> <title>ajax分页_www.jbxue.com</title> <script src"http://code.jquery.com/jquery-1.11.0.min.js"></s…