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.

[参考译文] F29H85X-F29H85X-EVM:SOM SOM 与 Code Composer Studio 进行 F29H85X-F29H85X-EVM 的调试会话

Guru**** 2413830 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1532197/f29h85x-som-evm-debug-session-for-f29h85x-som-evm-with-the-code-composer-studio

器件型号:F29H85X-EVM-EVM SOM


工具/软件:

很难 SOM  通过 Code Composer Studio 开始 F29H85X-F29H85X-EVM 的调试会话。
我编译了一个相当大的工程、当我尝试在电路板初始通电后启动调试会话时、调试会话会启动、但 CPU 不会在“main"函“函数中停止、始终显示为“running"。“。 无论我尝试用我的项目启动调试会话多少次、我都无法成功地使调试器正常运行。

下面是 catch — 如果我加载一个小的小事示例,调试会话就可以正常启动。
小项目调试开始后、我可以切换到我的大项目(只要我不对电路板进行下电上电)、然后右键点击“CPU1->Reset CPU“、然后加载我的更大应用程序、之后调试会话就会正常开始。
在我看来、仿真器/CPU 逻辑中似乎存在某种竞争条件、阻止了大型代码库的正常操作?  或者、仿真器配置文件或项目文件中可能有一些可以调整的设置、我尝试了“Properties->Debug"中“中所有可能的选项排列、但似乎没有解决上述加载/调试问题。
我使用的是 CCS 20.2.0。 据我所见、CCS 18 不支持 C29 架构。
我尝试从头开始重新创建工程并获得相同的结果 — 无法进行调试/运行
我尝试使用大型工程中的代码扩展小型示例 — 同样的结果-无法进行调试/运行
显然 、链接器 cmd 文件需要为“.text"段“段分配更多的 RAM 来加载更大的代码、因此我更改了行
.text     :{}> SRAM_LPAx | SRAM_LDAx
当我尝试使用  SRAM_CDAx 而不是 SRAM_LDAx 时、启动/调试中没有任何变化
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我尝试启动调试会话时

    可以通过不同的方法启动调试会话。 在这里、我假设您右键点击工程并选择“Debug Project“? 如果是、CCS 将使用默认的目标配置文件 (ccxml) 启动调试会话。

    一旦针对一个小项目开始调试、我就可以切换到我的大项目(只要我不对电路板进行下电上电)、然后右键点击“CPU1->Reset CPU“、然后加载我的更大应用程序、调试会话在此之后就会正常开始。

    这听起来您的小型 CCS 工程有一个“正确“的目标配置文件、而您的较大工程没有。 我建议比较这两个工程中的目标配置文件。 您还可以通过右键点击工作目标配置文件来启动无工程调试会话。 调试会话启动后、您可以从任何所需的项目加载.out。  

    我使用的是 CCS 20.2.0。 据我所见、CCS 18 不支持 C29 架构。

    正确、CCS 20 及更高版本支持 F29 器件。  

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

    目标配置是相同的。 实际上它是一个小项目的副本。  如果在加载程序后尝试减少调试、它会进入“运行程序“状态并忽略任何断点设置。

    这些都是非常基本的步骤、在 提出 问题之前已经尝试过所有这些步骤。
    为了涵盖更多基础、在 macOS 版本的 CCS 和 Windows 上也可以观察到相同的行为。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果我在加载程序后尝试减少调试、它会进入“运行程序“状态、并忽略任何断点设置。

    您能够启动无工程调试并连接到 CPU? 此时 CPU 的状态是什么? 如何在加载任何程序之前?  

    https://www.ti.com/video/6369936052112 

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

    此外、您能否说明您拥有的 F29 SOM EVM 是哪个版本? 检查 EVM 已知问题列表是一项很好的完整性检查、目的是排除 EVM 硬件是问题的根源。  

    EVM 的版本和组装可通过印刷电路板 (PCB) 上的标记来确定。 EVM 版本由诸如“MCU144A"等“等丝印标签指示、其中“A"是“是 EVM 版本。 EVM 组件由电路板上的标牌指示、例如“-001"。–001。</s>“  

    https://www.ti.com/lit/ug/spruje4d/spruje4d.pdf 

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

    Boris,

    除了 Gus 的问题外、您能否确认在 SOM 上配置的引导模式、这是一个单核工程?  

    是否为项目自动运行、程序加载和 MISC 设置提供了适当的调试设置。 您可以参考第 7.2.3 节 https://software-dl.ti.com/ccs/esd/documents/users_guide_ccs_20.1.1/ccs_debug-main.html 

    此致、

    Aishwarya

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

    这是单核 CPU1。  EVM 为 MCU144A。  SOM 配置为闪存引导、但 未对闪存进行编程、这两个项目都是使用 RAM 链接器脚本构建的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引述 userid=“593585" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1532197/f29h85x-som-evm-debug-session-for-f29h85x-som-evm-with-the-code-composer-studio
    我编译了一个相当大的工程、当我尝试在电路板初始通电后启动调试会话时、调试会话会启动、但 CPU 不会在“main"函“函数中停止、始终显示为“running"。“。 无论我尝试用我的项目启动调试会话多少次、我都无法成功地使调试器正常运行。
    [/报价]

    尊敬的 Boris:

    这种状态时的功耗。 您是否能够运行以下脚本? 您可以检查 CPU 复位原因、任务时钟检测、ESM_CPUx、ESM_SYS、错误聚合器状态。 您是否还可以验证是否是调试器属性->类别“调试器选项“->自动运行选项设置为运行符号“main"?“? 您是否可以探测 XRSn 引脚以查看您的器件是否正在复位?

    此致、

    Ryan Ma

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

     正确设置了对 main 的调试运行、与屏幕截图中的完全相同:

    C29xx_CPU1:在目标连接函数上执行
    C29xx_CPU1:连接的器件为 F29H850TU9
    C29xx_CPU1:禁用看门狗计时器
    C29xx_CPU1:存储器映射初始化完成
    C29xx_CPU1:此处。

    C29xx_CPU1:器件就绪
    C29xx_CPU1:M0 RAM 初始化完成。

    C29xx_CPU1:CPU2/3 保持在复位状态。

    C29xx_CPU1:CPU 在主代码中。
    C29xx_CPU1:CPU2/3 保持在复位状态。

    C29xx_CPU1:已成功加载文件。 –0-
    C29xx_CPU1:满载。
    C29xx_CPU1:ResetCauses = XRSn
    -----
    检查中断 状态:
    C29xx_cpu1: ResetCauses = XRSnC29xx_cpu1: CPU State :(CPU 状态:)
    C29xx_CPU1:  内部启用:0
    C29xx_CPU1:  中断状态:主代码
    C29xx_CPU1:  NMI 标志: 0, RTINT 标志: 0, INT 标志: 0
    C29xx_CPU1: INTSP:  0, CURRSP: 1.
    C29xx_CPU1:管道状态:
    C29xx_CPU1:  Int/RTINT Enable   :0
    C29xx_CPU1:  当前上下文    :0
    C29xx_CPU1:  Supervisor INT Enable :0
    C29xx_CPU1:  RTINT 阈值    :0
    C29xx_CPU1:  嵌套组掩码  :0xFF
    C29xx_CPU1:PIPE 中的挂起中断:
    C29xx_CPU1:中断状态检查完成
    CPU 复位、我们确实会在上电期间看到 XRSn 切换。此外、当启动 JTAG 调试时 、XRSn 线路上会出现脉冲  
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Boris:

    您是否还可以提供 ESM_CPU1/ESM_SYS/错误聚合器状态?  

    是否被理解、看起来像是导致 CPU1 复位的事情、可能是看门狗未被处理?  

    此致、

    Ryan MA

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

    不确定谁应该是维护 监视程序 ? 这是一个空白的 CPU、应用程序在调试器中启动、我假设 JTAG/gel 应该停止 CPU 并禁用看门狗、否则我看不到在最初不 将某些内容加载到 CPU 的情况下如何实现。

    以下是复位原因:
    C29xx_CPU1:已成功加载文件。 –0-
    C29xx_CPU1:满载。
    C29xx_CPU1:ResetCauses = XRSn
    和错误聚合器:
    C29xx_CPU1:错误聚合器状态:
    C29xx_CPU1:错误聚合器状态完成
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Boris:

    抱歉、您还可以发送 ESM_CPU1 的输出以获取导致 XRSn 的任何可能错误的列表吗?

    此致、

    Ryan Ma

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

    实现

    SEC_AP_C29: 
    
    Executing On Target Connect Functions
    
    SEC_AP_C29: 
    
    SEC-AP Ready
    
    C29xx_CPU1: Executing On Target Connect Functions
    C29xx_CPU1: The connected device is F29H850TU9
    C29xx_CPU1: Watchdog Timer Disabled
    C29xx_CPU1: Memory Map Initialization Complete
    C29xx_CPU1: Device Ready
    C29xx_CPU1: M0 RAM initialization complete.
    
    C29xx_CPU1: CPU2/3 is held in reset.
    
    C29xx_CPU1: Program found in Flash memory. Make sure to erase Flash if loading an application to RAM. If loading to Flash, Flash Plugin will erase the selected banks.
    C29xx_CPU1: CPU is in Main code.
    C29xx_CPU1: CPU2/3 is held in reset.
    
    C29xx_CPU1: File was loaded successfully. -0-
    C29xx_CPU1: Full load.
    C29xx_CPU1: ESM_CPU1 Status : 
    C29xx_CPU1:   All Active/Pending Error Events : 
    C29xx_CPU1:   - ESM_EVENT_CPU1_UVFINT
    C29xx_CPU1:   Active/Pending and Enabled Error Events : 
    C29xx_CPU1: ESM_CPU1 Status Done 
    C29xx_CPU1: ESM_CPU1 Status : 
    C29xx_CPU1:   All Active/Pending Error Events : 
    C29xx_CPU1:   Active/Pending and Enabled Error Events : 
    C29xx_CPU1: ESM_CPU1 Status Done 
    C29xx_CPU1: Error Aggregator Status :
    C29xx_CPU1: Error Aggregator Status Done
    C29xx_CPU1: ESM_CPU1 Status : 
    C29xx_CPU1:   All Active/Pending Error Events : 
    C29xx_CPU1:   Active/Pending and Enabled Error Events : 
    C29xx_CPU1: ESM_CPU1 Status Done 
    是 ESM_CPU1 的输出:

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

    尊敬的 Carlos:

    根据 ESM_CPU1 中的代码片段、似乎存在 UVFINT 错误。

    这来自 C29x CPU、它对应于流中的浮点事件。

    您是否恰好在执行可能导致这种情况发生的浮点运算?

    此致、

    Ryan Ma

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

    为了进一步澄清问题、您能否提供更多有关 IDE 在启动调试会话时如何处理程序加载和执行的详细信息? 具体而言、操作顺序是什么? IDE 是否加载程序然后允许它在完全停止或复位 CPU 之前开始执行? 理解该流程会有所帮助。

    尽管我们将在应用程序中使用浮点运算、但直到 DRV 芯片初始化大约 500ms 至 600ms 后、我们的代码才会调用它们。 全局motor0对象确实具有构造函数、但只应初始化值(例如,将字段设置为零)。 不过、C++初始化顺序可能导致一些浮点代码的包含时间早于预期。

    一个假设是、在执行开始之前可能无法正确设置浮点初始化逻辑(通常在使用 FP 运算时自动链接)。 如果调试器提前开始执行或在设置期间多次运行部分代码、则可能会干扰正确的 FP 硬件初始化。

    在过去使用摩托罗拉芯片时、中断 FP 初始化例程可能会使设备处于未定义状态、从而导致崩溃或不可预测的行为(具体取决于时间)。 我们想知道这里是否会发生类似的情况。

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

    尊敬的 Carlos:  

    启动调试会话时、IDE 会在首次连接到器件时运行目标配置中定义的 GEL 脚本。 然后、根据程序/存储器加载选项中配置的内容、您可以选择在连接等时发生什么

    此致、

    Ryan Ma

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

    我们没有修改 TI 提供的任何 GEL 文件。 我们不精通 GEL 文件编程;此外、我找不到有关最新 GEL 文件逻辑的良好文档。

    我们确实看到 IDE 问题无法启动正确的调试会话;因此、我们会在论坛上发帖寻求帮助来解决问题。

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

    尊敬的 Carlos:

    我就站在她面前,由于多次的高潮,双腿微微发颤。  

    我们确实看到 IDE 无法启动正确的调试会话的问题;因此、我们会在论坛上发帖寻求帮助以解决问题。

    IDE 现在是否出现问题、无法启动正确的调试会话? 是否仍出现 UVFINT  错误或是否已解决?

    此致、

    Ryan Ma