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.

[参考译文] CC2340R5:Thread

Guru**** 2589265 points
Other Parts Discussed in Thread: CC2340R5

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1348946/cc2340r5-thread

器件型号:CC2340R5

CCS 版本:12.2.0.00009  

SDK 版本:7_10_00_35  


我为 UART 创建了一个线程、但在我编写完代码后、我对其进行了测试、发现其显示方式与此类似

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

    您好、Ryan Li:

    我希望你们做得好。 看起来 CCS 试图打开一个不存在的文件位置(...+ 0x9DE)、你能向我详细说明如何在代码中设置你的线程吗?  

    谢谢。
    A·F

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

    我创建了两个线程、并将完全相同的代码移动到了另一个线程。 在调试模式下、按 F6 (步越)可以继续执行、但如果我切换到 F5 (步入)、将发生相同的情况。

    我按如下所示设置我的线程




    或者我的线程堆栈大小是否已满、从而导致了这种情况?


    如下所示、当我执行这个步骤时、将弹出右侧的错误。


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

    您好、Ryan Li:

    我们可以检查堆/内存使用情况的状态、以查看是否已填充或将要填充任何内容。  

    "Memory Allocation"视图

    简介—运行时对象视图文档

    如果这两项检查返回器件正常工作(未填充 IE)、那么我们可以改为尝试将两个线程的代码(如果代码不是太大)放在空项目中、看看我们是否可以重新造成问题。  

    谢谢。
    A·F

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

    我检查存储器使用状态、如下所示


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

    您好、Ryan、

    了解一下您的内存使用情况:

    闪存虽然有点 大,但没有完全填满,您能展开"闪存"部分看看是否有任何缩进数组被过度填充吗?

    --内存使用中的其他参数看起来不错(NVS 和 CCFG 应该为100 %)。  

    只要堆不超过设定的大小、堆也看起来正常。  

    作为一项测试、如果包含不良行为代码的 if 饱和被更改或删除、程序是否会按预期工作(减去我们需要更改/删除的功能)?

    谢谢。
    A·F

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

    您好,Alex,

    我尝试使用我自己写的项目的前一版本。 此版本已经过测试、在调试时未显示无法找到文件位置的错误消息。

    当我逐步将新版本的项目内容添加到上一版本时、我发现以下情况

    添加这行代码时、会弹出一条消息、指出找不到文件位置。 将其删除后、它将再次正常工作。

    g_tFFF1.pData[g_tFFF1.ucLen - 1] = Checksum_GetResult(g_tFFF1.pData , g_tFFF1.ucLen - 1);


    但我认为这不是根本原因、因为如图所示、我还在上面添加了完全相同的代码、但没有问题。
    那么、我进行了另一个测试、我在上面添加了代码、然后我在两个位置设置断点、如下图所示

    (1)  判断 IF 的断点设置也会显示找不到文件位置。

    (2)但我在 IF 判断中设置了断点、但可以成功中断、并且找不到文件位置。




    这是否确认 CCS 在编译期间优化了某些代码? 因此、在调试时找不到文件位置、是否无法设置断点?
    或者、当 IDE 编译为.out 时是否存在问题?

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

    您好、Ryan、  

    我也在上面添加了完全相同的代码,但没有问题。

    我想检查是否设置 ucLen = 5;可能会导致问题,您可以将此语句添加为 if (...)的测试吗? 能够很好地判断问题是否发生的声明?

    这是否确认 CCS 在编译期间优化了某些代码? 因此、调试时找不到文件位置、无法设置断点?

    -如果您让程序正常运行而不进行调试(假设添加某种类型的指示器、如 GPIO 切换)、优化可能会成为一个调试问题(而不是运行时问题)、那么它是否正常运行? 您看到 GPIO 进行切换了吗?  

    --更改优化级别,因为额外的测试可能会有所帮助。  

    谢谢。
    A·F

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

    我看了看乌克伦,这不是影响的原因。 我尝试过修改属性->配置从发行版更改为调试和优化->选择优化级别:Z 更改为1。 将不会弹出关于找不到文件位置的消息。

    我猜这可能是由优化问题导致的、因此我改回原始项目进行测试、并尝试将级别"0"更改为级别"g"一次。 我发现、使用级别"FAST"可获得最佳结果。 但是、当执行某些代码时、它仍会弹出一条消息、或者在设置断点时、将弹出以下图片。




    是因为我可以访问 TIRTOS 源代码吗?

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

    您好、Ryan、

    "Breakpoint manager"问题是由于使用所有断点资源(CC2340R5上为4)导致的、只需删除未使用的断点、您将不再看到错误消息。

    我尝试修改属性->配置从发行版更改为调试和优化->选择优化级别:Z 更改为1。 将不会弹出找不到文件位置的消息。

    因此,在这种情况下,似乎改变优化级别缓解了一些问题。  

    您可以在 SDK 优化—SimpleLink CC23xx SDK 专有射频用户指南7.40.00文档中阅读有关优化的更多信息。 

    -只是为了确保,但如果你不在调试模式,你的代码,和前面的问题陈述,工作?  

    --你是否试图看看 GPIO 是否切换后,程序有错误工作? (这将告诉我们正常运行的程序是否可以到达该语句并继续正常运行)。  

    TIRTOS 源代码?

    -您的图片显示 FreeRTOS 是与 TIRTOS 不同的 RTOS、TIRTOS 用在何处?  

    谢谢。
    A·F

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

    (1)I have confirmed that no other breakpoints are set, but this message will pop up in some codes.
    And when I was debugging before, this message also appeared when I set the third breakpoint. There was no way to set more than 2 breakpoints at the same time.

    What is the cause of this? Is it possible that this is the cause of the problems I mentioned above?

    (2)In Debug mode, when I do not set a break point or use F5 (step into)/F6 (step over), it can operate normally, and the GPIO is also switched successfully.
    This means that the above problems will only occur when setting a break point and using F5/F6

    (3)Sorry, I said it wrong. I am using FreeRTOS. Is it possible that when I try to enter the area where the original code of FreeRTOS is running, the file location cannot be found when setting a breakpoint?

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

    您好、Ryan、

    1) 1)作为个人经验、当我自己的断点不工作时、我需要重新安装 CCS、但我认为这是不同的情况(那种情况是断点不能在所有工程上工作、这是由于我最后遇到了安装问题)。 只是为了确认您何时进入调试模式、但不要按"Play"、并点击"View"->"breakpoints"、您可以看到此菜单并看到没有设置断点(如果您尚未设置断点)。  

    -您包含在第一个点的图像没有为我加载。

    设置四个断点是否在其他项目中工作?  

    2)这是有点好听(减去奇怪的行为),所以没有断点,程序工作正常,但有问题,我可能需要内部询问,如果我们注意到类似的问题,只有在触发断点时才出现。  

    3)没有问题! 有时我在调试时也打开了错误的项目、当您打开了很多项目时、这会让您感到有些困惑。  

    -作为额外的一个步骤,新的 F3 SDK 包括 FreeRTOS 项目自动,所以我想你是否会有同样的问题在那里或没有。  

    谢谢。
    A·F

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

    你好,亚历克斯
    (1)
    包含在第一个点中的图像旨在向您显示我没有设置任何断点

    到目前为止、我只使用了 uartcallback 和 basic_ble 项目。 它们都不能设置超过2个断点。 如果我设置第三个、将出现上述消息。

    (2)期待你的答复。 我想知道这是与 CCS 版本还是与编译器版本有关。 我当前的 CCS 和编译器版本都是旧版本。

    (3) 我会在不久的将来尝试更新到最新的 SDK 版本。 如果这些问题仍然发生,我会再次提出。thnaks

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

    您好、Ryan、

    是的、试用全新 CCS (12.5或更高版本)和全新 SDK (7.40)也许是个好主意、因为它们的可靠性也是更新的!  

    一个不错的项目是关于 CCS 文档的以下网页:  7.调试–Code Composer Studio 12.7.0文档。  

    断点部分提供了一些与此线程相关的额外有用信息。  

    -并且似乎优化器可以影响图片中语句之后的断点:  

    谢谢。
    A·F