【问题标题】:How to run my code on an ARM _without_ debugging?如何在没有调试的情况下在 ARM 上运行我的代码?
【发布时间】:2014-10-03 00:14:15
【问题描述】:

我一直在为 STM32F105 开发一个项目(C 语言),使用带有 CDT 插件的 Eclipse IDE。我正在使用 gcc-arm 工具链、OpenOCD (gdb) 进行调试,以及一个 ST-Link/V2 JTAG 设备。

我一直在目标板上调试,没问题。

现在,我终于希望代码自己运行了,我不知道在 Eclipse 中该怎么做!我确定它很简单,但我找不到它。

如何构建代码并对目标进行编程以使其“正常”运行?

【问题讨论】:

  • 除非您从 ram 运行(这不太可能,因为它施加了限制),否则可能只是在没有连接或激活调试器的情况下重置电路板将启动您上次刷新的任何内容。否则可以使用开源的stlink工具刷机。
  • 请分享有关您的目标板和相关板载外围设备的更多信息。
  • 一般情况下,在某些系统中,您可能需要通过引导加载程序调用应用程序。

标签: eclipse embedded arm


【解决方案1】:

将 OpenOCD 配置为外部工具并使用或多或少类似以下的参数:

-f interface/... -f target/... -c "init; reset init; flash write_image erase <your_hex_file.hex>; reset run; shutdown;"

您当然应该将此命令适应您的项目:输入正确的接口和目标配置并设置正确的 hex 文件名称(您也可以使用 .bin 或 .elf,但 .hex 通常是最方便的)。

在“工作目录”文本框中输入您的项目目录 - 使用“浏览工作区”来执行此操作,您应该有这样的东西:${workspace_loc:/<name_of_your_project>}

【讨论】:

  • 谢谢弗雷迪,你让我离我更近了。当我这样做时,OpenOCD 会正确传输文件,但随后会说目标由于断点而停止,并且它没有运行。我尝试了发布版本而不是调试版本,结果相同。我将删除断点并看看会发生什么,尽管我希望有一种方法可以自动丢弃构建中的断点设置。你对我有什么提示吗?再次感谢。
【解决方案2】:

我的一个项目通过简单地断开调试器并重置目标来工作,正如@ChrisStratton 所建议的那样。另一个没有,无论我使用的是 IDE 还是 ST-LINK 工具。附加调试器后它工作正常。

事实证明,非工作程序使用的是半托管。当我通过删除以下编译器符号禁用半托管时,项目开始自行运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多