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 文件。
- 调试配置的修改仅影响一个工程
Cherry Zhou:
我们建议您在发布新问题之前先搜索 E2E支持论坛,E2E支持论坛已经拥有数十万个已得到解答的话题。 这通常是解决问题的最快方法。
,
chuan li:
您好,我目前想在CC26x2 launchpad 蓝牙AOA UI例程运行时调试板子,按照此文章的做法可以成功在不打断代码运行情况下在CCS中查看板子各寄存器的状态和一些全局变量的值。
但此状态下不能进行断点、单步运行等调试,只能添加或者观测一些全局变量,看不到一些想观测的局部变量,也看不到程序暂停时停留的代码位置。这个有办法解决吗?
,
Cherry Zhou:
您好,我们建议您将您的问题发布在以下论坛中,会有专门的工程师为您解答:
https://e2echina.ti.com/support/wireless-connectivity/bluetooth/f/bluetooth-forum
TI中文支持网

