什么是IAP?如何实现IAP?

发布者:水手谷水手最新更新时间:2015-04-14 来源: eechina关键字:IAP  程序运行 手机看文章 扫描二维码
随时随地手机看文章
是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。
 
通常在用户需要实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信管道(如USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。这两部分项目代码都同时烧录在User Flash中,当芯片上电后,首先是第一个项目代码开始运行,它作如下操作:
 
1)检查是否需要对第二部分代码进行更新
2)如果不需要更新则转到4)
3)执行更新操作
4)跳转到第二部分代码执行
 
第一部分代码必须通过其它手段,如JTAG或ISP烧入;第二部分代码可以使用第一部分代码IAP功能烧入,也可以和第一部分代码一道烧入,以后需要程序更新是再通过第一部分IAP代码更新。
 
对于STM32来说,因为它的中断向量表位于程序存储器的最低地址区,为了使第一部分代码能够正确地响应中断,通常会安排第一部分代码处于Flash的开始区域,而第二部分代码紧随其后。
 
在第二部分代码开始执行时,首先需要把CPU的中断向量表映像到自己的向量表,然后再执行其他的操作。
 
如果IAP程序被破坏,产品必须返厂才能重新烧写程序,这是很麻烦并且非常耗费时间和金钱的。针对这样的需求,STM32在对Flash区域实行读保护的同时,自动地对用户Flash区的开始4页设置为写保护,这样可以有效地保证IAP程序(第一部分代码)区域不会被意外地破坏。
 
ST的网站上有使用USART实现IAP的例子,各位可以参考这个例子和相应的手册。
 
应用笔记 AN2557 - STM32F10xxx in-application programming using the USART
例程:AN2557 - STM32F10xxx in-application programming using the USART
关键字:IAP  程序运行 引用地址:什么是IAP?如何实现IAP?

上一篇:typedef用法 与#define
下一篇:时钟门控技术(Clock Gating)

推荐阅读最新更新时间:2024-03-16 13:58

LZW压缩算法在终端程序远程更新中的应用
引 言 配变监测终端(即配电变压器监测终端,distributiontransformer monitoring terminal),通过有线或无线的方式与主站进行通信,将采集、计算、分析后的数据上传到主站,实现远程抄表、线损分析、电能质量监测、防窃电以及故障诊断等功能,从而保证了配变监测终端的安全运行,提高了供电企业的管理水平,产生了很好的经济效益和社会效益。同时,配变监测终端作为嵌入式终端产品,当安装的设备程序出现缺陷,或者用户提出新的需求时,需要对终端程序进行远程更新,以保证终端运行的正确性。 本文采用Philips公司的32位微处理器LPC2378进行配变监测终端的开发,并利用该芯片自带的IAP功能实现了终端程
[嵌入式]
STM32 IAP(在线更新程序)的使用关键点
所谓IAP其实就相当于一个小小的bootloader 用来更新程序的 很多产品基本都是程序做好后就直接在产线烧录一次就OK了,但是,但是BUG有时候是无可避免的,经常有产品装好后又要重新拆外壳 取下板子重新上烧录架烧的惨痛经历,所以,这种情况下IAP就很有必要了,只要一个对外的接口就能在线更新了,常用的是USB口,当然要是一定要用串口的话也是可以的 硬件上麻烦一些而已,下面就是例程 typedef void (*pFunction)(void); pFunction Jump_To_Application; unsigned long JumpAddress; if(!Check_Whether_Enter
[单片机]
STM32 <font color='red'>IAP</font>(在线更新<font color='red'>程序</font>)的使用关键点
STM32 | 串口IAP实例分享
什么是IAP? IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。 在重新编程过程中可以使用任意类型的通信协议,如UART、I2S、SPI等。这篇笔记分享的是使用UART方式IAP。 串口IAP实验 先理一理流程(本实验是以STM32F103ZET6为例): 1、实验说明 做这个实验需要准备两个keil工程,一个工程用于编写IAP程序,另一个工程用于编写我们的应用程序(要实现某些功能的程序),这里我们以一个点灯程序为例。最终,两份工程编译出来的可
[单片机]
STM32 | 串口<font color='red'>IAP</font>实例分享
基于MSP43F149系列单片机的IAP功能设计
  TI公司的MSP430系列单片机是具有很高实用性价值的产品,在许多领域得到广泛的应用,特别是它的超级低功耗特性,是目前所有其他单片机无法比拟的。IAP(InApplication Programming)是用户自己的程序在运行过程中对用户Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。   要实现IAP功能,通常需要在设计固件程序时编写两个项目代码:第一个项目程序不执行正常的功能操作,而只是通过某种通信管道(如USB、USART、一些无线设备)接收程序或数据(可执行HEX文件),执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。这两部分项目代码同时烧录在
[单片机]
基于MSP43F149系列单片机的<font color='red'>IAP</font>功能设计
STM32的在应用编程(IAP)快速学习
1.IAP介绍 IAP(In Application Programming)即在应用编程,IAP 是用户自己的程序在运行过程中对 Flash 部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。实现 IAP 功能时,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信方式(如 USB、USART )接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。这两部分项目代码都同时烧录在Flash 中,当芯片上电后,首先是第一个项目代码开始运行,它作如下操作: 1.检查是否需要对第二部分代码进行更新 2.如果不需要更新则转到4
[单片机]
STM32的在应用编程(<font color='red'>IAP</font>)快速学习
单片机中一个程序运行过程
单片机中一个程序的运行过程分为取指令,分析指令和执行指令几个步骤。 取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。 分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。 下面我们将举个实例来说明指令的执行过程: 开机时,程序计算器PC变为00
[单片机]
单片机中一个<font color='red'>程序</font>的<font color='red'>运行</font>过程
嵌入式操作系统休眠唤醒后自动运行程序的方法
为了提高系统的启动速度,通常采用基于休眠技术的方式来实现嵌入式系统的快速启动。例如,在一些数字电视中,采用休眠技术以后的启动时间要比原来的启动时间约快1/3。但基于休眠技术的启动方法有其不足之处:在保存内存内容时只能把内存中的信息以快照的形式保存到磁盘或其他外部存储设备,原来系统内某些正在运行的动态进程及进程本身的执行过程不能被完全保存下来,从而导致系统重新启动后此部分进程不能正常运行;基于休眠技术的启动方式一旦以快照的形式保存后其里面的内容将无法改动。基于此,本文运用一种新方法,实现了基于休眠的嵌入式操作系统启动后,可自动运行任何形式的目标脚本和应用程序。 1 休眠唤醒后程序自动运行的方法 最新的Linux2.6内核都支
[嵌入式]
STM32F051 IAP源码分享
IAP需要有两个工程,第一个是Bootloader,第二个是Application 同时将这两份程序放在mcu的flash里的不同位置,启动时自动进入bootloader(可选择)进行iap,成功后跳转至application。 那么IAP问题简化成三个步骤, Step1:做Bootloader工程 Step2:做Application工程 Step3:烧进Flash的不同位置 Step1:需要做这些事情: 1:初始化IAP相关外设 2:下载文件(ymodem协议) 3: 写入Application程序存储空间 鸡: IAP_Init(); SerialDownload(); 具体实现: void I
[单片机]
STM32F051 <font color='red'>IAP</font>源码分享
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved