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

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

3天内不再提示

APM32F103_IAP的简单实现_固件传输

Geehy极海半导体 来源:21ic 作者:21ic 2022-12-07 14:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言

最近拿到了一块APM32F103VC的MINI开发板,在学习了一段时间后发现其有非常丰富的外设资源,主频能达到96Mhz。最近在项目中使用到了IAP(In Application Programming)功能,特来评估一下APM32F103的IAP实现方式。

在应用编程IAP(In-Application Programming)是应用在Flash程序存储器的一种编程模式。它可以在应用程序正常运行的情况下,通过调用特定的IAP程序对另外一段程序Flash空间进行读/写操作,甚至可以控制对某段、某页甚至某个字节的读/写操作,这为数据存储和固件的现场升级带来了更大的灵活性。

话接上回,我们学习了如何进行对目标Flash进行编程后,基本已经完成了IAP的知识储备,随时可以完成IAP功能。打个比方,会Flash编程,就是会向一个池塘里面倒水了,但是现在有一个问题,我们往池塘倒的水从哪里来?即我们的程序数据从那里给到我们。

那我们本章节就我们程序的来源以及处理的一些方式进行一起探讨。

1 “水”的来源

我们的固件可以保存在云端,也可以保存在我们的PC上。这个主要取决于我们的应用场景。若我们的产品主要在客户的手上,为了考虑客户的使用便捷性,将固件保存在云端,然后在一个合适的时间推送至我们的产品进行升级,这是一种方式。若考虑到产品的稳定性,那我们可以要求客户一定要在特定的场景下进行固件升级,如需要接入升级的主机设备(如PC),才能进行固件升级。

ea556510-75e5-11ed-8abf-dac502259ad0.png

2 承载“水”的“路径”

既然我们决定了我们程序的下发的源头,我们一般也会选择使用那种方式了传输我们的固件数据。就像运水到我们的池塘,是用空运还陆运还是海运等方式。如远程升级的方式可以选择以太网、WIFI、蓝牙等方式。若使用有线传输的方式我们可以选择USART、I2C、SPI、USB等。

升级方式的选择也受限于我们的主控MCU,如APM32F103VCT6就没有WIFI、蓝牙等功能,所以我们可以选择USART、I2C、SPI、USB等,若我们选择APM32F407/107我们也可以选择使用以太网。

3 运输“水”的方式

就像运水到我们池塘,我们选择使用陆运的方式后,依旧可以继续选择使用的是小汽车运,还是货车运。不同的运输方式会有不一样的要求,这就是我们选择传输固件的“协议”。

就比如我们选择使用USART的方式进行固件升级,那我们也可以选择使用Xmodem协议,还是Ymodem,或者是我们自创的协议。

而这个协议是保证我们固件传输数据的准确的。怎么说呢?比如带校验码、环回重复发送等功能。

4 小结

说了那么多,总结下来就是我们在IAP升级过程中,升级使用的通信接口通信协议也是我们需要关注的。一般而言,通信的接口限制我们的应用场景,通信协议是保证我们在IAP升级过程中固件数据准确的有力保证。

审核编辑 :李倩

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

    关注

    90

    文章

    3723

    浏览量

    97430
  • 开发板
    +关注

    关注

    26

    文章

    6411

    浏览量

    120686
  • IAP
    IAP
    +关注

    关注

    2

    文章

    169

    浏览量

    26178

原文标题:APM32芯得 EP.14 | APM32F103_IAP的简单实现_固件传输

