您好,
我需要有关基于 UART 的引导加载程序的一些帮助。 我能够从 UART 引导加载程序更新我的应用程序。 问题是我想修改 UART 引导程序。 希望在引导加载程序中使用包括计时器和 UART 串行中断在内的中断。 可以帮帮我吗? 当前,当我尝试在引导加载程序中使用计时器和 UART 中断并将中断功能放入启动文件时,引导加载程序将不起作用。
此外,还可以调试引导加载程序,因为断点也不起作用。
此致、
MOH
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,
我需要有关基于 UART 的引导加载程序的一些帮助。 我能够从 UART 引导加载程序更新我的应用程序。 问题是我想修改 UART 引导程序。 希望在引导加载程序中使用包括计时器和 UART 串行中断在内的中断。 可以帮帮我吗? 当前,当我尝试在引导加载程序中使用计时器和 UART 中断并将中断功能放入启动文件时,引导加载程序将不起作用。
此外,还可以调试引导加载程序,因为断点也不起作用。
此致、
MOH
引导加载程序将所有代码复制到 SRAM、处理器从 SRAM 运行、以便处理器可以自由擦除和写入任何闪存位置。
通常、当从闪存运行时会中断硬件断点、但当从 SRAM 运行时、调试器会修改 SRAM 操作码。 如果您查看断点窗口、您会注意到它显示的是 SWBP、而不是 HWBP。 反汇编过程中看不到运算代码交换、但您可以在内存浏览器中看到它。
您遇到的问题是复制过程;复制到 SRAM 的操作码会重新复制到 SRAM。 您的软件断点调试器诀窍会被覆盖。 我计算出、您可以单步执行复制循环~870次、然后才能在复制循环之后立即设置断点。 在中断复制循环后、您可以在任意位置设置断点。 这对我很有用。 我不记得确切的数字。 尝试900以确保安全。
或者、您可以让程序运行一段时间、暂停、然后设置断点。
***像***写得很好。
我是否可以在海报(不合理)的愿望中记录"问题"、即"在引导加载程序上强制中断-计时器和 UART -"。 如果此添加充分偏离供应商的"正常/习惯"代码设计计划和实施、则问题(可能)严重。 (甚至是"预期"的 lurk。)
无论是公司还是我都不使用供应商的引导加载程序-如果中断对供应商的引导加载程序设计而言是"不可或缺的"、则可能会忽略此注意事项。
一般而言、修改"已知良好代码"(在这种动态、多存储器传输环境中)的做法(没有适当的理由)会带来问题、并且应该(仅在确实合理的情况下)实施。 (未提供此类用例!) 然后-仅在极其小心的情况下-和实质性的"测试/验证"。
我相信我们的职位已经"跨越"了。 正如我所写的-如果引导加载程序需要"特殊注意/处理"来适应您的"添加的"中断-需要谨慎。
我们公司不使用供应商的引导加载程序-我会提供"预防建议"(以防万一)、正如我们注意到(其他供应商的) ARM MCU 中存在的(类似)问题-按您的建议运行... 引导加载程序的"动态性质"可能会因"意外/意外的此类中断"的到来而受到影响-这是我的担忧!