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.

[参考译文] J784S4XEVM:GTC 计数器在从调试器中断执行后停止

Guru**** 2463330 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1469813/j784s4xevm-gtc-counter-stops-once-breaking-execution-from-debugger

器件型号:J784S4XEVM

工具与软件:

我正在代码中读取 GTC 计数器。

如果我从分区 GTC_CFG1寄存器读取 GTC 计数器、当我开始执行代码时、我注意到 GTC 计数器(LO/HI)正在以相同的速度增加;GTC 计数器在分区 GTC_CFG1和 GTC_CFG2之间同步

但是、如果我中断程序执行、GTC_CFG1分区中的计数器(GTC_CFG1_CNTCV_LO/GTC_CFG1_CNTCV_HI)将停止、而 GTC_CFG2分区中的计数器(GTC_CFG2_CNTCVS_LO)将继续。 GTC_CFG1分区中的 GTC 计数器值与 GTC_CFG2分区中的 GTC 计数器不同、如下所示。 如果我恢复执行、则 GTC_CFG1分区中的计数器始终停止。

如果我更改我的代码以从  分区 GTC_CFG2 寄存器中读取 GTC 计数器、请重复相同过程;这次 分区 GTC_CFG2计数器寄存器停止、但 GTC_CFG1计数器寄存器继续运行;因此、我的程序中的 GTC 计数器停止、并且没有更改。

我有什么错吗? 我尝试了启用 CNTCR_HDBG 位、结果相同。

我应该使用哪个寄存器分区来读取 GTC 计数器?

