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?相关推荐

  1. Stm 32 IAP 在线 升级IAP 的 操作

    (扩展-IAP主要用于产品出厂后应用程序的更新作用,考虑到出厂时要先烧写IAP  再烧写APP应用程序要烧写2次增加工人劳动力基础上写了"STM32 IAP+APP ==>双剑合一&q ...

  2. 电子产品如何使用IAP方式升级程序

    目录 1.ICP.ISP和IAP的概念 2.IAP升级程序的原理 3.IAP升级程序的流程 4.IAR环境下IAP的实现 4.1.BootLoader程序设计 4.2.User Application ...

  3. 系统编程(ISP)与应用编程(IAP)的区别!

    系统编程(ISP)与应用编程(IAP)的区别! 1.定义 (1)系统编程(ISP) ISP在系统编程是指电路板上的空白器件可以编程写人最终用户代码,而不需要从电路板上取下器件.已经编程的器件也可以用I ...

  4. ISP、IAP、ICP的区别!

    ISP.IAP.ICP烧写方式的区别 ISP:In System Programing          在系统编程 IAP:In applicating Programing    在应用编程 IC ...

  5. 关于STM32的IAP与APP互相跳转

    关于STM32的IAP与APP互相跳转 之前做了一个不带系统的IAP与APP互相跳转,在网上找了资料后,很顺畅就完成了,后来在IAR集成开发环境下,IAP无系统,APP用UCOS系统做互相跳转出现了很 ...

  6. 基于STM32系列芯片的 IAP实现的探索

    基于STM32系列芯片的 IAP实现的探索 什么是IAP? 如何实现IAP? 第一步:学习官方源代码 第二步:了解STM32芯片基本硬件参数 第三步.搞清除STM32内置Flash 第四步. STM3 ...

  7. STM32 之八 在线升级(IAP)超详细图解 及 需要注意的问题解决

    IAP 是啥   IAP( In Application Programming)即在应用编程,也就是用户可以使用自己的程序对MCU的中的运行程序进行更新,而无需借助于外部烧写器.其实ST官网也给出了 ...

  8. stm32之iap实现应用(基于串口,上位机,详细源码)

    开发环境:Window 7 开发工具:Keil uVision4 硬件:stm32f103c8t6 篇幅略长,前面文字很多,主要是希望能让小白们理解,后面就是实现步骤,包括实现的代码. 在研发调试的时 ...

  9. IAP:物联网终端软件升级技术

    本文分享自华为云社区<物联网终端软件升级技术---IAP(因芯片类型较多,本文仅针对STM32的Cortex-M系列)>,原文作者:o0龙龙0o . 现在升级已经成为IoT领域边缘升级的基 ...

  10. c语言串口通信_STM32串口IAP分享

    点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间查看编程笔记! 什么是IAP? IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对Use ...

最新文章

  1. [SDOI2017]硬币游戏
  2. 网络主机监控-nagios应用漫谈(三)
  3. 十天精通CSS3学习笔记 part2
  4. jQuery1.9+中删除了live以后的替代方法
  5. [翻译]pytest测试框架(一)
  6. 关于Django中,实现序列化的几种不同方法
  7. LOAM_velodyne学习(四)
  8. 身边的设计模式(三):抽象工厂 与 依赖注入
  9. (pytorch-深度学习系列)pytorch构造深度学习模型-学习笔记
  10. 【Python笔记】pygame 游戏框架
  11. oracle修改用户的登录密码
  12. JavaScript-遍历数组
  13. 怎么修改chrome浏览器的字体
  14. IOS网络编程常用的代码
  15. 简易计算器app的制作
  16. java线上问题定位神器 Arthas入门
  17. 博途PLC的模糊PID(Matlab “fuzzy“工具箱使用介绍)
  18. 国产操作系统逐步强大,Linux操作系统成为主流
  19. 大象-PHPHub 第三方 Android 客户端
  20. 《小家,越住越大1、2》读书笔记

热门文章

  1. Python调用大华SDK:实现视频监控系统
  2. 删除下拉框只找23火星软件_下拉框优化首选23火星软件
  3. NB-IoT和eMTC有什么区别?
  4. 了解vm.swappiness
  5. qt窗体设置圆角后出现黑色的直角
  6. 接入GoogleAnalytics 统计
  7. 架构整洁之道(三)-解耦合与复用
  8. 跨越财富鸿沟:技术写作带来的无限可能 —— 怎样通过技术写作实现财富自由?
  9. 阿里云oss(图片存储)--fastdfs (视频存储)
  10. lms c语言,LMS算法实现自适应滤波器(C语言版)