You need to enable JavaScript to run this app. AM572x调试暂停时TI-RTOS Clock对应定时器持续计数问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

AM572x调试暂停时TI-RTOS Clock对应定时器持续计数问题咨询

TI AM572x EVM 调试时冻结TI-RTOS Clock运行的解决方案
  • 第一步:定位TI-RTOS Clock实际使用的定时器

    你配置Timer_ANY时内核会自动分配未被占用的定时器,除TIMER2、TIMER10外,A15_0可用的还有TIMER3、TIMER4、TIMER11等,你可以通过两种方式确认实际绑定的定时器:

    • 打开工程的RTOS配置文件(*.cfg),搜索ti.sysbios.knl.Clock或ti.sysbios.family.arm.a15.Timer相关配置,查看自动分配的timerId参数
    • 调试时打开CCS的RTOS对象查看器(ROV),选择Timer模块,直接查看已激活定时器的ID和基地址
  • 第二步:固定定时器并配置仿真冻结属性

    确认定时器编号后,推荐直接手动指定Clock所用定时器并配置冻结参数,避免内核自动分配带来的不确定性:

    1. 在*.cfg文件中强制绑定Clock的定时器ID,示例代码(以绑定TIMER2为例):
      ti.sysbios.knl.Clock.timerId = 2;
      
      绑定前确认对应定时器未被PTP、PWM等其他外设占用
    2. 确认定时器EMUFREE位配置,在main函数中、BIOS_start()执行前添加寄存器配置代码,示例:
      // 请将TIMER2_BASE替换为你所用定时器的实际基地址
      #define TIMER2_BASE 0x48032000
      #define TIOCP_CFG_OFFSET 0x10
      // EMUFREE位为bit1,写0代表仿真暂停时定时器冻结计数
      *(volatile uint32_t *)(TIMER2_BASE + TIOCP_CFG_OFFSET) &= ~(1U << 1);
      
  • 第三步:使用TI-RTOS内置调试配置(推荐)

    无需手动改寄存器,直接在*.cfg中添加配置即可实现调试时Clock自动冻结,不会累积挂起的中断:

    ti.sysbios.knl.Clock.enableDebug = true;
    

    若使用旧版本SYS/BIOS,可额外添加定时器全局暂停配置:

    ti.sysbios.family.arm.a15.Timer.emupause = true;
    
  • 临时调试方案

    若不想修改工程代码,可在CCS的断点属性中添加自定义动作:每次断点触发暂停时,手动清除对应定时器的中断挂起位,恢复运行前清零TCRR计数器寄存器,避免恢复后触发累积的Swi。

内容的提问来源于stack exchange,提问作者Johann Hietajarvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 01:36:03