0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍通过IAP的在线升级方法

AGk5_ZLG_zhiyua 2018-02-05 14:02 次阅读

电子产品出厂前,可以通过离线烧录器,烧录夹具,或者用在线烧录器通过预留的烧录接口轻松将应用代码下载MCU中。但是,如果产品已售出或不在研发端,又要怎样升级程序呢?今天,我们就来介绍通过IAP的在线升级方法。

先来理解两个概念ISP和IAP:

1、ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码, 而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程;

2、IAP(In-Application Programming) 指MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。

介绍通过IAP的在线升级方法

IAP编程的实现办法

实现IAP功能,需要在设计产品的时候编写两个程序,第一部分程序是不执行正常的功能的,只是通过某种通信方式(如USBUart)接收固件或新的应用程序,执行对第二部分代码的更新,我们称之为Bootloader;第二部分代码是用户的应用代码,实现产品的真正功能。第一部分代码必须事先烧写(通过烧录器或仿真器)到单片机内,第二部分代码可以通过烧录器或仿真器烧录,也可以使用第一部分的IAP功能烧录。当芯片上电后,首先运行第一部分代码,如果不需要更新,则跳转到第二部分代码执行;如果检测到需要更新,则执行更新程序,更新完成后跳转到第二部分代码执行。以STM32为例,如下图:

介绍通过IAP的在线升级方法

如上图例子,Bootloader的起始地址存放在0x08000000(也是STM32芯片Flash的起始地址),程序由此执行后,跳转至复位中断入口向量地址,随后跳转到Bootloader的main函数入口, 当检测到需要升级程序,执行更新第二部分应用程序代码到地址为0x08000000 + N的Flash区域,更新完成后,跳转至第二部分应用程序的复位中断向量地址(0x08000004 + N +M), 随后跳转至第二部分应用程序的main函数,在main函数的运行过程中,如果CPU遇到一个中断请求,PC指针强制跳转至Bootloader的中断向量表(上图中0x08000004),而不是第二部分的中断向量表,程序再根据我们设置的中断向量表偏移量,跳转到对应中断源新的中断服务程序中执行,执行完成后返回第二部分应用程序的main函数。

需要注意的地方是:第一部分程序(Bootloader)跳转的地址和第二部分应用程序的起始地址必须要保持一致,相应的中断向量表也要修改,否则程序无法正确运行。

总结

通过IAP在应用编程,在一些产品发布后可以方便地通过预留的通信口(如USB,串口,网络端口或无线传输)对产品中的固件程序进行更新升级。在使用IAP功能之前,芯片必须先通过烧录工具将实现IAP功能的Bootloader烧录到单片机内。如果Bootloader程序被破坏,产品必须返厂才能重新烧写程序,这是很麻烦并且非常耗费时间和金钱的。针对这样的需求,STM32在对Flash区域实行读保护的同时,自动地对用户Flash区的开始4页设置为写保护,这样可以有效地保证IAP程序区域不会被意外地破坏。

ZLG致远电子的P800isp是一款多通道在线脱机烧录器,用户只需将产品的烧录接口预留出来,使用P800isp即可轻松对程序进行一次烧录、二次更新,即使产品Bootloader被破坏,也能轻松解决更新问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16009

    浏览量

    343523
  • ISP
    ISP
    +关注

    关注

    6

    文章

    457

    浏览量

    50832

原文标题:使用IAP在应用编程轻松更新固件

文章出处:【微信号:ZLG_zhiyuan,微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32 IAP在线升级

    STM32很强大的一个功能是支持IAP在线升级IAP(In-Application Programming),即在“应用程序中编程 ",通俗的来将是程序自己可以往程序存储器里写数据或
    发表于 03-09 15:56

    IAP在线升级

    IAP在线升级可以是芯片更新程序脱离烧录器等专用工具,可以使用串口、网络等外部通用通信方式来达到升级的目的,方便后续程序升级更新。 STM3
    发表于 08-04 07:01

    IAP在线升级

    flash。IAP在线升级的确是个好东西,对于那些已经安装好的设备来说,真是一大利器。IAP的核心理论其实比较简单:总共有两个程序,一个叫bootloader,一个叫app。其中bo
    发表于 08-06 07:07

    IAP在线升级是什么

    IAP在线升级是什么?怎样去设计应用程序?
    发表于 10-19 09:27

    如何去实现stm32的IAP在线升级

    如何去实现stm32的IAP在线升级呢?需要注意哪些事情呢?
    发表于 11-29 07:35

    如何实现STM32的在线升级IAP功能?

    如何实现STM32的在线升级IAP功能?
    发表于 11-30 06:22

    怎样通过IAP来对STM32进行在线升级

    STM32的启动流程是怎样的?怎样通过IAP来对STM32进行在线升级呢?
    发表于 11-30 07:39

    串口蓝牙IAP在线升级的相关资料推荐

    串口蓝牙IAP在线升级转载:https://www.it610.com/article/1279095852547194880.htm(https://www.it610.com/article
    发表于 12-10 06:55

    IAP在线升级相关资料分享

    最近做了一个工程需要用到IAP在线升级这个功能,当时在学的时候,了解到IAP的功能当时就觉得很鸡肋,明明有烧写器干嘛那么费事,现在觉得当时确实浅薄了,
    发表于 12-13 08:01

    STM8在线升级:关于IAP与APP互相跳转的实现

    详细介绍STM8中,实现在线升级时,IAP与APP互相跳转的过程。
    发表于 05-04 16:10 33次下载

    ARM在线升级的应用IAP代码

    ARM嵌入式应用程序架构设计实例精讲--ARM在线升级的应用IAP代码
    发表于 07-08 11:08 6次下载

    ARM在线升级的应用IAP代码

    电子专业单片机相关知识学习教材资料——ARM在线升级的应用IAP代码
    发表于 09-13 17:23 0次下载

    STM32三种启动模式以及IAP在线升级

    stm32 iap在线升级
    发表于 01-13 14:28 16次下载

    关于在线升级IAP的基础知识

    本文主要讲解在线升级IAP的基础知识, 主要是针对IAP 从原理分析, 分区划分, 到代码编写和实验验证等过程阐述这一过程. 帮助大家加深对在线
    的头像 发表于 05-31 17:24 2262次阅读

    AT32 MCU如何使用IAP通过USART实现对固件的在线升级更新

    AT32 MCU如何使用IAP通过USART实现对固件的在线升级更新
    的头像 发表于 09-19 16:51 1171次阅读
    AT32 MCU如何使用<b class='flag-5'>IAP</b><b class='flag-5'>通过</b>USART实现对固件的<b class='flag-5'>在线</b><b class='flag-5'>升级</b>更新