完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我有自己的引导加载程序应用程序,类似于 ST 提供的 IAP 示例,它运行并确定要运行 2 个主要应用程序中的哪一个,然后启动该应用程序。引导加载程序工作正常,主应用程序工作正常,但是当我将它们组合在一起时,主应用程序总是以硬故障告终。如果我从 STM32CubeMX IDE 启动主应用程序,它启动正常,但如果我重新启动整个处理器,引导加载程序运行然后启动主应用程序,但它总是在同一点出现硬故障。如果我让主应用程序从闪存开始运行,它工作正常并且没有硬故障。
我已经尝试取消初始化引导加载程序中使用的所有外围设备,这似乎没有什么区别。唯一仍在运行的是 Systick 计时器。 是否有任何寄存器可以暗示为什么会发生硬故障? 如何确保主应用程序运行时一切都处于干净的状态? 我应该提一下,主应用程序是一个 FreeRTOS 项目,并且在初始化默认任务时发生硬故障。 |
|
相关推荐
1个回答
|
|
|
> 唯一仍在运行的是 SysTick 定时器。
为什么?禁用它。 > 我试过取消初始化所有外围设备 不要(永远)信任 HAL 函数,验证寄存器是否处于重置状态。使用 RCC *RSTR 寄存器,参见参考手册。 验证所有中断实际上在 NVIC->ICER* 寄存器中被禁用(参见 PM0253 编程手册中的描述) 验证 SCB->VTOR 始终指向应用程序的向量表。愚蠢的 SystemInit() 代码往往会在那里写入错误的值,尽管它可以使用正确的值 (g_pfnvectors)。不要相信 SystemInit()。 > 是否有任何寄存器可以暗示为什么会发生硬故障? 如果它总是在同一点发生硬故障,为什么不在那里设置一个断点,并检查那里发生了什么。 STM32CubeIDE有一个故障分析面板,我不知道它是否好用,但你可以试试。 异常堆栈帧记录在编程手册中。 > 如何确保主应用程序运行时一切都处于干净的状态? 不要相信生成的代码,不要相信库,不要相信示例代码,即使它们来自 MCU 供应商。验证参考手册和编程手册中的所有内容。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
stm32mp157的异核通信的rpmsg_sdb的m4固件和a7驱动该如何编写?
1453 浏览 0 评论
stm32f103用freertos对一个采样率为1kHz的传感器,进行采样,数据出差
1502 浏览 0 评论
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
3649 浏览 1 评论
3842 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
2461 浏览 1 评论
STM32H7打开DCache后,出现了串口接收信息为空的现象,是哪里出了问题?
727浏览 5评论
用NANO STM32F103RBT6的开发板烧录不了是哪里出了问题?
661浏览 5评论
710浏览 5评论
外部中断触发类型为双边沿触发,进入中断回调后有什么办法判断该边沿是上升沿还是下降沿?
940浏览 5评论
STM32L071CBT6低温环境下无法正常工作是什么原因引起的?
745浏览 5评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 21:48 , Processed in 0.726723 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1798