文章出处:【微信号:geehysemi,微信公众号:Geehy极海半导体】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    极海APM32F427 MCU在RT-Thread系统上使用LwIP网络功能

    下面是基于RT-Thread的ENV命令行开发环境,在APM32F427上使用LwIP网络协议栈实现网络通信功能的。
    的头像 发表于 04-02 15:19 8529次阅读
    极海<b class='flag-5'>APM32F</b>427 MCU在RT-Thread系统上使用LwIP网络功能

    基于极海APM32F4的Azure RTOS ThreadX移植过程分享

    最近在玩APM32F407IG的板子,发现官方提供了两个RTOS的demo,FreeRTOS和RT-thread。想着APM32F4这么丰富的资源,是不是也可以跑一下ThreadX RTOS看看
    的头像 发表于 04-02 11:30 736次阅读
    基于极海<b class='flag-5'>APM32F</b>4的Azure RTOS ThreadX移植过程分享

    极海APM32F427如何实现自定义USB HID设备与PC进行通信

    最近需要使用到 APM32F427 枚举成Custom HID设备进行用户自定义通信,但是官方的例程只有提供的HID枚举为鼠标或者键盘类型的设备。这里记录一下,怎么使用Geehy官方的USB中间件,实现自定义的USB HID设备进行用户通信。
    的头像 发表于 03-30 09:30 2760次阅读
    极海<b class='flag-5'>APM32F</b>427如何<b class='flag-5'>实现</b>自定义USB HID设备与PC进行通信

    基于纳芯微实时控制MCU NS800RT5039的IAP固件升级指南(2)

    在上期《无需返厂!基于实时控制MCU NS800RT5039 的 IAP 固件升级指南(理论篇)》中,我们已经详细拆解了 IAP 技术的核心原理、关键概念、方案设计逻辑以及实战中常见问题的避坑要点
    的头像 发表于 02-06 09:18 9969次阅读
    基于纳芯微实时控制MCU NS800RT5039的<b class='flag-5'>IAP</b><b class='flag-5'>固件</b>升级指南(2)

    基于纳芯微实时控制MCU NS800RT5039的IAP固件升级指南(1)

    设备固件升级需拆回原厂、依赖 J-LINK 等仿真器烧录?这一痛点可通过 IAP(In-Application Programming)升级方案彻底解决。
    的头像 发表于 02-06 09:13 7535次阅读
    基于纳芯微实时控制MCU NS800RT5039的<b class='flag-5'>IAP</b><b class='flag-5'>固件</b>升级指南(1)

    在CW32F030的IAP应用介绍

    部分区域进行烧写,目的是为了在产品发布后可以方便地通过 预留的通信口对产品中的固件程序进行更新升级。 1 功能实现 IAP 功能的实现,一般将程序分为两个部分,即:Bootloade
    发表于 01-22 07:20

    极海APM32F427移植CherryUSB实现自定义USB HID设备

    最近需要使用到APM32F427枚举成Custom HID设备进行用户自定义通信,但我又不想要使用官方的USB中间件去做一个USB Custom HID设备。了解到Cherry USB这个开源
    的头像 发表于 01-20 09:52 4033次阅读
    极海<b class='flag-5'>APM32F</b>427移植CherryUSB<b class='flag-5'>实现</b>自定义USB HID设备

    如何在CW32F030上实现IAP功能实现远程升级?

    区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。 IAP 功能的实现,一般将程序分为两个部分,即:Bootloader 和 APP。Bootloader
    发表于 12-11 06:15

    使用TFTP实现IAP的方法

    使用 TFTP 实现 IAP 的方法广泛应用于需要具有固件升级功能的嵌入式应用中(例如,嵌入式 Linux bootloader 中)。TFTP 是一种在 UDP 传输层上执行的
    发表于 12-10 07:21

    AT32 MCU如何使用IAP

    AT32 MCU使用IAP的方法涉及在微控制器上创建特定固件,以实现在应用编程(In-Application Programming,简称IAP)功能,主要通过USART通信接口进行
    发表于 08-08 17:13

    AT32 IAP using the USART

    升级。通常实现 IAP 功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信方式(如USB、USART)接收程序或数据
    发表于 07-11 10:51

    极海APM32F411微控制器硬件FPU使用指南

    APM32F411是一款基于32位Arm Cortex-M4F内核的微控制器。硬件FPU是Arm Cortex-M4F的一大优势。合理应用硬件FPU可以大大缩短运算时间。
    的头像 发表于 06-28 11:23 2341次阅读
    极海<b class='flag-5'>APM32F</b>411微控制器硬件FPU使用指南

    基于极海APM32E103 MCU的CoreMark测试方法

    CoreMark跑分可以了解到MCU的算力。下面以APM32E103芯片和Keil为例,介绍一下如何在APM32上面运行CoraMark测试。CoreMark需要定时器用于计时,还需要用串口来打印输出测试结果。
    的头像 发表于 06-12 09:42 1591次阅读
    基于极海<b class='flag-5'>APM32E103</b> MCU的CoreMark测试方法

    极海APM32F407 uc/os3学习笔记之任务管理介绍

    最近了解了uc/os3这个操作系统,上篇介绍了uc/os3如何正确移植到APM32F407开发板上,根据我最近学到的一些知识,这篇文章主要介绍一下uc/os3中的一些简单的任务管理API以及如何使用。
    的头像 发表于 05-24 14:37 1148次阅读
    极海<b class='flag-5'>APM32F</b>407 uc/os3学习笔记之任务管理介绍

    极海APM32F407IG-Tiny开发板的DAPLINK固件更新方法

    最近申请到了APM32F407IG-Tiny板,这块开发板做工不错,尤其自带了DAPLINK下载器,外设资源也挺丰富的,很适合做mbedos移植,并且mbedos官方stduio是有自带
    的头像 发表于 05-24 14:28 1738次阅读
    极海<b class='flag-5'>APM32F</b>407IG-Tiny开发板的DAPLINK<b class='flag-5'>固件</b>更新方法