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.

[参考译文] CCS/TMDSPREX2.8335万:断点溢出/断点"跳过计数"运行TI-RTOS设置时停止计数

Guru**** 2557630 points
Other Parts Discussed in Thread: CONTROLSUITE

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/588014/ccs-tmdsprex28335-breakpoint-overrun-breakpoint-skip-count-stops-counting-when-running-ti-rtos-setup

部件号:TMDSPREX2.8335万
主题中讨论的其他部件:TMS320F2.8335万,controlSUITE

工具/软件:Code Composer Studio

您好,社区:
我正在使用CCS7 + F2.8335万 Explorer套件来培训我了解C2000系列,因为几周以来,我一直在使用TI-RTOS/ROV/RTOS分析仪。 除了许多积极的经验之外,断点行为也是一个大问题。 除了一些令人烦恼的解决方法之外,我无法克服"跳过计数"问题。
1) 断点溢出  
  • ePWM1模块配置为20kHz PWM,在GPIO0上输出
  • XINT1配置为在GPIO1s 下降沿上提供,GPIO0和GPIO1短路
  • XINT1的IRQ处理程序在某些NOP之间切换GPIO2两次

此简单设置用于测量不同配置(非操作系统,从RAM运行,从闪存运行,RTOS Hwi,RTOS Swi, 零延迟等)  

设置在XINT1 IRQ处理程序入口点的单个断点已配置为跳过前5个计数,然后调试器应进入“保持停止”状态!

这将导致:(从CCS7 "断点视图"复制粘贴)
main.c,第115行(XINT1_ISR + 0x9)[S/W BP]断点5 (0)保持暂停  
案例A (非RTOS设置):  
在“重新启动+恢复”序列之后,进入的调试会话 将保持暂停, 断点视图将按预期进行更新:
main.c,第115行(XINT1_ISR + 0x9)[S/W BP]断点 5 (5) 保持暂停  
案例B (RTOS设置):  
在“重新启动+恢复”序列之后,调试会话永远不 会保持停止 状态,当我单击 “暂停”时 ,断点视图将更新为
MAIN_RTOS.c第120行(XINT1_ISR + 0x9)[S/W BP]断点5 (1)保持暂停  
在这两种情况下,ePWM信号都可以通过示波器进行验证,因此我非常确信我的简单RTOS设置应该像非RTOS设置一样运行?!  

如果我在XINT1 IRQ处理程序中设置了第二个断点,而没有为第二个断点配置跳过计数,则调试会话中断顺序如下所示:   

-重新启动:(在主入口点停止)
  + MAIN_RTOS.c,第120行(XINT1_ISR + 0x9)[S/W BP]断点5 (0)保持暂停  
  + MAIN_RTOS.c,第125行(C$L6)[H/W BP]断点0 (0)保持暂停
-恢复:
  在120行上+断开
  + MAIN_RTOS.c,第120行(XINT1_ISR + 0x9)[S/W BP]断点5 (1) 保持暂停  
  + MAIN_RTOS.c,第125行(C$L6)[H/W BP]断点0 (0)保持暂停
-恢复:
  在125行上+断开
  + MAIN_RTOS.c,第120行(XINT1_ISR + 0x9)[S/W BP]断点5 (1)保持暂停  
  + MAIN_RTOS.c,第125行(C$L6)[H/W BP]断点0 (0)保持暂停
-恢复:
  在125行上+断开  
  + MAIN_RTOS.c,第120行(XINT1_ISR + 0x9)[S/W BP]断点5  (1) 保持暂停  
  + MAIN_RTOS.c,第125行(C$L6)[H/W BP]断点0 (0)保持暂停
-恢复:
  在125行上+断开  
  + MAIN_RTOS.c,第120行(XINT1_ISR + 0x9)[S/W BP]断点5  (1) 保持暂停  
  + MAIN_RTOS.c,第125行(C$L6)[H/W BP]断点0 (0)保持暂停

(...inf简历...)

要“重新布防”第120行上的断点,我唯一能做的就是禁用/启用序列:   

-恢复:
  在125行上+断开  
  + MAIN_RTOS.c,第120行(XINT1_ISR + 0x9)[S/W BP]断点5  (1) 保持暂停  
  + MAIN_RTOS.c,第125行(C$L6)[H/W BP]断点0 (0)保持暂停
  +禁用线路120上的BP
  +启用线路120上的BP
-恢复:
  在125行上+断开  
  + MAIN_RTOS.c,第120行(XINT1_ISR + 0x9)[S/W BP]断点5  (2) 保持暂停  
  + MAIN_RTOS.c,第125行(C$L6)[H/W BP]断点0 (0)保持暂停
-恢复:
  在125行上+断开  
  + MAIN_RTOS.c,第120行(XINT1_ISR + 0x9)[S/W BP]断点5  (2) 保持暂停  
  + MAIN_RTOS.c,第125行(C$L6)[H/W BP]断点0 (0)保持暂停
(...必须重新启用...)

在使用TI-RTOS设置时,有关断点行为,我缺少什么?  

此致,

曼努埃尔

---

 -硬件
   -用于TI C2000TmF28x的TI TMS320F2.8335万 Explorer套件  
 -软件
   - 7.1 编辑器工作室版本:CCS7. 0.0.0016万 (CCS7)
   -通过TI's controlSUITE 3.4 v提供的板卡支持5 (www.ti.com/.../controlsuite
   -SYS/BIOS  
     +版本:6.33 .4.39
   -用于C2000的TI-RTOS
     +版本:2.16 .1.14 或
     +版本:2.12 .1.33
 -开发平台
   - lsb_release -d:Linux Mint 18 Sarah (LinuxMint)
   -uname -rpo:4.4 .0-57-generic x86_64 GNU/Linux
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [QUOTE USER="Manuel Del Basso"关于使用 TI-RTOS 设置时断点行为的问题是什么?  我尚未重复TI-RTOS设置的"跳过计数"问题,但最初是通过非操作系统示例检查断点跳过计数。 我使用了TMS320F2.8335万的controlSUITE的external_interrupt示例,该示例与您描述的代码类似,它设计用于测量中断延迟,方法是使用外部连接的GPIO触发中断,而在中断处理期间另一个GPIO驱动为低电平。

    已在7.1 Windows 7下使用CCS USB2000 0.0.0016万 调试探测器。

    在非操作系统示例中,当在中断处理程序的开头设置断点时,如果skip-count为5,则skip-count按预期工作。 但是,意识到使用硬件或软件断点时,跳过计数由调试器处理。 这意味着每次遇到断点时,调试器都必须增加跳过计数,并决定是恢复目标还是使目标保持暂停。 因此,使用跳过计数会干扰目标执行。 LSA监视中断处理程序期间驱动的低GPIO,显示了使用跳过计数的操作,导致目标在恢复前停止20至30毫秒。 处理跳过计数的开销可能会因调试探测器类型和运行CCS调试器的PC的速度而异。

    在我使用的示例中,有32位整数变量,这些变量在每次调用时由中断处理程序递增。 发现可以设置硬件监视点以在写入变量时触发,并在值大于=5时使用比较模式触发。 由于变量被初始化为零,并且每次中断加1,有效的跳过计数为5,但目标处理比较而不干扰目标的执行。 由 中断处理程序递增的32位Xint2Count变量上的硬件监视点设置示例:

    当  Xint2Count变量的值达到5时,LSA确认中断以全速运行5次,然后在调试器中停止目标。

    这样的硬件监视点是否可以解决跳过计数的问题?