今天小编要和大家分享的是IAP概述 IAP目的,接下来我将从IAP的概述,IAP的目的,IAP的实现,IAP与ISP的区别与联系,这几个方面来介绍。
IAP(In Appplication Program),即在应用中可编程。顾名思义,就是在系统运行的过程中动态编程,这种编程是对程序执行代码的动态修改,而且毋须借助于任何外部力量,也毋须进行任何机械操作。这一点有别于isp。通俗点讲,也就是说程序自己可以往程序存储器里写数据或修改程序。
IAp的概述
IAp(In-Applicationprogramming)指MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。在应用编程(IAp)是用户的应用代码对片内Flash存储器进行擦除/编程的方法。这种方式的典型应用就是用一小段代码来实现程序的下载,实际上单片机的ISp功能就是通过IAp技术来实现的,即片子在出厂前就已经有一段小的boot程序在里面,片子上电后,开始运行这段程序,当检测到上位机有下载要求时,便和上位机通信,然后下载数据到数据存储区。
IAp的目的
利用iap功能实现程序的在线下载。例如,对于一个比较大的装配工厂而言,效率与质量是摆在首位的。当设备需要更改程序时,工厂不可能停下所有的设备,然后再烧程序进去,接着又开始工作。因为设备的启动与停止不仅消耗了大量的时间,同时对设备的损耗也是非常大的。在这种情况下,单片机的ISp功能便可发挥它的巨大作用了。它能在程序执行时,更改程序,而不需要停止当前程序后再烧写进去。不仅如此,单片机的iap功能还可实现程序执行的实际值向程序代码设定值的调节。因为程序在执行时,可能执行的参数值与代码中设定的值不一致。这样我们可以通过程序的方法改变程序。通过利用单片机的iap功能,我们可以在程序中加这样的语句。如果执行的参数值与代码中设定的值一致,则不执行更改程序。
IAp的实现
具备在应用中编程IAp功能的单片机,其程序存储器必须是可以重复烧写编程的版本(比如FLASH)。可以用于具备远程遥控软件版本升级或者参数修改的产品项目之中(比如远程抄表、用户端电话计费等系统的远程费率参数和算法程序修改);也可以应用于具备自编程功能(免用微机和烧写器)的单片机学习机、单片机单板机、实验板、演示板、教学模块等各种学习和实验工具之中。对于处在同一个存储器空间的FLASH程序存储器,不能同时扮演“被烧写存储器”和“取指令存储器”的双重角色。为了解决这个矛盾,不同厂家的单片机采用了不同的解决方案,比如:
①可以将FLASH程序存储器分成地址有映射关系的两个区,分别由各自的电荷泵提供烧写电压。当烧写一个区时,该区的电荷泵工作,同时执行存放在另一个区的指令。例如,SST(SiliconStorageTechnology)公司利用他的SuperFlash技术研制的FlashFlex51单片机系列,各个型号片内分别带有20KB、36KB或68KB可多次编程的程序存储器。该存储器又分为主存储区和次存储区。各个型号的主存储区分别为16KB、32KB或64KB,次存储区则统一为4KB。
②可以将单片机的程序存储器地址空间分为ROM区和FLASH区,ROM区在出厂之前就已经固化有烧写专用程序,FLASH区作用户程序存放区,这样一来,即使在烧写FLASH的同时,也不会影响对于ROM中程序的执行。MOTOROLA公司推出的MC68HC908系列单片机中采用的就是这种解决方案。
③pIC16F87X系列单片机中,采用了不同的解决方案。FLASH程序存储器并不分区,在对其进行烧写并且电源自动切换到电荷泵供电时,CpU自动停顿而等待。在一个单元烧写操作完毕,FLASH工作电压自动切换到正常值时,CpU才继续执行FLASH中的烧写专用程序或用户程序。
④在数据存储器RAM和程序存储器FLASH两种存储器统一编址的单片机中,还可以采用的另一种方案是,在准备修改FLASH区中的用户程序之前,先把烧写专用程序拷贝到RAM区,然后跳转到RAM区去执行该程序,实现对FLASH程序存储器的烧写操作。在烧写完成之后再跳回到FLASH存储器执行正常的用户程序。微芯公司新近推出的高性能pIC18C601/801单片机采用的就是这种解决方案。MOTOROLA公司推出的MC68HC908系列单片机的某些型号,也可以采用这种解决方案。
IAp与ISp的区别与联系
ISp:用写入器将code烧入,不过,芯片可以在目标板上,不用取出来,在设计目标板的时候就将接口设计在上面,所以叫"在系统编程",即不用脱离系统;
IAp:在应用编程,有芯片本身(或通过外围的芯片)可以通过一系列操作将code写入,比如一款支持Iap的单片机,内分3个程序区,1作引导程序区,2作运行程序区,3作下载区,芯片通过串口接收到下载命令,进入引导区运行引导程序,在引导程序下将newcode内容下载到下载区,下载完毕并校验通过后再将下载区内容复制到2区,运行复位程序,则Iap完成;
应用场合:1,ISp程序升级需要到现场解决;2,IAp如果有网管系统的话则可以直接解决。典型IAp:IC卡电话机内含V.xxMODEM芯片,MCU自带引导区,可远程下载更新程序。
在线编程目前有两种实现方法:在系统编程(ISp)和在应用编程(IAp)。ISp一般是通过单片机专用的串行编程接口对单片机内部的Flash存储器进行编程,而IAp技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。ISp的实现一般需要很少的外部电路辅助实现,而IAp的实现更加灵活,通常可利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器。
ISp,InSystemprograming
主要是指代芯片的烧写方式,以往写片子需要把片子拿下来,离开电路,用编程器烧,换句话说,芯片不能不脱离应用系统进行写入。
ISp主要针对这个问题,使用JTAG或者串行口(MCU内部有BootLoader,通过指定的方式激活之,它可以和pC或其它上位机通过串口联系,不用使单片机离开应用系统而更新内部的程序/设置)进行程序的烧写操作。
因此,具有ISp功能的MCU可以不使用编程器进行编程。当然,实现ISp可能需要一些硬件电路支持,具体的在数据手册中有说明。
IAp,InApplicationprograming
单片机内部具有一些可擦写的非易失存储器,如Flash。在单片机独立运行时,不具备IAp功能的单片机并不能对Flash的数据进行修改,比如,对自身的某一个模块的代码,数据进行修改。具备了IAp功能的MCU,能够通过使用各自公司开发的技术,对于自身进行修改。
简言之:ISp=>修改MCU内部数据需要有外部介入;
IAp=>修改MCU内部数据可以不用外部介入。
二者可以说是数据更新的一种实现机制。
一般具备ISp功能后,就不需编程器,而是使用下载线进行编程工作。但是不是说它们就一定不支持编程器了,具体型号具体分析。是否需要仿真器进行仿真和是否具备ISp和IAp没有必然的联系。只不过具备了IAp功能,可以在MCU内写入监控程序,模拟一个仿真器,当然,这个监控程序是要消耗资源的,和使用硬件的仿真器还有一定的差异。
关于IAP,电子元器件资料就介绍完了,您有什么想法可以联系小编。