谢谢

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

    您好!

    [报价用户 id="346969" url="~/support/processors-group/processors/f/processors-forum/1469813/j784s4xevm-gtc-counter-stops-once-breaking-execution-from-debugger "]

    我有什么错吗? 我尝试了启用 CNTCR_HDBG 位、结果相同。

    [报价]

    您能否请参阅此主题 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1439313/tda4vh-q1-global-timer-counter-frequency-undefined、 请告诉我们这是否有帮助。

    此致、

    Karthik

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

    这看起来不像是时钟问题、因为它会一直工作、直到我从调试器中断执行、并且另一个寄存器分区正在工作。

    GTC 计数器应以复位默认时钟工作、对吧?

    以上链接提供了太多的 TI API 来配置不同的模块、这使得问题变得复杂。

    您是否知道如何为 GTC 配置时钟?

    可以写入哪个寄存器来选择时钟源、或者写入哪个寄存器来配置预分频器?  

    我希望用户手册让我写入寄存器字段来配置时钟、而不是 API  

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

    您好!

    [报价 userid="346969" url="~/support/processors-group/processors/f/processors-forum/1469813/j784s4xevm-gtc-counter-stops-once-breaking-execution-from-debugger/5643153 #5643153"]

    可以写入哪个寄存器来选择时钟源、或者写入哪个寄存器来配置预分频器?  

    我希望用户手册让我写入寄存器字段来配置时钟、而不是 API  

    [报价]

    请参阅 GTC_CNTCR 、TIMER_TCLR 寄存器进行配置。

    e2e.ti.com/.../j784s4_5F00_public_5F00_combined_5F00_july2023.zipe2e.ti.com/.../J721E_5F00_registers5.zip

    此致、

    Karthik

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

    我使用的是正确的 GTC 寄存器、而且 GTC 时钟运行正常 、回到我最初的问题:为什么 GTC 计数器在一个寄存器分区停止、而在另一个寄存器分区继续?

    GTC_CFG1_CNTFID0的频率正确:0xBEBC200 = 200MHz

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

    我进行了更多调查、触发 SVC 异常后 GTC 计数器停止。  为什么 GTC 计数器在 SVC 异常后不停止?

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

    尊敬的 Jim Zhang:

    我将对此进行深入探讨、然后回复给您。

    此致、

    Karthik  

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

    在这个问题上有什么进展?  可能我使用的 FreeRTOS 版本不正确?

    我注意到 SDK 下有2个不同版本、我想确认应针对 J784S4 cortex r5f 使用哪个版本:
    ./pdk_j784s4/packages/ti/kernel/FreeRTOS/FreeRTOS-LTS/FreeRTOS-Kernel/portable/GCC/ARM_C Rx_No_ ti/port.c
    ./pdk_j784s4/packages/ti/kernel/FreeRTOS/FreeRTOS-LTS/FreeRTOS-Kernel/portable/GCC/GCC/ARM_CR5/port.c

    谢谢!

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

    尊敬的 Jim Zhang:

    [报价 userid="346969" url="~/support/processors-group/processors/f/processors-forum/1469813/j784s4xevm-gtc-counter-stops-once-breaking-execution-from-debugger/5649779 #5649779"]

    在这个问题上有什么进展?  可能我使用的 FreeRTOS 版本不正确?

    [报价]

    如果您在此使用了任何驱动器示例、请告诉我吗?

    此致、

    Karthik

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

    我的程序中不使用任何驱动程序。 我使用 J784S4 EVM 电路板。 r5F 固件是默认固件

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

    您好!

    [报价 userid="346969" url="~/support/processors-group/processors/f/processors-forum/1469813/j784s4xevm-gtc-counter-stops-once-breaking-execution-from-debugger/5649779 #5649779"]

    ./pdk_j784s4/packages/ti/kernel/FreeRTOS/FreeRTOS-LTS/FreeRTOS-Kernel/portable/GCC/GCC/ARM_CR5/port.c

    [报价]

    您可以将此 ARM_CR5用于 FreeRTOS 设置。

    为什么 GTC 计数器在一个寄存器分区停止、而在另一个寄存器分区继续?

    请与我分享您的代码、以便我可以在最后尝试

    此致、

    Karthik

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

    我尝试了 ARM_CR5、但发现 portmacro.h 文件中定义的寄存器映射与 J784S4 R5F 不匹配。 这些寄存器不存在、或者偏移量不正确。

    /*中断控制器访问地址。 */
    #define  portICCPMR_PRIORY_MASK_OFFSET ( 0x04 )
    #define  portICCIAR_INTERRUPT_ACKENT_OFFSET ( 0x0C )
    #define  portICCEOIR_END_OF_INTERRUPT_OFFSET ( 0x10 )
    #define  portICCBPR_BINARY_POINT_OFFSET ( 0x08 )
    #define  portICCR_BUNNING_PRIORITY_OFFSET ( 0x14 )

    #define portINTERRUPT_CONTROLLER_CPU_INTERFACT_ADDRESS  (configINTERRUPT_CONTROLLER_BASE_ADDRESS + configINTERRUPT_CONTROLLER_CPU_INTERFACT_OFFSET)
    #define  portICCPMR_PRIORY_MASK_REGISTER (( volatile uint32_t *)( portINTERRUPT_CONTROLLER_CPU_INTERFACT_ADDRESS + portICCPMR_PRIORY_MASK_OFFSET )))
    #define  portICCIAR_INTERRUPT_CONNECTION_REGISTER_ADDRESS ( portINTERRUPT_CONTROLLER_CPU_INTERFACT_ADDRESS + portICCIAR_INTERRUPT_ACKONCK_OFFSET )
    #define  portICCEOIR_END_OF_INTERRUPT_CONTROLLER_CPU_INTERFACT_ADDRESS + portICCEOIR_END_OF_INTERRUPT_OFFSET )
    #define  portICCPMR_PRIORY_MASK_REGISTER_ADDRESS ( portINTERRUPT_CONTROLLER_CPU_INTERFACT_ADDRESS + portICCPMR_PRIORY_MASK_OFFSET )
    #define  portICCBPR_BINARY_POINT_REGISTER (*( const volatile uint32_t *)( portINTERRUPT_CONTROLLER_CPU_INTERFACT_ADDRESS + portICCBPR_BINARY_POINT_OFFSET )))
    #define  portICCRPR_RUNNING_PRIORITY_REGISTER(*( const volatile uint32_t *)( portINTERRUPT_CONTROLLER_CPU_INTERFACT_ADDRESS + portICCRPR_RUNNING_PRIORITY_OFFSET )))
    正因为如此、我当时想这个型号是基于 GIC 的、所以我选择了 arm_C Rx_No_变量。 我在使用 arm_c Rx_No_ 2和 ic 型号时仍有问题。

    您是否知道 FreeRTOS 版本是否正式支持 J784S4 R5F?  不使用 TI_CGT

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

    尊敬的 Jim Zhang:

    您是否知道 FreeRTOS 版本是否正式支持 J784S4 R5F?

    J784S4 EVM R5F 支持 FreeRTOS、 能否共享您的完整代码?

    此致、

    Karthik

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

    我发现了问题:

    启用 Dache 后、 CFG0_MMR_CFG1无法访问、并且我存在 GTC 计数器读取问题;

    当我可以识别指令时、 可以访问 CFG0_MMR_CFG1、并且我没有 GTC 计数器读取问题;

    有什么想法为什么会发生这种情况?   

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

    您好!

    [报价 userid="346969" url="~/support/processors-group/processors/f/processors-forum/1469813/j784s4xevm-gtc-counter-stops-once-breaking-execution-from-debugger/5664101 #5664101"]

    启用 Dache 后、 CFG0_MMR_CFG1无法访问、并且我存在 GTC 计数器读取问题;

    [报价]

    我不明白这种行为。 如果可能、您能否与我分享您的代码? 另外、请参阅

    /packages/ti/csl/example/ospi/ospi_flash/ospi_flash_app ospi_flash_app_main.c PDK 示例。

    此致、

    Karthik