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

STM32G474 IAP 双bank升级的坑

真不容易,

  1. 选项字中必须确保DBANK为1,为1表示将512k的flash分成2个独立的256k flash
  2. 选项字BFB2是切换的关键,如果你不想用传统的bootload的方案的话,
    1. 该值为1表示使用bank2作为启动时0x08000000的地址
    2. 该值为0表示使用bank1作为启动时0x08000000的地址
  3. 巨坑之一,并不是设置了BFB2为1就一定会运行在物理bank2上,因为设置了BFB2=1后,启动时刻的固化在单片机内的bootload会判断bank2的程序是否具备可运行的条件(向量表),如果不具备就还是会运行在物理bank1上!你需要自己去下载关于启动时刻的流程,这里提供一个讨论链接
  4. 实际运行的物理bank,需要通过SYSCFG_MEMRMP 寄存器的 FB_MODE位去判断
    1. 值为0,表示实际运行在bank1
    2. 值为1,表示实际运行在bank2
    3. 你可以使用这个寄存器和BFB2的状态是否一致去判断运行状态
  5. 写flahs时,应该总是写0x08040000(虚拟bank2基址),因为正常运行后,无论是物理bank1还是bank2,都会被映射到启动地址0x08000000,而你不能改写真正运行的flash,所以写入地址总是0x08040000开始
  6. 巨坑之二擦除flash块时,应该按FB_MODE的值去判断应该擦除的块,而不是BFB2!
  7. 注意擦除等耗时操作时记得喂狗。
http://www.dtcms.com/a/358885.html

相关文章:

  • git的三种分区与分支的关系
  • Pomian语言处理器研发笔记(二):使用组合模式定义表示程序结构的语法树
  • for in+逻辑表达式 生成迭代对象,最后转化为列表 ——注意list是生成器转化为列表,但[生成器]得到的就是一个列表,其中包含一个生成器元素
  • HarmonyOS 持久化存储:PersistentStorage 实战指南
  • Kafka面试精讲 Day 2:Topic、Partition与Replica机制
  • Midscene.js:AI驱动的UI自动化测试框架
  • PLSQL Developer 12.0.1 x64 安装步骤详解(附Oracle连接设置|附安装包下载)​
  • SQL 学习
  • 探索 XGBoost 与 LightGBM 的差异:哪个更适合你的项目?
  • 【Pytorch】生成对抗网络实战
  • 快消品牌如何用 DAM 管理万张素材?
  • Coze源码分析-API授权-编辑令牌-后端源码
  • MySQL视图、存储过程与触发器详解
  • 实战指南|解锁 Highcharts 图表导出与数据格式优化
  • windows32位下载谷歌浏览器的地址
  • Git提交信息
  • 不用公网IP也能?cpolar实现Web-Check远程安全检测(1)
  • Qt 窗口 - 3
  • 弱内存模型和强内存模型架构(Weak/Strong Memory Model)
  • stack queue的实现 deque的底层结构 priority_queue的实现
  • easy-http类似feign的轻量级http客户端工具
  • C++三方服务异步拉起
  • 针对 “TCP 连接中断 / 终止阶段” 的攻击
  • K8s卷机制:数据持久化与共享
  • 当“循环经济”遇上“小程序”,旧物回收正迎来“智慧”升级
  • 奥普新汽车声学测试方案书
  • 谷歌 “Nano Banana“ 深度解析:AI 图像的未来是精准编辑,而非从零生成
  • 构建现代化的“历史上的今天“网站:从API到精美UI的全栈实践
  • jumpserver
  • 字数统计器和文本AI处理,非常好用