你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32单片机,禁止系统启动时的变量初始化

[复制链接]
guoyuli 发布时间:2023-9-8 16:18

使用这个功能是在丨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;

收藏 评论0 发布时间:2023-9-8 16:18

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版