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.

[参考译文] CC2640:在 OAD CC2640定制板期间进行调试

Guru**** 2558250 points
Other Parts Discussed in Thread: CC2640

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/571399/cc2640-debugging-during-oad-cc2640-custom-board

器件型号:CC2640

CC2640 4x4定制板、ble_sdk_2_02_01_18、TI RTOS 2.20.1.08、

BTool v1.41.16、CCS6.2、XDS200调试器。

我在定制板上运行 simple_peripheral 的纯净副本。

我正在探测示波器上的两个 SPI 芯片选择引脚 MOSI 和 MISO。

示波器显示外部闪存芯片选择是唯一的选择

在整个 OAD 期间处于活动状态。

BLE 监听器正在显示 多个成功的块响应捕获。

在最大块计数结束之前、监听器会崩溃(附带屏幕截图)。

3、所有定制板引脚设置正确、 CCS 板级配置文件链接打开

定制板级配置文件。

BTool 显示 了发出的整个块计数、但最终我得到了

“OAD Not Successful (加载失败) CRC 错误显示为 OAD 状态。

(随附 BTool 日志文件)。

我有一个 CC 调试器、可以与监听器配合使用。 是否有调试方法

何时进行 OAD? 问题发生在哪里? 自此以后

即使应用不使用 SPI 驱动器、也不使用任何定制、也会发生错误

必须尽快排除电路板设置问题。

请帮助。

谢谢、

Priya

e2e.ti.com/.../OADFeb12017CleanSP.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于您没有看到 MISO / MOSI 上的任何活动、因此这听起来似乎是电路板配置的问题。 我会在第一次 SPI 写入期间设置一个断点、然后单步执行该函数以查看发生了什么情况。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Miso/ MOSI 上有活动、已在范围上得到证明。

    您为什么假设没有活动?

    是否可以有更深刻的反应?

     


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

    如何在 OAD 期间设置断点? 没有人回答这个问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您说"示波器显示的外部闪存芯片选择是在整个 OAD 期间唯一一个有效的芯片。" 因此、这似乎是一个矛盾。

    在任何情况下、您都可以在安装程序随附的 simple_peripheral 工程中与一个黄金示例进行比较。 您可以获取监听器捕获和标准 simple_peripheral 的逻辑跟踪、并将其与您的项目进行比较、以查看差异所在。 一旦您发现这种差异、请随时将其发布在此处、我们可以建议进一步的调试步骤。

    关于在 OAD 期间设置断点...这与在任何其他时间设置断点没有什么不同。 有关如何设置断点的详细信息、请参阅 SDG 的断点部分: software-dl.ti.com/.../ble-debugging.html
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想说的是唯一有效的 SPI CS。 在最近的线程中、我有多个 SPI

    芯片选择。 如果我没有,我肯定不会报告关于 MOSI/ MISO 的任何活动

    看到的任何内容。

    我有建议的调试信息。

    • 乍一看、对于开箱即用演示、监听器日志看起来没有什么不同

      和定制板(附加日志)。

    • 定制板在以下位置对 oadBlkNum++处的断点做出了响应

                粘贴在下面的 oad.c 中的部分。

                开箱即用演示从未通过调试器在此断点处停止

                显示了此断点已激活。

    • 开箱即用演示的示波器图片显示 MISO 引脚上没有活动、

               而定制板可以。 定制电路板引脚默认定义不同。

               在定制板中更改此默认值不会更改 MISO 引脚活动

               在 OAD 期间在示波器上。

    不确定该实验是否显示任何内容。 请告诉我您的想法。 定制板

    在 OAD 的末尾似乎有问题。

    谢谢、

    Priya

    const PIN_Config BoardGpioInitTable[]={

    Board_SPI0_MISO  | PIN_INPUT_EN | PIN_PULLUP | PIN_迟滞、

    void OAD_imgBlockWrite (uint16_t connHandle、uint8_t * pValue)

     // N.B.这必须保持易失性。

     volatile uint16_t blkNum = build_uint16 (pValue[0]、pValue[1]);

     //检查这是否为预期的块号。

     if (oadBlkNum== blkNum)

     {

      //将一个16字节块写入闪存。

      OADTarget_writeFlash (imagePage、(blkNum * OAD_BLOCK_SIZE)、pValue+2、

                OAD_BLOCK_SIZE);

      //递增接收到的块计数。

      oadBlkNum++;

     }

     其他

    e2e.ti.com/.../snifferLogCustomBoardOAD.psde2e.ti.com/.../SnifferLogOADLP.psd

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我一直将此方法与 system_printf 和结合使用
    使用定制板调试 OAD 的作用域。

    在 OAD 期间、定制板不会从外部闪存读取。
    OADTarget_getCurrentImageHeader 内发生 OADTarget_getCurrentImageHeader、
    外部闪存成功打开。

    外部闪存为256kB。 外部闪存是否可能获得
    地址不正确? 该值应该在 ext_flash_layout.h 内设置为什么?
    #define EFL_ADDR_META 0x78000

    我还尝试了#define EFL_ADDR_META 0x1C000


    在 simple_peripheral_lp_app.map 文件中的何处可以找到此起始地址?

    谢谢、
    Priya