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.

[参考译文] CC2650:使用 Segger Ozone 和 J-link 调试 CC2650

Guru**** 2581345 points
Other Parts Discussed in Thread: SEGGER, CC2650, CC2630

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/688027/cc2650-debugging-cc2650-with-segger-ozone-and-j-link

器件型号:CC2650
主题中讨论的其他部件:SEGGERCC2630

我想使用与 Segger Ozone 的 J-Link 在 CC2650 Launchpad 上调试 Contiki-NG 代码、但我无法单步调试代码。 我想知道、是否需要在臭氧或其他地方设置任何特殊设置才能实现这一目标。 我使用调试符号构建了 Contiki、可以将.elf 文件加载到 Ozone 中、而不会出现任何问题。 我还可以将代码下载到 CC2650中、但它不会在 main 停止、臭氧报告"CPU Running"。 但是、我加载的代码实际上不会运行、因为在我使用硬件按钮手动复位 CC2650之前、我不会在串行控制台上获得任何输出。 如果我在下载代码后停止调试器、它位于地址0x1000 3DE2、这似乎不是有效的存储器。

我已在 Contiki 中将 CCXXWARE_CONF_JTAG_interface_enable 标志设置为1、因此应启用所有调试接口、CCFG 标志应按如下方式设置:

#define SET_CCFG_CCFG_TI_OPTIONS_TI_FA_ENABLE          0xC5
#define SET_CCFG_CCFG_TAP_DAP_0_CPU_DAP_ENABLE         0xC5
#define SET_CCFG_CCFG_TAP_DAP_0_PRCM_TAP_ENABLE        0xC5
#define SET_CCFG_CCFG_TAP_DAP_0_TEST_TAP_ENABLE        0xC5
#define SET_CCFG_CCFG_TAP_DAP_1_PBIST2_TAP_ENABLE      0xC5
#define SET_CCFG_CCFG_TAP_DAP_1_PBIST1_ENABLE      0xC5
#define SET_CCFG_CCFG_TAP_DAP_1_WUC_TAP_ENABLE         0xC5

有没有关于我可以做什么的想法/检查以弄清为什么调试不起作用并修复它? 我还在定制板上尝试了 CC2630、结果类似、在手动复位芯片之前代码不会运行。

谢谢、
theo

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

    我将尝试找到一位熟悉此调试工具并可以调查您的问题的专家。 同时、您是否与 Segger 支持部门交谈过或浏览过他们的 Wiki 页面?

    www.segger.com/.../
    https://forum.segger.com/
    wiki.segger.com/Main_Page

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

    我没有就此问题与 Segger 联系、但我查看了他们的论坛和 wiki、没有找到任何相关帖子。 Segger 似乎希望调试能够与 J-Link 和 CCS 配合使用、因此我可以下载 CCS 并在今天稍后进行试用、以进行完整性检查。

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

    我安装了 CCS 并下载了 rfCarrierWave_CC2650_LAUNCHXL_TI 示例。 借助 CCS、我能够使用 J-Link 仿真器单步执行代码。 然后、我取出了相同的.out 文件并将其导入到 Segger Ozone 中。 加载后、程序在 main 处停止、我能够单步执行代码、直到调用 rf_runCmd 用于 CMD_TX_TEST 的行。 此时、调试器失去对执行的控制、如果我暂停、调试器位于程序代码之外的地址0x1000 0486处。 这似乎与我在尝试调试 Contiki 代码时看到的类似、因此我想知道这两个条件是否相关。 在 rfCarrierWave 示例中、TI-RTOS 只是等待信号量完成命令、因此可能转换到该状态会导致调试器失去执行跟踪。

    不过、我不确定如何解释为什么在加载 Contiki 代码后、臭氧不会在 main 停止。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您将无法调试预编译的 TI-RTOS 库、这就是调试器"失去控制"并在无法识别的地址停止的原因。 但是、如果您在应用程序代码中设置了断点、则访问后它将停止。 您是否遇到了该示例运行本身的任何问题?

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    该示例运行良好、因此这是一个良好的完整性检查、使 Ozon+JLink+CC2650能够良好地协同工作。

    我的主要问题是、臭氧调试器不会在 main 停止、而是在我加载 Contiki 映像后进入杂草中。 因此、我比较了工作臭氧示例和我的 Contiki 臭氧项目中使用的切入点。 事实证明,我在 Contiki 上使用的臭氧.jdebug 文件缺少 AfterTargetReset()和 AfterTargetDownload()的实现,因此 SP 和 PC 没有正确设置,这就是为什么在 main 没有停止的原因。 我认为这是因为我使用的臭氧项目文件是由臭氧的旧版本创建的。 当我修复此问题时、程序会按预期停止作为主程序。

    现在、当我尝试通过臭氧来调试 CC2650上的 Contiki-NG CoAP 示例客户端时、我可以顺利完成前几个函数调用、但在我连接调试器时、程序似乎会在 MAC 名称打印出来后进入工作区。 这可能是调试器引起的一些计时问题、因为当我在没有调试器的情况下运行程序时、不会发生这种情况、我将深入探讨这种情况。

    自从我开始使用 JLink 和 Ozone 后、我将关闭此问题。