首页
时事
民生
政务
教育
文化
科技
财富
体娱
健康
情感
更多
旅行
百科
职场
楼市
企业
乐活
学术
汽车
时尚
创业
美食
幽默
美体
文摘
STM32代码远程升级之IAP编程
科技
2024-11-18 16:26
山东
IAP是什么
有时项目上需要远程升级单片机程序,此时需要接触到IAP编程。
IAP即为In Application Programming,解释为在应用中编程,用户自己的程序在运行过程中对User Flash的部分区域进行烧写。即是一种对单片机Flash擦写的一种编程方案。
通常情况下,一片STM32单片机的Flash只有一个用户程序,而IAP编程则是将单片机的Flash分成至少两大区域,一部分叫做bootloader区,一部分叫做app用户代码区,还可留出一部分区域为代码备份区。
IAP的应用场所
通常情况下我们给STM32单片机烧录更新程序时是通过SWD、J-link或者通过设置BOOT引脚后,使用串口进行程序下载,这样的方式直接一次性将程序文件下载到单片机的Flash中,比较适合绝大部分的应用。
但是当产品投入实际应用时,封装完成后在后期的使用过程中遇到某些程序上的bug或者是根据客户需求需要增加一些功能的时候,使用传统代码烧录的方法就可能需要拆除封装,而使用IAP编程在bootloader区提前写入与外部通信的接口用于升级单片机代码,使得我们不用对已完成包装的产品进行拆除既可以更新代码,这样既节约了成本,也更加方便快捷。
IAP编程的流程
IAP编程将Flash区分成的两个区域,bootloader区和app用户代码区具有截然不同的功能。相关文
章推荐:
详解STM32在线IAP升级
。
bootloader区,主要实现接收程序文件,并将该程序写于特定位置的Flash区域。
而这里接收外部程序文件,就需要实时和外部通信了。
STM32单片机与外部通信大多是通过自身的串口接收和发送数据,不过STM32单片机的串口可以外接多种通讯接口,例如422、485、GPRS及ESP8266等。即我们可以通过串口外接蓝牙模块、WiFi模块或者是其他网络模块,就可以实现远程的文件传送更新单片机程序了。
app用户代码区则是主要实现我们所需要的功能操作,除此之外app用户代码区还需要实时检查代码运行情况,通过判断更新程序的标志位来判断是否需要升级程序。若是需要升级程序则进入bootloader区进行代码更新;若不需要则继续运行功能函数代码即可。
因此IAP编程下的单片机运行流程如下图:
根据运行流程,我们可以总结出简单几条bootloader设计过程中需要注意的地方:
精简、程序尽可能精简。在单片机Flash有限的情况下,bootloader代码占用Flash的空间越小,则APP程序代码就可占用更多,实现更多功能函数。
标志位不受复位的影响。
Bootloader中尽量不使用中断。
http://mp.weixin.qq.com/s?__biz=MzI1MDg4OTMwMw==&mid=2247525666&idx=2&sn=bb061e6e39c51cf3fd50e7a6b16e1167
STM32嵌入式开发
STM32嵌入式,PCB电路图,C语言,单片机,Matlab,Linux
最新文章
详解STM32在线IAP升级
总结单片机电路设计要点
认识地弹(地噪声)
硬件工程师VS软件工程师
STM32嵌入式开发中的RTOS,你用过哪些?
巧用数字万用表
经典的结构体和联合体共用实例
差模放大电路特点与抑制零漂原理
嵌入式代码经常产生bug的原因
如果模拟电路设计分九段,你是几段?
19个常用的5V转3.3V技巧
MOS管驱动电路有几种,看完就明白了
十年经验的大神谈如何学STM32嵌入式开发
设计降压转换电路?工作原理+设计步骤
假如C与C++是两把菜刀
分析稳压二极管常见应用电路
EMC防护中的滤波电容
详解嵌入式开发中的I2C总线
STM32代码远程升级之IAP编程
三相电对地电压
STM32单片机开发中的RTOS
RS485通信的收发控制
开关如何变成的CPU?
详解CAN总线
STM32代码的启动过程
STM32如何分配原理图IO
开关电源里特殊电子元件的类型和用途总结
EEPROM和Flash这样讲,我早就懂了
如何解密单片机内程序?
电路设计-硬件工程师画PCB时要了解的设计建议
梳理STM32芯片的内部架构
STM32如何分配原理图IO
用三极管实现LED闪光灯经典电路
分享两种单片机编程思想
STM32怎么选型
理解STM32控制中常见的PID算法
了解SRAM跟DRAM的区别在哪里
STM32开发中的五大嵌入式系统
单片机程序代码该如何优化?
硬件工程师的崩溃日常
EMC防护中的滤波电容
介绍PID各种算法的优缺点
C语言中结构体struct的用法
单片机中如何用二极管实现不同电压的输出?
步进电机的结构和控制模式
C语言中枚举enum的用法
不同类型单片机之间如何通信?
嵌入式开发初学者,如何学好C语言?
画PCB板时阻抗设计的重要性
用一堆开关做成一个CPU?
分类
时事
民生
政务
教育
文化
科技
财富
体娱
健康
情感
旅行
百科
职场
楼市
企业
乐活
学术
汽车
时尚
创业
美食
幽默
美体
文摘
原创标签
时事
社会
财经
军事
教育
体育
科技
汽车
科学
房产
搞笑
综艺
明星
音乐
动漫
游戏
时尚
健康
旅游
美食
生活
摄影
宠物
职场
育儿
情感
小说
曲艺
文化
历史
三农
文学
娱乐
电影
视频
图片
新闻
宗教
电视剧
纪录片
广告创意
壁纸头像
心灵鸡汤
星座命理
教育培训
艺术文化
金融财经
健康医疗
美妆时尚
餐饮美食
母婴育儿
社会新闻
工业农业
时事政治
星座占卜
幽默笑话
独立短篇
连载作品
文化历史
科技互联网
发布位置
广东
北京
山东
江苏
河南
浙江
山西
福建
河北
上海
四川
陕西
湖南
安徽
湖北
内蒙古
江西
云南
广西
甘肃
辽宁
黑龙江
贵州
新疆
重庆
吉林
天津
海南
青海
宁夏
西藏
香港
澳门
台湾
美国
加拿大
澳大利亚
日本
新加坡
英国
西班牙
新西兰
韩国
泰国
法国
德国
意大利
缅甸
菲律宾
马来西亚
越南
荷兰
柬埔寨
俄罗斯
巴西
智利
卢森堡
芬兰
瑞典
比利时
瑞士
土耳其
斐济
挪威
朝鲜
尼日利亚
阿根廷
匈牙利
爱尔兰
印度
老挝
葡萄牙
乌克兰
印度尼西亚
哈萨克斯坦
塔吉克斯坦
希腊
南非
蒙古
奥地利
肯尼亚
加纳
丹麦
津巴布韦
埃及
坦桑尼亚
捷克
阿联酋
安哥拉