工具/软件: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 文件。- 调试配置的修改仅影响一个工程