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/TMS320F28379S:在 Code Composer Studio 中查看寄存器

Guru**** 2747345 points

Other Parts Discussed in Thread: TMS320F28379S

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/772762/ccs-tms320f28379s-view-registers-in-code-composer-studio

器件型号:TMS320F28379S

工具/软件:Code Composer Studio

您好!

我想使用"Registers"视图读取 CCSv7中正在运行的目标(TMS320F28379S)的寄存器。 但是、当我连接到目标时、许多寄存器显示值0x00000000。 我确信这些值应该是不同的。 未显示为全零的寄存器之一是程序计数器。 程序计数器的值正在变化、因此我知道目标确实在运行。  在此阶段未设置双代码安全模块、因此目标已解锁。

每当我通过 CCS 加载程序(使用 XDS100仿真器)时、正确的值实际上会显示在"Registers"视图中。 但这不是我想要的。 我想查看已经在运行的目标的寄存器、而不必再次对其进行编程。

我猜我是在俯瞰某个东西、那么有人能不能向正确的方向指出我的观点?

此致、

Steven。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Steven、
    您使用的 CCSv7确切版本是什么? 根据您的语句、听起来您是在实时模式下(非插入式)连接到正在运行的目标。 对吧?

    您能否发送在"Registers"视图中看到的内核寄存器的屏幕截图?
    谢谢
    Ki
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,李基洙,

    我使用的 CCS 版本为:7.4.0.00015。

    我尝试在停止模式和实时模式下连接两者。 对于实时模式、我首先清零 ST1寄存器的 DBGM 位。 我禁用了“Halt the target on a connect”(在连接时停止目标)选项,然后启用了 Silicon Real-Time Mode (有礼貌)。 在 Registers 视图中、我启用了 Continuous Refresh 按钮。 这是正确的方法吗?

    此外、对于我的应用、在调试期间不需要为时间关键型中断提供服务。 在调试期间、应用程序是否停止也无关紧要。 我只想读取一些寄存器(初始化后)、而无需首先加载应用。 相关寄存器的值在初始化后不会改变。 此初始化在代码的开头完成、因此、如果在此之后我停止目标、我应该读取正确的值。 在这种情况下、我应该使用实时模式吗?

    附加后、您可以找到目标的内核寄存器的屏幕截图、这些寄存器已经过编程并仅连接到 CCS。 因此、在进行此屏幕截图之前、没有加载代码。

    此致、

    Steven。

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

    您好 Steven、

    很抱歉耽误你的答复

    [引用 user="Steven Peters">此外、对于我的应用、在调试期间不需要为时间关键型中断提供服务。 在调试期间是否停止应用程序也无关紧要。[/quot]

    AH OK、那么您不会尝试连接到正在运行的目标(并且不需要实时模式)。

    [引用 user="Steven Peters">附件中提供了目标的内核寄存器的屏幕截图、这些寄存器已经过编程、只需连接到 CCS 即可。 因此、在进行此屏幕截图之前未加载代码。

    感谢您的屏幕截图。 我对该器件的了解不够、无法以某种方式确认寄存器的值。 我将向 C2000器件专家介绍此主题。

    谢谢

    Ki

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    所以、您说的是、即使您正在执行肯定会写入的代码、内核寄存器(PC 除外)中的值也不会改变? 即使您单步执行代码? 这只是影响内核寄存器还是外设寄存器显示不正确?

    您能否转到"Help -> Installation Details"(CCS 中的安装详细信息)并告诉我您拥有的 C2000器件支持的版本?

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

    尊敬的惠特尼:

    我将提供更多的背景信息,因为我不确定我之前的帖子是否清晰。

    我有一个使用 TI-RTOS 的应用程序。 在代码中执行的第一项操作是外设的初始化。 这是在‘BIOS_start()函数执行之前完成的。

    例如、EMIF 配置如下(仅显示了三个寄存器来说明):

    EMif1Regs_RCSR:0x40000205
    EMif1Regs_ASYNC_WCCR:0xF0000080
    EMif1Regs_SDRAM_CR:0x00000620

     

    这些外设寄存器的值在操作系统启动后不会改变(这是 BIOS_start()被执行)。

    当我使用 View->Registers 对目标进行编程并读出寄存器时,我可以正确地看到上述值。

    然而、当我断开目标并重新连接时、View-Registers 显示:

    EMif1Regs_RCSR:0x00000000
    EMif1Regs_ASYNC_WCCR:0x00000000
    EMif1Regs_SDRAM_CR:0x00000000

     

    那么、我的问题是、如何读取寄存器而无需再次对目标进行编程?

    我拥有的 C2000器件支持版本为:4.2.2.0

     

    此致、

    Steven

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

    您好 Steven、

    [引用用户="Steven Peters"]

    然而、当我断开目标并重新连接时、View-Registers 显示:

    EMif1Regs_RCSR:0x00000000
    EMif1Regs_ASYNC_WCCR:0x00000000
    EMif1Regs_SDRAM_CR:0x00000000

    [/报价]

    如果您使用的是默认 f28379s.gel 启动 GEL 文件、则可以通过以下事实来解释这一点:GEL 函数中定义的 OnTargetConnect GEL 回调函数(在连接到目标时将调用该函数)具有复位 CPU 的操作(第101行)。 正是 CPU 复位清除了寄存器值。

    谢谢

    Ki

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

    感谢你的帮助。 我现在注释掉了对 GEL_Reset()的调用。

    是否可以查看这些 GEL 内置函数的内部信息(我是指定义)、以查看内幕揭秘?


    此致、
    Steven。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CCS 帮助中提供了所有内置 GEL 函数的文档。

    关于 GEL 文件中的 GEL_Reset(),我确信 C2000团队添加了该调用是有原因的。 因此、如果该调用被简单删除、您可能会遇到其他问题。 我将让 C2000专家对此发表意见。

    谢谢
    Ki