1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我有一个与 RTC 备份数据寄存器有关的非常奇怪的问题。我正在测试引导加载程序通过让 IWDT 重新启动设备来回退到以前版本的固件的能力。Bootloader 有一个使用 RTC 备份寄存器的计数器,它在启动时在主程序中归零,如果它计数到 3 表示主程序从未运行,bootloader 会回退。还有另一个 RTC 备份寄存器用于保存重启原因标志。我在 main 中评论了这个归零,让引导加载程序回退。但是,当我尝试运行该程序时,它现在无法在第二个启动周期中使用先前的 rtc 备份读取功能。这可以通过完整的电源循环重置,我的意思是每次电源循环后它都会做同样的事情。如果我注释掉 RTC 备份寄存器读取功能,
这是我在这里的第一篇文章,所以我将对其进行修改。这个发布界面对我来说真的很不直观。让我们看看这篇文章的样子。 /* 1. 刷机后运行 */ [DBG][引导]:RCC_FLAG_PORRST uint32_t rtc_read_backup_reg(uint32_t)。进入 uint32_t rtc_read_backup_reg(uint32_t)。句柄实例初始化 uint32_t rtc_read_backup_reg(uint32_t)。从 f() 返回的值 = 0 uint32_t rtc_read_backup_reg(uint32_t)。返回 [DBG][main]:引导加载程序已重新启动:0 次 uint32_t rtc_read_backup_reg(uint32_t)。进入 uint32_t rtc_read_backup_reg(uint32_t)。句柄实例初始化 uint32_t rtc_read_backup_reg(uint32_t)。从 f() 返回的值 = 0 uint32_t rtc_read_backup_reg(uint32_t)。返回 [DBG][main]:故障标志:reset_normal void rtc_write_backup_reg(uint32_t,uint32_t)。进入 void rtc_write_backup_reg(uint32_t,uint32_t)。句柄实例初始化 void rtc_write_backup_reg(uint32_t,uint32_t)。访问已启用 void rtc_write_backup_reg(uint32_t,uint32_t)。值已更新 void rtc_write_backup_reg(uint32_t,uint32_t)。访问被禁用 void rtc_write_backup_reg(uint32_t,uint32_t)。返回 /* 这里 WDT 被初始化并且等待函数被设置为触发它 */ [DBG][main]:现在卡在等待引导加载程序引导循环的运行版本中 /* 2. 运行:IWDT 复位 MCU */ [DBG][引导]:RCC_FLAG_IWDGRST uint32_t rtc_read_backup_reg(uint32_t)。进入 uint32_t rtc_read_backup_reg(uint32_t)。句柄实例初始化 uint32_t rtc_read_backup_reg(uint32_t)。从 f() 返回的值 = 1 uint32_t rtc_read_backup_reg(uint32_t)。返回 [DBG][main]:引导加载程序已重新启动:1 次 uint32_t rtc_read_backup_reg(uint32_t)。进入 uint32_t rtc_read_backup_reg(uint32_t)。句柄实例初始化 uint32_t rtc_read_backup_reg(uint32_t)。从 f() 返回的值 = 128 uint32_t rtc_read_backup_reg(uint32_t)。返回 /* 似乎是 rtc_read_backup_reg() 返回的致命错误 */ ++ MbedOS 错误信息 ++ 错误状态:0x8001012F 代码:303 模块:1 错误消息:错误 - 写入 ISR 或临界区中的文件 位置:0x80316C7 错误值:0x1 当前线程:主 ID:0x20005F10 条目:0x80321C3 StackSize:0x1000 StackMem:0x20010628 SP:0x2002F D6C 欲了解更多信息,请访问:... -- MbedOS 错误信息 --
|
|
相关推荐
1个回答
|
|
tr_debug("故障标志: %s", reset_error_str[rtc_reg]);
如果 rtc_reg 的值不是 reset_error_str 中的有效索引怎么办? |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2730 浏览 1 评论
3239 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1808 浏览 1 评论
3647 浏览 6 评论
6035 浏览 21 评论
1339浏览 4评论
198浏览 3评论
对H747I-DISCO写程序时将CN2的st-link复用为usart1,再次烧录时无法检测到stlink怎么解决?
350浏览 2评论
STM32G474RE芯片只是串口发个数据就发烫严重是怎么回事?
442浏览 2评论
STM32处理增量式编码器Z信号如何判断中断是正转的还是反向转的?
273浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 06:24 , Processed in 0.565270 second(s), Total 73, Slave 57 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号