原创 ISP与IAP与单片机复位流程

2009-8-8 11:31 4331 7 8 分类: MCU/ 嵌入式

51之类简单低速的单片机,程序存放在FLASH中,程序运行时直接从FLASH中取代码,从RAM中取数据。复位以后从FLASH地址0000H开始取程序代码运行,如果是汇编程序,程序初始地址要安排好,在0000H处要跳到主程序入口。如果是C程序,则会有启动代码(自己加的或者是编译器默认的),链接器重新定位各文件的代码在FLASH中的存放地址,程序员大可不必操心。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


现在大多数单片机都有了ISP/IAP功能,单片机在复位时会有些附加动作。


为了实现ISP/IAP功能,芯片厂商都会在芯片内部固化一段BOOT装载程序,用来提供ISP/IAP所需的编程接口,对片内FLASH编程。


ISP


复位时,BOOT装载程序会先检测ISP条件是否成立,若成立,则在编程状态下经过专用接口(UARTSPI,JTAG等),由外部设备使用预定协议将程序代码写入Flash。然后从FLASH地址的起始地址开始读取代码运行。若ISP条件不成立,则直接运行用户代码。


IAP:


IAP是用户自己的BOOT程序,调用厂家BOOT装载程序的IAP接口,将各种途径得到的数据(在RAM中存储),写入到FLASH中的过程。可以是用来更新程序,或者存储不易变更的数据。


复位后,厂家BOOT装载程序先检测ISP条件,然后从FLASH中取用户代码。用户代码中,包含用户BOOT程序(BOOT程序不一定在最开始工作)。如果IAP条件成立,则用户BOOT程序调用IAP接口将RAM中的数据写入FLASH中。


IAP用来实现程序更新或者数据存时,要根据具体功能合理安排用户BOOT程序的运行时间和规则。


总结:


复位――厂家BOOT装载程序――ISP――用户程序(起始位置)――用户BOOT程序――IAP接口――IAP――用户程序


下划线部分表示非必须步骤。

文章评论1条评论)

登录后参与讨论

用户518079 2009-8-11 10:50

学习了!
相关推荐阅读
用户1404984 2009-08-08 11:30
存储器映射寄存器--新解
dsp中有句话“存储器映射寄存器”,英语是 memory mapped register 不过这个东西并非DSP独有,单片机和其他32位嵌入式控制器都有此概念。<?xml:namespace p...
用户1404984 2009-01-12 12:33
运放单电源,双电源供电使用方法
       运放作为模拟电路的主要器件之一,在供电方式上有单电源和双电源两种,而选择何种供电方式,是初学者的困惑之处,本人也因此做了详细的实验,在此对这个问题作一些总结。       首先,运放分为...
用户1404984 2008-12-28 16:28
关于示波器地线的问题
        用信号发生器给板子输入信号,则示波器一般只能用于测试电路上某个节点和地之间的波形,如果测两个节点之间的波形,则探头上的地线可能会将地线后面其余的电路短路掉,所以,要想测两个节点间的波形...
用户1404984 2008-12-28 16:24
电容降压原理之我见
电容降压原理之我见<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />最近见到几张用电容...
用户1404984 2008-11-21 13:22
关于阻抗匹配的理解(转发)
         阻抗匹配是指信号源或者传输线跟负载之间的一种合适的搭配方式。阻抗匹配分为低频和高频两种情况讨论。       我们先从直流电压源驱动一个负载入手。实际的电压源总是有内阻的,我们可以把...
我要评论
1
7
关闭 站长推荐上一条 /2 下一条