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.

[参考译文] CC2540:使用"SmartRF Flash Programmer "工具生成的十六进制文件不像以前那样工作

Guru**** 2386620 points
Other Parts Discussed in Thread: CC2540
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1313968/cc2540-the-hex-file-generated-using-tool-of-smartrf-flash-programmer-doesn-t-work-as-before

器件型号:CC2540

大家好、FAE 团队、

我们在使用"SmartRF Flash Programmer "工具生成 hex 文件时遇到问题。  大约在2020年、我们的培训流程取得了成功。  但现在我们有问题,虽然程序是相同的,我们熟悉它。

失败过程如下所示。

  1. test.bin 下载到了 PCB1、工作正常、一切正常。
  2. 使用 TI 的软件工具从 PCB1的闪存中读取数据并将其保存为.hex 文件、名为 test.hex
  3. 已使用 TI 的软件工具擦除 PCB2上的程序。 使用新生成的 test.hex 文件。 已选中"擦除、编程和验证"选项框。 在编程和验证之后、PCB2未按预期正常工作
  4. 对 PCB1重复了相同的过程、text.hex 对 PCB1有效。

总之、现在十六进制文件只能在生成它的 PCB1中工作。 但不适用于其他 PCB。

 

我们使用了2540、最后一个应用程序 bin 文件于2020年发布、生成的十六进制文件运行良好。  但是、当我们升级固件并想要重复该过程以立即从 bin 文件获取 hex 文件时。 不管用。  我们不知道为什么。  如何解决此问题? 。

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您是否能够采用2020年之前的.hex、并将其刷写到 PCB1和 PCB2上?

    相对于2020年及以前的硬件、PCB 新设计是否与您的硬件相比?

    谢谢。
    托比

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Toby、

    感谢您的提示反馈。

    1. 2020 hex 文件对于 PCB1和 PCB2仍能完美地工作。  而且、它是我们在工厂大规模生产中使用的技术。  这意味着、它适用于大量 PCB。
    2、硬件设计自2月起完全一样  2018。

    基于上述两个事实,这就是为什么我们如此困惑的问题。

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Joan:

    不知道这是否可能是 PCB2的一个特有问题。

    这是否仅在两个 PCB 上进行了测试? 您是否在 10多 个 PCB 上进行了此测试?

    我还建议只需将 test.bin 加载到 PCB 上。 您是否可以将 test.bin 直接加载到 PCB2?

    谢谢。
    托比

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Toby、

    感谢您的反馈。

    我们尝试了10多块 PCB 来解决问题。  我命名 PCB2是为了 方便理解说明。  事实是,目前由 PCB1生成的十六进制文件只能在 PCB1中工作,但不能用于其他所有的 PCB 我们现在感到困惑,因为我们在2020年之前顺利地生成了一个"好"的十六进制文件。

    bin 文件可以在 PCB2中正常工作。  但是、我们在大规模生产中需要使用 hex 文件。  与 hex 文件相比、bin 文件在大规模生产中的效率非常低。   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Joan:

    因此、为了提高效率、这里的主要目标是在大规模生产中使用.hex 文件格式而不是.bin 文件。
    然后、我建议在构建固件时首先使用.hex 文件。
    这比加载.bin、将器件闪存读出为.hex 文件然后将该.hex 文件刷写更高效。

    适用于 CC2540的 BLE 工程应在 IAR 中生成.hex 文件。

    请参阅此处的"8.3.4链接器映射文件"部分: https://www.ti.com/lit/pdf/swru271

    这里的屏幕截图显示了"SimpleBLEPeripheral.hex"。

    谢谢。
    托比

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Toby、

    感谢您的建议。 我们将尝试它。  如果可以使用生成的十六进制文件、这对我们来说很方便。   

    我们在2015年之前项目刚开始时就被告知生成的十六进制文件不可用于大规模生产。 大规模生产中唯一可以使用的十六进制文件是从 bin 文件生成的文件、我们这么做已经好几年了。  似乎 一定会有一些误解。  我们在 该项目中使用了 IAR8051。  

    我将更新这里的结果。  

    非常感谢。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Toby、

    工程师应检查项目输出文件、其中只有 xxx.d51、xxx.map、xxx.sim 文件。  我粘贴图片以供您参考。 是否使用其他 IDE 来编译 项目? 非常感谢。  

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尝试以下建议以在 IAR 中启用编译.hex 文件:

    e2e.ti.com/.../hex-or-d51-or-more

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的建议。 我们将尝试。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Toby、

    我们尝试了设置并成功生成了 hex 文件。 但是、hex 文件在同一项目生成的 bin 文件在这些 PCB 上完全无法正常工作。  我们在两个 PCB 中进行了测试、同样的情况。

    从我们保存的文档中可以看出、IAR 生成的十六进制文件只能用于调试、而 大规模生产的十六进制文件应通过 bin 文件生成。  这是一个非常旧的文件,写它的人已经离开了,所以我们不知道为什么。  

    我想、IAR 生成的 hex 文件无法用于大规模生产有一定的原因、也有我们使用该方法从 bin 文件生成 hex 文件的原因。 我相信这个方法也是 TI 的技术支持人员说过的、可能就是现场的 FAE 工程师。  

    这对我们来说也很奇怪,因为我们从来没有遇到过这样的情况。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以尝试刷写从 SDK 中的示例生成的 hex 文件吗?
    例如 projects/ble/SimpleBLEPeripheral。

    由于2020年的 hex 文件仍然可以正常工作、因此这可能是新固件的问题。

    您是否可以进行一些更改、再次尝试您的步骤:

    1. 将2020_FW.bin (或2020_fw.hex)下载 到 PCB1。
    2. 使用 TI 的软件工具从 PCB1的闪存中读取数据并将其保存为.hex 文件、名为 test.hex
    3. 已使用 TI 的软件工具擦除 PCB2上的程序。 使用新生成的 test.hex 文件。 已选中"擦除、编程和验证"选项框。 编程和验证之后、 检查 PCB2是否工作。
    4. 针对 PCB1重复相同的过程(闪存测试十六进制)、检查 PCB1是否工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Toby、

    感谢您的支持。   在过去的几个月中、我们已经执行了多次程序来找到问题所在。

    1. 2020_fw.hex 来源于2020_fw.bin、在大规模生产中表现良好。 但生成它的工程师已经离开了。

    2.我们从2020_fw.bin 生成了 test.hex 文件,另存为 test.hex 文件,但除了生成它的印刷电路板外,其他任何印刷电路板都无法正常工作。  在这里,我们不确定2020_fw.bin 是确切的,但它与2020_fw.hex 一起发布到了批量生产工程师在2020年.   

    3. test.hex 无法在 pcb2和其他 PCB 中运行。 我们在超过10个 PCB 上进行了测试、  

    4. test.hex 可以在 pcb1中工作。  它似乎只能在生成它的源中起作用。

    我们  在其他 PCB 中重复上述过程、结果是相同的。 也就是说、生成的十六进制文件仅适用于生成十六进制文件的 PCB。 正如我的第一篇文章解释的。  

    非常感谢。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、我想我们可以说它们在第2步中是个问题、从2020_fw.bin 生成 test.hex。 这一生成过程在2020年起作用、但今天不起作用。

    您可以比较十六进制文件吗? 具体而言、比较1和2:

    1. 原始 2020_fw.hex
    2. 刷写2020_fw.hex 后从器件读取闪存生成的新 test.hex

    让我们知道您看到的任何差异。

    此外、如果您向我发送1和2、是否可以? 这样、我也可以尝试进行分析。
    出于隐私考虑、您可以在 E2E 上直接向我发送消息。
    (目前我正在尝试访问 CC2540 EVM)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Toby、

    昨天我在这里张贴了一条线索,但奇怪的是,它丢失了,也就是说,我们在旧文件中发现了一个通知。 据说生成 "良好"的十六进制文件之前需要 bin 文件剂量不运行。 否则、hex 文件无法在其他 PCB 上运行。 看来 bin 文件在运行后会更改闪存的内容。 但是,很难保证 bin 文件不会在通过 U 盘下载后运行。  

    我会通过直接消息将文件发送给您。 谢谢你的帮助,我很好奇发生了什么,如何解决它的明确。   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Joan:

    感谢您的更新。

    据说在生成 "好的"十六进制文件之前,bin 文件剂量不会运行。 否则、hex 文件无法在其他 PCB 上运行。 [/报价]

    是的、这是一条有用的线索。 我认为我们已接近于解决这一问题。

    我收到了您的直接消息、并将继续在那里提供支持。
    如果有通用/有用的信息、我将在该 E2E 主题上进行更新。

    谢谢。
    托比

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    据说在生成 "好的"十六进制文件之前,bin 文件剂量不会运行。 否则、hex 文件无法在其他 PCB 上运行。 看来 bin 文件在运行后会更改闪存的内容。 但是,很难保证 bin 文件不会在通过 U 盘下载后运行。  [/报价]

    我认为这应该是可以做到的、至少在 IAR 中是这样。

    请按照以下说明操作:

    -读出闪存:
    1.在 IAR 中通过下载和调试加载映像后, IAR 调试器应该在 main ()中停止
    2.然后在 IAR 工具栏中:Debug --> Memory --> Save
    3.以 intel-hex 格式选择完整闪存的地址范围
    4.该十六进制文件现在可以下载到其他设备

    在步骤1中、我不希望写入任何闪存内容、IAR 应在下载固件之前擦除所有闪存扇区。
    要确认 IAR 在下载之前正在擦除所有闪存扇区、请右键点击"Project"->"Options"->"Debugger"->"Download"。 然后检查是否在刷写前有一个"批量擦除"选项。