您的位置 首页 方案

单片机的ISP 与 IAP

ISP:insystemprogramming,在系统编程IAP:inapplicatinprogramming在应用编程但两者的操作方式,结果和应用场合有什么区别什

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、SFCF[1,0];Philips为一段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程序(榜首部分代码)区域不会被意外地损坏。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/259423.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部