CYW20719之debug 二

通过Arm调试端口SWD和J-Link调试

WICED蓝牙设备的硬件调试可以使用OpenOCD支持的接口完成。但是,如果你的设备处于BLE连接状态,当CPU在调试器中停止时(在BLE连接超时之后),它会删除该连接。因此,对于BLE应用程序,通常使用BTSpy进行调试,而不是使用硬件调试器。

在本节中,我们将描述两组不同的硬件:Cypress MiniProg4和Segger J-Link调试器。也可以使用一个附加的ARM-JTAG-SWD适配器的Olimex ARM-USB-TINY-H调试探针。对于J-Link和Olimex,可能需要一个适配器,将20针连接器转换为占地面积小的10针连接器,这取决于组件上可用的调试连接器。下表列出了每个选项所需的硬件:



下面的图片显示了每个配置的调试设置:

在名为“Hardware Debugging for CYW207xx and CYW208xx.pdf”的指南中详细描述了设置和运行调试器的过程。本指南可从Eclipse中获得,因此这里不再重复相关信息。要从Eclipse IDE中访问该指南,请执行以下操作:

Quick Panel > Documentation > WICED Bluetooth SDK Documentation > CYW208XX API Reference > WICED Hardware Debugging for Bluetooth Kits

一些重要的注意事项:

  1. 将makefile中的ENABLE_DEBUG设置为1将在文件wiced_btsdk/dev-kit/baselib/20819A1//WICED/common/spar_utils.h 中做三件事:

    a.配置SWD引脚。

       CYW920819EVB-02 Kit使用P2用于SWD_CLK,使用P3用于SWD_IO。如果你的硬件使用的pin与文件中指定的不同,你需要修改它。

    b.关闭看门狗定时器。

    c.在程序的开头启用一个繁忙-等待循环,这样应用程序直到用户连接到调试端口并更改一个变量为continue时才往下跑。这样以来,用户就可以从应用程序的起点开始调试。因为设备在上电时处于忙碌-等待循环中,在编程或重置之后,设备将不会显示任何活动,直到用户从调试器内部跳出循环。

  2. 有一个拨码开关(SW9),控制P2和P3到调试头的路由。开关必须处于OFF位置以启用调试标头连接。当开关处于ON位置时,P2和P3路由到Arduino头引脚。

  3. 由于调试器的SWD使用P2 (SWD_CLK)和P3 (SWD_IO),这些引脚可能不会用于应用程序中的其他任何东西。

  4. 调试器连接到正在运行的目标。因此,在运行适当的Debug Attach启动之前,必须先执行构建/程序步骤。

  5. 如果你在使用调试后重新下载程序有问题,尝试以下方法:

  •    按住工具箱上的“Recover”按钮。
  •    按下并释放“Reset”按钮。
  •    松开“Recover”按钮。
  •    尝试再次下载程序。
  1. 除了在文件wiced_btsdk/dev-kit/baselib/20819A1//platforms/CYW20819A1_openocd.cfg中更改默认适配器设置之外,Olimex调试探针的工作方式与MiniProg4相同。所需要的更改是取消对Olimex适配器配置的2行注释,并注释掉对KitProg3适配器配置的1行(在本例中,KitProg3和MiniProg 4是等价的)。文件的适用部分如下所示:


  1. 如果你在启动调试器时收到关于另一个已经运行的实例的错误消息,打开任务管理器(Ctrl-Alt-Del)并结束任何名为arm-none-eabi-gdb.exe的任务



使用Debuger

一旦您配置了固件、对板进行了编程并启动了调试器,应用程序将位于BUSY_WAIT_TILL_MANUAL_CONTINUE_IF_DEBUG_ENABLED循环中。开始执行(如果它还没有运行),然后暂停以确保固件在循环中。

在Quick Panel的“Variables”选项卡中,删除spar_debug_contine的值,输入新值1并按enter键。一旦更改了spar_debug_continue的值,就可以继续执行,程序将跳出繁忙等待循环。

当程序执行暂停时,您可以添加断点以在代码中的特定点暂停。要添加断点,请打开源文件,单击需要断点的行,双击代码窗口左侧的栏,或者右键单击该区域并选择“Toggle breakpoint”。启用的断点是旁边带有黑色复选标记的蓝色圆圈。


一旦线程由于断点而挂起,您将看到上面以绿色突出显示的代码行,您将看到线程由于在调试窗口中出现断点而挂起,如下所示。


您可以通过双击源代码中该行旁边的绿色圆圈或快速面板中的“断点”选项卡来启用或禁用断点。

如果断点是在启动当前调试会话之前创建的,那么它们可能与当前线程没有关联,并且将用一个没有选中标记的蓝色圆圈表示。要在当前线程中启用断点,右键单击所需的断点并选择breakpoint Properties…


如果在“断点”窗口中没有看到任何断点,请关闭“显示所选目标支持的断点”按钮,如下所示。


点击红色的“终止”按钮,停止调试。一旦调试停止,您可能希望切换回Project Explorer选项卡,而不是Debug选项卡。或者,您可以使用菜单项Window > Perspective > Reset Perspective将ModusToolbox透视图重置为默认的窗口大小和位置。


关于调试的一些额外注意事项:

  1. 单步执行代码需要一个自由断点(free breakpoint )。
  2. 有两个可用的硬件断点。
  3. ROM操作码只能使用硬件断点。
  4. 该设备使用ROM和RAM作为固件。例如,许多WICED API函数将调用ROM代码来支持。
  5. 源代码和符号没有提供ROM和一些补丁库区域。源代码调试将仅限于您拥有源代码的代码。
  6. 通常,如果断点不可用,GDB会忽略step命令。

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論