当前位置: 首页 > article >正文

STM32的IAP原理及其操作流程分析

首先明确几个基础概念:

下图的start是程序存放在单片机内部flash的起始地址,size是你给你程序留的flash大小。

一般我们会去找对应map文件,可以查看程序占用多少kb,由下图可见我们的程序占用flash的空间为8.14kb。因此起码要在flash中给8.14kb的存储空间。

2:有了上述概念后我们再说一下IAP目的和操作流程。

如图:摘自百度百科

简而言之,IAP就是给客户用的。

IAP需要准备两部分程序,一个是IAP启动程序,一个是我们项目APP程序。IAP启动程序用于启动项目APP程序。两个程序都要放在flash上不同地方。程序上电复位后都是默认运行我们的IAP启动程序,至于是否更新和运行我们的APP程序则取决于我们后续写的代码。

1:首先准备项目APP程序。将程序的起始地址和尺寸修改如下:

代表程序起始地址为0x8010000,尺寸大小给了0XF0000,也就是960Kb。

然后在程序开头加上这行代码:

 

 SCB->VTOR = FLASH_BASE | (0x10000 & (uint32_t)0xFFFFFE00);  //IAP

 

代码中的FLASH_BASE和0x10000分别与上上图中标准的起始地址和偏移量对应

2:在下图位置按标号顺序操作添加如下指令并给Run#1打勾:

 

fromelf.exe --bin -o "$L@L.bin" "#L"

3按上述操作后,编译文件,生成了bin文件

 再去工程文件夹下找到对应的bin文件

 

准备好APP的bin文件后,再来准备IAP启动文件:

1:IAP启动程序的大小通过找.map文件查看程序占用flash大小,从图可得只有8KB

 

因此IAP程序的设置如下:给启动文件64kb空间

 然后代码部分如下:程序上电后等待上位机更新,如果等待6s没有更新指令,则执行旧的flash里面的项目APP程序。这里的起始地址加size要等于项目APP程序的起始地址0x8010000。项目APP的size则可以自行设定。

 STM32F412VGT6的启动文件程序IAP已经上传百度云。

链接:https://pan.baidu.com/s/1FslsWV7I8Z3NXtkfoea54A 提取码:f68p hi,这是我用百度网盘分享的内容~复制这段内容打开「百度网盘」APP即可获取


http://www.kler.cn/news/306266.html

相关文章:

  • C++20中支持的非类型模板参数
  • QT多线程编程(基础概念以及示例)
  • 【深度学习】搞懂卷积神经网络(一)
  • HTML贪吃蛇游戏
  • 【Spring Boot】SpringBoot自动装配-Import
  • CenterPoint-KITTI:环境配置、模型训练、效果展示;KITTI 3D 目标检测数据集下载
  • 寄存器的位数据调测方法(摩尔信使MThings)
  • Axure科技感大屏系统设计:智慧农场管理平台
  • SCRM电商管理后台Axure高保真原型 源文件
  • 浅谈为什么数据库要用B树
  • 爬虫全网抓取
  • 大众萨克森:SNP助力汽车制造智能化,实现SAP S/4HANA系统成功升级
  • 店群合一模式下的社区团购新发展——结合链动 2+1 模式、AI 智能名片与 S2B2C 商城小程序源码
  • LeetCode509:斐波那契数列
  • 4.C_数据结构_队列
  • Java异常处理详细讲解及常见面试问题
  • 无人机巡检:突破传统局限,引领智能监测新时代
  • java 网络编程URL与URLConnection的使用
  • 深入解析 Apache Ranger
  • 电容的不同材质对应的温度范围
  • Redis主要问题(缓存问题)
  • pyflink 安装和测试
  • Matlab simulink建模与仿真 第十四章(信号输出库)
  • 计算机毕业设计 智慧物业服务系统的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • Elasticsearch 聚合搜索
  • 网络安全 L2 Introduction to Cryptography 密码学
  • 学习整理vue前端框架项目目录结构的含义
  • Rust 所有权 Slices
  • 64. 求 1+2+…+n
  • Python快速入门 —— 第二节:函数与控制语句