单片机的ISP 与 IAP
IAP: in applicatin programming
但两者的操作方式,结果和应用场合有什么区别
什么是ISP:
用写入器将code烧入,不过,芯片可以在目标板上,不用取出来,在设计目标板的时候就将接口设计在上面,所以叫"在系统编程",即不用脱离系统;
什么是IAP:
在应用编程,有芯片本身(或通过外围的芯片)可以通过一系列操作将code写入,比如一款支持Iap的单片机,内分3个程序区,1作引导程序区,2作运行程序区,3作下载区,芯片通过串口接收到下载命令,进入引导区运行引导程序,在引导程序下将new code内容下载到下载区,下载完毕并校验通过后再将下载区内容复制到2区,运行复位程序,则Iap完成;
1,ISP 程序升级需要到现场解决,不过好一点的是不必拆机器了;
2,IAP 如果有网管系统的话,用网管下载一切搞定,人不用跑来跑去,
这可能是他们的优点或应用吧
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的实现
1)检查是否需要对第二部分代码进行更新
2)如果不需要更新则转到4)
3)执行更新操作
4)跳转到第二部分代码执行
对于STM32来说,因为它的中断向量表位于程序存储器的最低地址区,为了使第一部分代码能够正确地响应中断,通常会安排第一部分代码处于Flash的开始区域,而第二部分代码紧随其后。
在第二部分代码开始执行时
单片机ISPIA 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)