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] [参考译文] [常见问题解答] AM2634:如何调试/监控运行状态下的变量

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1317101/faq-am2634-how-to-debug-monitor-a-variable-in-running-state

器件型号:AM2634

如何才能看到 变量在运行状态下实时/改变其值?

如何根据时间绘制可变图形?

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

    有关如何操作的常见问题解答-

    1. 调试/监控运行状态下的变量(直观查看是否有变化)
    2. 根据时间绘制可变图形(如果可能)

    调试/监控运行状态下的变量(直观查看是否有变化)

    1. 要在运行时监控变量而不停止目标、可在访问调试访问端口(DAP)时使用存储器浏览器。
         (有关 DAP 支持的更多信息、请参阅14.1.3.3.1节。  DAP  解决方案。)

      1. 为了使内存浏览器能够访问变量、变量必须为全局变量。
        如果变量出现在  内存。

        • 您可以在存储器浏览器中直接搜索该地址。

        • 否则、a  缓存写回无效  完成的三角计算。
             (请参阅 AM263x MCU+ SDK 用户指南→驱动程序移植层→高速缓存)

          /*
           * Declare variable globally and get it's address and size
           */
          uint32_t counter;
          void * addr = &counter;
          uint32_t size = sizeof(counter);
           
           
          /*
           * Declared the value of the variable in main function and decrementing it for this example.
           */
           
          counter = 100;
           
          while(counter)
          {
              counter--;
              DebugP_log("Counter: %u\r\n", counter);
              CacheP_wbInv(addr, size, CacheP_TYPE_ALL); /* Cache write back invalidate - flush contents of cache to memory so that a DMA or HW peripheral can see the data */
          }

        • 现在、请按照以下步骤进行持续监控:
        • 按照  MCU 应用指南 - CCS_AM263xCC - https://software-dl.ti.com/mcu-plus-sdk/esd/AM263X/latest/exports/docs/api_guide_am263x/CCS_LAUNCH_PAGE.html#CCS_LAUNCH 中的说明、启动 Target_Launch 的.ccxml 文件

        • 连接到 R50_0内核并加载您的.out 文件。 在恢复执行之前、请执行其余步骤。

        • 您将看到  AM263X  中的目标配置" 调试 "窗口。 右键单击.ccxml、然后选择  "显示所有内核"


        • 连接  DAP  则会选中"File"。



        • 转至  View→存储器浏览器


        • 选择  CS_DAP_0→选择系统视图→将其固定到浏览器→选择持续刷新选项  →输入变量的存储器地址


        • 现在 恢复内核执行 、您可以查看实时更新的全局变量的值、而无需暂停 R5内核。
                

      2. 如果您的变量位于  TCM。

        • 有关器件存储器映射、请参阅 AM263x TRM 中的表2-1、从 DAP 访问 TCM 存储器。


        • 由于 TCM 中的存储器访问速度相当快、因此请在代码中添加一些延迟以监控变量。

          /* Variable in TCM */
          uint32_t counter __attribute__((__section__(".tcmVarSection")));
           
           
           
          /*
           * Declared the value of the variable in main function and decrementing it for this example.
           */
              counter = 100;
           
              while(counter)
              {
                  counter--;
                  DebugP_log("Counter: %u\r\n", counter);
                  ClockP_sleep(1);
              }
           
          }

        • 选择  CS_DAP_0→选择系统视图→将其固定到浏览器→选择持续刷新选项  →在存储器浏览器中搜索相应地址


        • 现在 恢复内核执行 、您可以查看实时更新的全局变量的值、而无需暂停 R5内核。
               

    绘制一个基于时间的可变图形

    绘制可变图形的能力。

    1. 将变量添加到"Expressions"窗口→右键点击并选择"Graph"


    2. 检查 Graph Properties、查看是否将 Start Address 设置为变量的地址


    3. 选择持续刷新


    4. 现在恢复内核执行、您可以在运行时以线形图的形式查看变量随时间变化的情况。