
使用这个功能是在丨AP 在线升级时需要用的。 最初使用在EEPROM 或者FLASH 存储一个标志位。程序蜀啭到BootLoader , BootLoader 来判断是否需要升级。这样是可 以用的, 但是这样有个弊端: 如果升级中出现问题, 或者其他原因, 导致主程序无法正常运行, 看门狗咬死程序, 程序复 位。这样子的话, 程序会一直在引导一引导程序检测到不需要| AP 一跳转到应用程序“ 看门狗咬死“ 复位一引导, 进入死循环, 程序判断不了应用程序已经坏掉。只能去现场来进行调试设备。 使用, 禁止系统启动时的变量初始化。在BootLoader 与应用程序, 都在同一个地址定义相同的变量, 在非断电初始化的时 候, 此变量是不会复位的。在BootLoader 中, 每初始化一次, 对此变量+ 1 , 在应用程序当中赋值为0 。当次变量大于一定 的数值的时候, 则认为应用程序有问题, 重新进行| AP 。当应用程序收到升级指令的时候, 直接把这个变量赋值为相应的值。 STM32 的开发环境有两种IAR 与KEI L , 这两种的禁止系统启动时的变量初始化的方式也是不同的。 方法如下: IAR 直接定义变量: 在什么地址: no init u16 Fg_Noinit@0x20000000 ; 如果不是IAR 使用的话, 可以这样: no init u16 Fg_Noinit; KEI L 的方式略微复杂一些 首先要在Target 中对RAM配置 NoInit 某个地址范围 之后定义变量 attribute((at(0x20000000))) u8 Noinit; |
实战经验 | 1小时在STM32MPU上运行YOLOv8——训练篇
利用STM32MP1和STM32MP2为嵌入式Linux提供有效的安全措施:供当今决策者参考的3条宝贵经验
有奖直播 | STM32MP2x 资源隔离架构 (RIF) 介绍与使用
白皮书下载|边缘 AI 变革:MCU集成 NPU 的破局与领航
OpenSTLinux:为STM32 MPU生态系统带来超强助力
【STM32MP257】轻松搭建A35 Linux编译及调试环境
【STM32MP257】🥳STM32MP257-DK-开发板开箱体验
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【STM32MPU 安全启动】 TF-A BL2 TrustedBoot原理学习
《STM32MPU安全启动》学**结