玩单片机的都应该听说过这几个词。一向搞不太清楚他们之间的差异。今日查了材料后总结收拾如下。
ISP:In System Programing,在体系编程
IAP:In applicaTIng Programing,在运用编程
ICP:In Circuit Programing,在电路编程
ISP是指能够在板级上进行编程,也便是不必拆芯片下来,写的是整个程序,一般是经过ISP接口线来写。
IAP尽管相同也是在板级上进行编程,可是是自已对自已进行编程,在运用中进行编程,也即能够仅仅更改某一部分而不影响体系的其它部分,别的接口程序是自已写的,这样能够进行长途晋级而不影响运用。
打个比方吧:
1、ISP是把房子拆了再重造一间,那么在造好之前当然是不能住人的啦!
2、IAP是在造好的房子里边进行一些装饰,当然人能够持续住啦!
ICP是在电路编程,是LPC芯片的编程办法,相当于ATMEL的ISP,而LPC的ISP就相当于ATMEL的IAP了。
ISP与IAP的差异
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 假如有网管体系的话,用网管下载全部搞定,人不必跑来跑去,
这或许是他们的长处或运用吧
在线编程现在有两种完结办法:在体系编程(ISP)和在运用编程(IAP)。ISP一般是经过单片机专用的串行编程接口对单片机内部的Flash存储器进行编程,而IAP技能是从结构大将Flash存储器映射为两个存储体,当运转一个存储体上的用户程序时,可对另一个存储体从头编程,之后将操控从一个存储体转向另一个。ISP的完结一般需求很少的外部电路辅佐完结,而IAP的完结愈加灵敏,一般可运用单片机的串行口接到计算机的RS232口,经过专门规划的固件程序来编程内部存储器。 ISP和IAP很类似,都是不需求把芯片从板子上拔出来,就到达了用PC-MCU的编程接口(JTAG、串口、双绞线、SPI等)搞定新版本的晋级的意图。MCU内部都是首要履行一段独立的Boot代码(这段Boot代码一般是出厂预置,或运用编程器烧录的,一般只需1k或4k,SST一般是占用一块独立的Block,Philips一般是让BootROM地址与其他Flash堆叠,以到达躲藏的作用),Boot担任操控擦除程序存储器及给程序存储器编程的代码(或是处理器外部供给的履行代码),然后经过某种与PC计算机的通讯办法(如,ether网口),将用户指定的某个在PC上编译完结的MCU可运转的二进制代码文件编程入MCU内的程序存储器。
ISP和IAP最大的不同是:由谁来触发。
ISP有4种触发办法:
1.由外部硬件电路:如VDD坚持高电平,给RST接连3个脉冲;
2.检测状况位:如ISPEN,为0时PC指针从0000H开端履行;为1时,经过“引导向量”计算出“ISP代码”的方位。每次复位后都会检测该状况位;
3.间断操控符信号触发芯片复位:间断操控符信号便是指在异步串行口的接纳脚上呈现长 达一帧长度的低电平,这儿一帧的长度与异步串行口的作业形式有关。
4.直接调用ISP:用户程序也能够调用,可是很风险。
4种办法的意图是相同的——进入ISP子程序,比方Philips出厂的ISP子程序在1E00H-1FFFH,只需能引导PC指针指向1E00H就能够了。
而进入ISP代码的意图是:进入BootROM。
IAP的触发比较简略一些,没有外部触发。经过一些指示位(SST为SC0/SC1、SFCFhilips为一段IAP子程序,保存在FF00H~FFFFH地址空间中),到达引导到BootROM的意图。
异曲同工,ISP、IAP所进入的BootROM里边驻留的Boot代码,才是最终方针。
最终一种:并行编程形式。不需求BootROM,直接设置芯片的多个引脚来让芯片辨认指令(如:擦除、写入、验证等),从P口传地址、数据,就能够写入Flash
用LPC2000的IAP,你自己分配好FLASH空间,指定一个BLOCK用来寄存你的数据,然后经过IAP进行写操作。每次开机后,从这个BLOCK读你的数据。
IAP的完结
一般在用户需求完结IAP功用时,即用户程序运转中作本身的更新操作,需求在规划固件程序时编写两个项目代码,榜首个项目程序不履行正常的功用操作,而仅仅经过某种通讯管道(如USB、USART)接纳程序或数据,履行对第二部分代码的更新;第二个项目代码才是真实的功用代码。这两部分项目代码都一起烧录在User Flash中,当芯片上电后,首要是榜首个项目代码开端运转,它作如下操作:
1)查看是否需求对第二部分代码进行更新
2)假如不需求更新则转到4)
3)履行更新操作
4)跳转到第二部分代码履行
榜首部分代码有必要经过其它手法,如JTAG或ISP烧入;第二部分代码能够运用榜首部分代码IAP功用烧入,也能够和榜首部分代码一道烧入,今后需求程序更新是再经过榜首部分IAP代码更新。
关于STM32来说,因为它的中止向量表坐落程序存储器的最低地址区,为了使榜首部分代码能够正确地呼应中止,一般会组织榜首部分代码处于Flash的开端区域,而第二部分代码紧随其后。
在第二部分代码开端履行时,首要需求把CPU的中止向量表映像到自己的向量表,然后再履行其他的操作。
假如IAP程序被损坏,产品有必要返厂才干从头烧写程序,这是很费事而且十分耗费时刻和金钱的。针对这样的需求,STM32在对Flash区域实施读保护的一起,自动地对用户Flash区的开端4页设置为写保护,这样能够有效地确保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&TImes;×系列单片机片内带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进去,然后就能够用了。