你好,
我必须重新设置应用程序从引导加载程序引导…似乎调用NVIC_SystemReset应用程序没有从SW引导加载程序再次传递,这是可能的吗?
谢谢
马可
嗨garzola,
软件复位后,引导加载程序将不再执行,应用程序将从主程序运行。如果您想在重新设置D1468x之后重新运行引导加载程序,则应该进行硬件重置。HW重置基本上是由RST垫、Watchdog过期、POR和调试器触发的(通过写入SWD_RESTET_REG)。对于您的问题,一个可能的解决方案是显式触发看门狗机制,但可能需要一些修改来导致HW重置。请查看5重启分析- WDOG部分调试技术教程(HTML)教程。缺省情况下,系统被配置为当WDOG值为零时发出一个NMI中断。因此,您应该注释掉hw_watchdog_freeze(),以便在每次您想要击中WDOG并导致HW重置时不会引起NMI。下一步是停止通知任务中的WDOG,因为您希望显式触发WDAG机制而不是触发NMI机制。例如,您可以注释掉IDLE任务中的sys_watchdog_notify()。在DA1468x首次引导时描述的过程中,WDOG将不会被通知,超时将过期,并且WDOG将被显式触发。当它被触发时,NMI将不会被执行,硬件将被重置。硬件复位后,将再次运行引导加载程序。注意,每次系统启动时,都会发生硬件复位。因此,我的建议是在WDAG第一次命中时在SPI flash中添加一个标志,当系统重新启动时,您应该读取该标志,而不是显式触发WDAG机制。
谢谢,PM_Dialog
谢谢。
现在我明白了…顺便说一下,我调用hw_cpm_reboot_system(),似乎引导加载程序又被调用了。
致以最亲切的问候。
谢谢你的提示。
PM_Dialog
嗨garzola,
软件复位后,引导加载程序将不再执行,应用程序将从主程序运行。如果您想在重新设置D1468x之后重新运行引导加载程序,则应该进行硬件重置。HW重置基本上是由RST垫、Watchdog过期、POR和调试器触发的(通过写入SWD_RESTET_REG)。对于您的问题,一个可能的解决方案是显式触发看门狗机制,但可能需要一些修改来导致HW重置。请查看5重启分析- WDOG部分调试技术教程(HTML)教程。缺省情况下,系统被配置为当WDOG值为零时发出一个NMI中断。因此,您应该注释掉hw_watchdog_freeze(),以便在每次您想要击中WDOG并导致HW重置时不会引起NMI。下一步是停止通知任务中的WDOG,因为您希望显式触发WDAG机制而不是触发NMI机制。例如,您可以注释掉IDLE任务中的sys_watchdog_notify()。在DA1468x首次引导时描述的过程中,WDOG将不会被通知,超时将过期,并且WDOG将被显式触发。当它被触发时,NMI将不会被执行,硬件将被重置。硬件复位后,将再次运行引导加载程序。注意,每次系统启动时,都会发生硬件复位。因此,我的建议是在WDAG第一次命中时在SPI flash中添加一个标志,当系统重新启动时,您应该读取该标志,而不是显式触发WDAG机制。
谢谢,PM_Dialog
谢谢。
现在我明白了…顺便说一下,我调用hw_cpm_reboot_system(),似乎引导加载程序又被调用了。
致以最亲切的问候。
马可
嗨garzola,
谢谢你的提示。
PM_Dialog