1、ISP:在系统编程,一般目标芯片内包含了专用的接口电路,上位机发送编程命令码及编程控制信息后由芯片硬件自动完成编程。比如通过JTAG口升级就是其中的一种,现在推出的许多新的芯片比如ARM都采用此模式。ATMEL公司的AT89S5x系列的单片机的下载模式虽然不属于JTAG模式,但很类似,应该属于ISP类。
2、IAP:一般叫做在应用编程。MCS-51系列单片机中采用比较多的sst、stc两家公司的单片机就属于这种模式,与上面的模式是有区别的。
下面重点介绍一下IAP的工作流程:
以SST公司的89E564为例:FLASH分为2块,一块64K,就是我们应用程序要使用的程序空间;另一块是8K,现在出厂时一般都预置了自编程的软件代码,这部分代码与上位机的下载软件通讯,获取机器码内容,然后实现对64K的编程 *** 作。这8K的软件用的不是专门的指令,都是51系列标准的指令,只是增加了一些特殊功能寄存器用于实现自编程。
芯片上电启动后,程序首先在8K的程序空间中运行(其实此时相当于89C52芯片),程序主要工作流程如下:
第一步、首先检测串口有无上位机传递过来的编程命令,有的话应答,然后开始自编程 *** 作,编程结束后重新启动;
第二步、如果串口没有编程命令,则检测64K区是否存在有效的机器码。如果有则跳转到64K区正式开始执行应用程序,否则会在8K区中等待,准备接收上位机传送过来的编程命令。
对64K区的编程 *** 作,8k区中的软件只要将其代码从串口接收过来,送到相应的寄存器中,按照要求循环编程就可以了。所以这部分软件是可以修改的,比如某种设备有IC卡接口,就可以修改这8K的程序,实现通过IC卡升级软件的功能,只是这种方式第一次烧写时需要编程器,将8K区的出厂预装程序换成用户自己需要的升级程序。
归纳一下二者:
ISP编程属于纯硬件 *** 作,只要FLASH的物理特性未损坏,就可以实现串口升级,但升级模式是固定的。
IAP模式属于属于软件 *** 作,如果8K区并无物理损坏但软件有问题,就只能使用编程器来编程,无法实现串口升级。但正是由于这种可更改性,可以扩展多种升级方式,更灵活。其实物理损坏的可能性不大,所以我个人认为还是IAP更好些。
简单说,大概流程是:电脑端通过下载器软件或叫程序烧录工具(如STC-ISP等),把已经编译好了的程序数据文件(hex)以串口通信方式,向单片机发送数据;
而单片机本身固化有所谓都片内烧录程序(ISP),在单片机复位时,先运行一段ISP代码,就是去检测特定引脚状态,以判断是继续运行ISP,还是转去运行用户先前已经烧录好都程序;
如果检测到是用户需要烧录新数据,就继续运行ISP,并接收电脑发送来的数据,按要求把数据烧录到相应都地方;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)