工具/软件:
您好、
在我的当前项目中、我开发了基于刷写的定制辅助 BSL 并使用它通过 UART 串行通信上传应用程序。
但我的目的是在器件上电时进入 BSL、这样我将 BSL 定位在 闪存的 0x00000000 处、位于应用程序代码 0x00002000 处。
在 BSL 应用程序内部、 PA8 用作 GPIO 输出并设置为高电平 以便启用“输出“UART IC 的功能并上传应用代码。 上传和验证 过程完成后、BSL 将跳转到有效的应用程序起始地址。
但在应用程序代码中、我发现一旦该 PA8 初始化为 GPIO 输出、程序就会“挂起“。 为了解决问题、我禁用了 PA8 数字输出 再次上传应用程序代码、即可正常运行。
奇怪的问题是我 如果我在没有引导加载程序的情况下直接刷写到器件、则可以启用 PA8 数字输出 在另一个器件上、即应用代码照常从 0x00000000 开始、应用代码再次正常工作。
因此、只有通过引导加载程序上传代码时、问题才会存在。
原因是什么? 有什么我漏掉的吗? 请提前提出建议并表示感谢。 μ s