【问题标题】:testing Embedded C测试嵌入式 C
【发布时间】:2013-04-09 18:36:57
【问题描述】:

我正在使用 CCS, Inc. PCWHD 版本 4

我被要求在 CCSC 编译器上编译和运行 C 文件,但问题与 GCC 和 turbo 不同,它在编译时没有给出“.exe”(应用程序文件)。我正在获取带有.cod, .err., .hex, .ESYM, 等的文件。因此必须执行其中的 .hex(烧录到 IC);但我想在燃烧之前对其进行测试。

如何使用 CCSC 编译器运行十六进制或其他测试代码的方式?

【问题讨论】:

  • 我认为您最好将您的实际问题“我如何对嵌入式系统进行单元测试”发表。但首先看到这些:stackoverflow.com/questions/10309866/…stackoverflow.com/questions/4230177/…stackoverflow.com/questions/5904335/…stackoverflow.com/questions/115115/…
  • 当你有答案时不要关闭你的问题 - 这是不好的形式。只有不符合 SO 标准的问题才会关闭。如果您的问题引起批评或关闭投票,您应该改进您的问题。其他人可能会为您“改进”它。
  • @Clifford 我的意思是一样的.. 我认为 S.O 可能会下降它不符合标准,艾米建议关闭...在其回答之前.. :)
  • @krishna:到目前为止看起来还不错;我把它清理了一下——希望不会改变意思。如果问题直截了当,并且在某种程度上“去个性化”,那么问题效果最好。

标签: c unit-testing embedded hex executable


【解决方案1】:

PIC 指令集和架构与开发主机完全不同,CCS 编译器无法针对 x86,因此无法生成可在 PC 上运行的可执行文件 - 它是 cross compiler。但是,与硬件无关的应用程序部分可能是可移植的,并且可以通过在主机编译器中编译在 PC 上进行测试,但是您需要注意,由于它是 32 位架构,数据类型大小和数值范围会有所不同.如果您仔细抽象您的硬件,这可能是一种非常有效的技术,因为您可以使用测试工具或模拟代码来存根硬件抽象层。

在 PIC 微控制器上,代码从片上 ROM 运行 - PIC 架构无法从 RAM 执行代码,因此您别无选择,只能将代码刻录到片上 ROM 以便在硬件上执行。大多数部件使用可擦除和可重写的闪存,因此测试您的代码应该不是问题。有一次性可编程部件,但出于显而易见的原因,您通常不会将它们用于开发!

对于测试和调试,您应该有一个in-circuit debugger 以允许您从连接到硬件的开发主机program, run, step and breakpoint 您的代码。

另一种方法(尽管通常不完全令人满意)是在模拟器中测试和执行您的代码。 CCS 似乎没有集成模拟器,因此您必须改用Microchip's MPLAB SIM

【讨论】:

    【解决方案2】:

    我不了解您的自定义计算机服务编译器,但我对 TI CCS 很有经验.hex- 基本上是 intel 十六进制格式,它以机器语言和 Hex 格式存储您的代码。这是由您的编译器为您正在处理的特定硬件(uC)生成的。

    .exe - 包含为您的机器(主机)生成的机器代码(通常)(和资源)。

    我想在燃烧前测试一下” -
    1)通常你的IDE会有一个模拟器选项,你可以“模拟”uC。这通常在您的编译器选项中。这就是你要找的。 check this out 如果你的 IDE 没有模拟器

    2)您可以进行实时调试(您的 CCSCinc 支持这一点,如 Link 所示)。这更灵活,因为您可以知道实际发生了什么。有时中断很难“模拟”,但如果您进行硬件调试,则更容易。

    【讨论】:

      【解决方案3】:

      CCS C 编译器不构建 .exe 文件。它为 PIC、DSC 等构建程序。Windows 运行 .exe 文件,Microchip 处理器不运行。你的编译器生成正确的输出文件,前提是构建的东西没有错误。您必须将其加载到正确的处理器或模拟器上才能运行。它们不会在 Windows 中运行。

      【讨论】:

      • 感谢您的回复,那么嵌入式 C 的单元测试呢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 2013-02-13
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      • 2022-08-24
      • 1970-01-01
      相关资源
      最近更新 更多