您好,欢迎来到维库电子市场网 登录 | 免费注册

IAP
阅读:16432时间:2011-06-07 11:33:02

  IAP(In Appplication Program),即在应用中可编程。顾名思义,就是在系统运行的过程中动态编程,这种编程是对程序执行代码的动态修改,而且毋须借助于任何外部力量,也毋须进行任何机械操作。这一点有别于isp。通俗点讲,也就是说程序自己可以往程序存储器里写数据或修改程序。

概述

  IAP(In-Application Programming) 指MCU可以在系统中获取新代码并对自己重新编 程,即可用程序来改变程序。在应用编程(IAP)是用户的应用代码对片内Flash 存储器 进行擦除/编程的方法。这种方式的典型应用就是用一小段代码来实现程序的下载,实际 上单片机的ISP功能就是通过IAP技术来实现的,即片子在出厂前就已经有一段小的boot程 序在里面,片子上电后,开始运行这段程序,当检测到上位机有下载要求时,便和上位机 通信,然后下载数据到数据存储区。

目的

  利用iap功能实现程序的在线下载。例如,对于一个比较大的装配工厂而言,效率与 质量是摆在首位的。当设备需要更改程序时,工厂不可能停下所有的设备,然后再烧程序 进去,接着又开始工作。因为设备的启动与停止不仅消耗了大量的时间,同时对设备的损 耗也是非常大的。在这种情况下,单片机的ISP功能便可发挥它的巨大作用了。它能在程 序执行时,更改程序,而不需要停止当前程序后再烧写进去。 不仅如此,单片机的iap功能还可实现程序执行的实际值向程序代码设定值的调节。因 为程序在执行时,可能执行的参数值与代码中设定的值不一致。这样我们可以通过程序的 方法改变程序。通过利用单片机的iap功能,我们可以在程序中加这样的语句。如果执行 的参数值与代码中设定的值一致,则不执行更改程序。

实现

  具备在应用中编程IAP功能的单片机,其程序存储器必须是可以重复烧写编程的版本(比如FLASH)。可以用于具备远程遥控软件版本升级或者参数修改的产品项目之中(比如远程抄表、用户端电话计费等系统的远程费率参数和算法程序修改);也可以应用于具备自编程功能(免用微机和烧写器)的单片机学习机、单片机单板机、实验板、演示板、教学模块等各种学习和实验工具之中。对于处在同一个存储器空间的FLASH程序存储器,不能同时扮演“被烧写存储器”和“取指令存储器”的双重角色。为了解决这个矛盾,不同厂家的单片机采用了不同的解决方案,比如:

  ①  可以将FLASH程序存储器分成地址有映射关系的两个区,分别由各自的电荷泵提供烧写电压。当烧写一个区时,该区的电荷泵工作,同时执行存放在另一个区的指令。例如,SST(Silicon Storage Technology)公司利用他的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系列单片机的某些型号,也可以采用这种解决方案。

与ISP的区别与联系

  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,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内写入监控程序,模拟一个仿真器,当然,这个监控程序是要消耗资源的,和使用硬件的仿真器还有一定的差异。

维库电子通,电子知识,一查百通!

已收录词条45649