TI E2E 英文论坛海量技术问答的中文版全新上线,可点击相关论坛查看,或在站内搜索 “参考译文” 获取。

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.

[FAQ] CCS/CC2640R2F:CC26x2:如何将调试器连接到正在运行的目标?

Other Parts Discussed in Thread: CC1312R, CC1352R, CC1352P, CC2642R, CC2652P, CC2652R

工具/软件:Code Composer Studio

此解决方案适用于 CC26x0 和 CC26x2 器件(包括 CC2640R2、CC2642R、CC2652R、CC2652P、CC1312R、CC1352R、CC1352P)。

我已经使用 CCS 9.3 对其进行了测试。

如果您要在几天后查看目标的状态,或无法在连接调试器后重现崩溃,在目标正在运行时连接调试器可能会有所帮助。下面介绍具体步骤!

1 - 修改 GEL 文件

在一个非常简单的视图中,GEL 文件描述了设备调试器的工作方式(更多详细信息可在 CCS 的“Help”中找到)。默认情况下,Gel 文件要求器件在调试器启动时复位。我们可以对此进行修改:

     a - 识别所使用的 GEL 文件

  • 像往常一样启动调试会话
  • (如果需要)显示调试界面
  • 右键点击程序,即“Open GEL files View”。
  • 在 GEL 文件列表中,双击相应的 GEL 文件将其打开。为 CC26x2 器件选择“gel”。为 CC26x0 器件选择“cc26x0.gel”。

>> 另一种方法是在 <CCS directory>\ccs_base\emulation\gel 中查找 GEL 文件。

 

     b - 在 StartUp() 函数中,注释掉执行复位的代码。如果需要,可使用显式注释识别要注释掉的代码。

以下是修改后的 StartUp() 函数的内容:

StartUp(int major, int minor, int patch)

{

    /* Initialize memory map */

    memorymap_init();

 

    /* Debugger specific handling */

    if(GEL_MatchesConnection(".*TIXDS.*")== 1)

    {

        GEL_LoadGel("$(GEL_file_dir)/cc26xx_connect_util.gel");

        GEL_LoadGel("$(GEL_file_dir)/cc26x2_xds.gel");

 

        DefineResets(0);

 

        // Issue Board Reset to ensure device is in a known state

        // Note: If you want to attach to a running target without resetting the

        //       device, you must comment out the following 4 lines:

//        if(!GEL_IsConnected())

//        {

//            GEL_AdvancedReset("Board Reset");

//        }

    }

    else if(GEL_MatchesConnection(".*JLink.*")== 1)

    {

        GEL_LoadGel("$(GEL_file_dir)/cc26xx_jlink.gel");

    }

    else

    {

        GEL_TextOut("Error: Unknown debugger.\n");

        return;

    }

}

     c - 保存修改并关闭文件。关闭调试界面。

2 - 修改工程的“Debug Configuration”

点击 CCS 的“Debug”按钮(绿色虫子)后,CCS 将为您执行许多不同的操作。例如,CCS 将加载程序并停止在目标上执行代码。在我们的示例中,我们不希望 CCS 加载程序(因为我们已经有一个正在运行的程序……)。同样,我们并不一定要停止在目标上执行代码。


可喜的是,CCS 运行调试界面的方式是高度可配置的。因此,我们可根据我们的需求调整这些配置。

     a - 在“Debug”按钮的右侧有一个箭头。点击此箭头并选择“Debug Configurations...”。

     b - 选择您的工程。

     c - 阻止 CCS 加载程序:在“Program”选项卡中,选择正确的“Loading option”

     d - 阻止 CCS 停止目标:在“Target”选项卡中,取消选择选项“Hal the target on a connect”

3 - [可选] 禁止 CCS 在加载前构建程序。

由于不会加载任何程序,因此在启动调试会话时要求 CCS 构建image是没有用的。您可以使用“Flash”按钮右侧的小箭头禁用此选项。点击“Build Project Before Load”以禁用此选项

您现已准备就绪!可运行代码,并在需要时使用“Debug”按钮连接正在运行的目标,就像您通常所做的那样。



 

问:现在如何在设备上加载新映像?

答:最简单的方法是使用“Flash”按钮并选择要刷写的映像。请不要忘记手动重建image(因为我们之前已禁用此选项)。另一个解决方案是撤销我们之前所做的所有配置更改。第三种解决方案是使用不同版本的 CCS。

 

问:这些配置是否会影响我的所有器件?

答:这取决于修改内容

  • 在第 1 步中完成的修改(GEL 文件修改)会影响使用相同 GEL 文件的所有器件。换句话说,如果您修改了gel,它会影响所有 CC26X2 和 CC13X2 器件;如果您修改了 cc26x0.gel,则会影响所有 CC26x0 和 CC13x0 器件。

  • 请记住,默认情况下,两个不同的 CCS 版本使用*不*同的 GEL 文件。
  • 调试配置的修改仅影响一个工程