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.

[参考译文] CCS/CC1352R:不使用 XDS110探针设置软件断点

Guru**** 2562120 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/959830/ccs-cc1352r-software-breakpoints-are-not-set-with-xds110-probe

器件型号:CC1352R

工具/软件:Code Composer Studio

您好!

就我从几个网页中读取的内容而言、在使用 code composer 和 XDS110调试探针进行调试时、应该可以设置软件断点。 我了解到、我在断点菜单中设置为"断点"的断点将转换为软件断点。 只有菜单项"Hardware Breakpoint"会设置硬件断点。

但是在我的系统上、每个断点都是一个硬件断点、因此我只能设置极少的断点数量。

在 Project / Properties / Debug / Misc 下、选中"Allow software breakpoints to be used"复选框。 我甚至还不理解的是、三个器件显示在调试配置下

我想 Cortex-M4_0是正确的选择。 即使在断点数量非常少的情况下进行调试也是有效的。

此致
Erwin

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

    Erwin、您好!

    [引用 USER="Erwin Ahlers"]我了解到我在断点菜单中设置为"断点"的断点将转换为软件断点。 只有菜单项"Hardware Breakpoint"会设置硬件断点。[/quot]

    这不一定是真的。 "Breakpoint"选项将使用默认设置。 默认情况下、检查 调试器存储器映射 以查看存储器地址是否配置为可写。 如果是、它将使用软件断点。 如果不是、它将使用硬件断点。

    请检查您的调试器内存映射配置为什么。

    [引用 USER="Erwin Ahlers"]我甚至还不理解的是、在调试配置下显示了三个器件

    在本例中、您可以忽略前两个。 IcePick 是一个 JTAG 路由连接器、 虽然 DAP 对于实时存储器存取非常有用、但 CCS 在进行调试存储器存取时会自动使用它。 正确的是、Cortex-M4是要进行调试访问的主 CPU。

    谢谢

    Ki

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

    在大多数器件上、如果代码位于闪存中、则 CCS 将使用硬件断点。  如果代码位于 RAM 中、则 CCS 将使用软件断点。  在 CC1352上、您的代码将主要位于闪存中。

    此致、

    John

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

    尊敬的 John:

    有道理。 因此、只要我们仅从 CC1352的内部闪存运行代码、就无法使用软件断点。 因此、我不能同时激活超过大约4个断点。 或者、当我使用与 XDS110不同的调试探针时、我是否可以拥有更多?

    此致
    Erwin

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

    我找到了存储器映射、证明了所有闪存都是只读的。

    在存储器映射中、我找到了一些标记为读取/写入的区域、但在 CC1352数据表中找不到这些区域。 您能告诉我这些领域背后的原因吗?

    0x2100C000至0x2100C7FF
    0xE000E000至0xE000EFFF
    0xE00FE000至0xE00FEFFF

    以下区域甚至标记为"只读"、我不知道后面的内容。

    0x50001000到0x50001FFF
    0x50002000到0x500027FF
    0x50003000到0x50004FFF

    此致
    Erwin

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

    [引用 USER="Erwin Ahlers"]或者、如果我使用与 XDS110不同的调试探针、我可以拥有更多的内容吗?

    可用的硬件断点数量由器件而不是调试探针决定。

    谢谢

    Ki

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

    [引用用户="Erwin Ahlers"]

    在存储器映射中、我找到了一些标记为读取/写入的区域、但在 CC1352数据表中找不到这些区域。 您能告诉我这些领域背后的原因吗?

    0x2100C000至0x2100C7FF
    0xE000E000至0xE000EFFF
    0xE00FE000至0xE00FEFFF

    以下区域甚至标记为"只读"、我不知道后面的内容。

    0x50001000到0x50001FFF
    0x50002000到0x500027FF
    0x50003000到0x50004FFF

    [/报价]

    从用于 cc13x2的启动 GEL 文件中、我看到:

    GEL_MapAddStr (0x00000000、0、0x00058000、"R"、0); /*闪存*/
    GEL_MapAddStr (0x10000000、0、0x00040000、"R"、0); /* ROM */
    GEL_MapAddStr (0x11000000、0、0x00002000、"R|W"、0); /* GPRAM */
    GEL_MapAddStr (0x20000000、0、0x00014000、"R|W"、0); /* SRAM */
    GEL_MapAddStr (0x21000000、0、0x00001000、"R|W"、0); /* RFC_SRAM */
    GEL_MapAddStr (0x21004000、0、0x00004000、"R|W"、0); /* RFC_ULL */
    GEL_MapAddStr (0x21008000、0、0x00000800、"R|W"、0); /* MDM_RAM */
    GEL_MapAddStr (0x2100C000、0、0x00000800、"R|W"、0); /* RFE_RAM */
    GEL_MapAddStr (0x40000000、0、0x000E1028、"R|W"、0); /*外设*/
    GEL_MapAddStr (0x40031000、0、0x00001000、"无"、0); /*受保护*/
    GEL_MapAddStr (0x50001000、0、0x00000800、"R"、0); /* FCFG1 */
    GEL_MapAddStr (0x50002000、0、0x00000800、"R"、0); /* FCFG2 */
    GEL_MapAddStr (0x50003000、0、0x00002000、"R"、0); /* CCFG */
    GEL_MapAddStr (0xE0000000、0、0x00003000、"R|W"、0); /* CPU_ITM、CPU_DWT、CPU_FPB */
    GEL_MapAddStr (0xE000E000、0、0x00001000、"R|W"、0); /* CPU_SCS */
    GEL_MapAddStr (0xE0040000、0、0x00001000、"R|W"、0); /* CPU_TPIU */
    GEL_MapAddStr (0xE00FE000、0、0x00001000、"R|W"、0); /* CPU_TIPROP */

    这些评论中的某些含义是什么、我不确定、因为我对该器件不太熟悉。 您可能对他们更熟悉。  

    希望这对您有所帮助

    Ki

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

    这间接回答了我的问题。 我永远不能比提供的硬件断点数量更少。

    这是固件开发的一个大缺点。 为了消除这种限制、我必须在代码运行的位置将额外的 RAM 附加到硬件上、对吧?

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

    Erwin、

    可用的硬件断点数量是器件(CC1352)的函数、而不是调试探针。  即、它们是器件上调试 IP 的一部分。 因此、您受到器件上断点的限制。  需要注意的一点是、CCS 有时可以将其中的一些断点用于程序断点的末尾、或者如果您使用的是使用断点的 CIO (printf)、则可以使用这些断点。

    此致、

    John

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

    是的、这很有用。

    感谢给出的一般回答。 我们希望通过不同的调试设备获得更好的调试支持。 但是、现在我们必须使用这个有限数量的断点。