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.

[参考译文] TMDSEVM572X:PRU-ICSS GPI 作为中断

Guru**** 2582405 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/625489/tmdsevm572x-pru-icss-gpi-as-interrupt

器件型号:TMDSEVM572X

您好!

我使用的是 GP AM572x EVM。

SDK: processor_sdk_rtos_am57xx_3_02_00_05

操作系统:TI_RTOS。

我的一个应用在 cortex A15上运行、该互斥量通过以太网进行通信

我想使用 PRU GPI 检测其上升沿的输入。

我使用 pinmux 工具将 GPIO3_20设置为 pr1_pru0_gpi13。

如何使用 cortex A15启用 PRU 内核?

我能否修改 PRUSS_BasicExample_idkAM572x_wSoCLib_armTestproject 项目、以在选择 GPI (pr1_pru0_gpi13)的情况下检测其上升沿的输入?

如何将信息从 PRU 传递到 ARM cortex A15?

Anjana Pathak。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已通知 RTOS 团队。 他们的反馈将在此处发布。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    根据用于固件开发的 PRU 培训链接、使用 PRUSS GPI 不能实现异步中断、只能进行数据轮询、并且可以使用计时器完成轮询。 因此、请回答以下问题。

    如何在运行速度为100纳秒的 PRU 中初始化计时器? 并将在计时器 ISR 中执行轮询?

    我能否在选择 GPI (pr1_pru0_gpi13)的情况下修改 PRUSS_BasicExample_idkAM572x_wSoCLib_armTestproject 项目以进行轮询数据?

    如何将信息从 PRU 传递到 ARM cortex A15?

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

    PRU-ICSS 的 IEP 子模块具有可用于100ns 计时器的计时器功能。 下面的链接提供了一个如何配置和轮询 IEP 计时器的示例。 此示例采用 C 语言、但可以将其移植到汇编语言中并集成到您提到的测试项目中。

    git.ti.com/.../PRU_IEP.c

    根据您的应用、另一种选择是简单地轮询 PRU GPI。 PRU 具有针对此类轮询的优化汇编指令–WBS (等待位设置)和 WBC (等待位清除)。 例如,“WBS R31,5”将轮询 R31 (GPI)位5直到它被置位(因此,检测到上升沿)。

    您需要将哪些信息从 PRU 传递到 ARM?

    此致、
    Melissa
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Melissa、
    感谢您的回复和提供信息...
    如何将其移植到汇编语言中? 因为我想使用 PRUSS_BasicExample_idkAM572x_wSoCLib_armTestproject 项目对其进行测试、以便在 GPI PRU 上测试轮询数据。

    您需要将哪些信息从 PRU 传递到 ARM?

    我想读取检测到 PRU GPI 脉冲的时间(速率0.1微秒)、并将其存储在存储器中。 中的这些信息通过1千兆位以太网传递给其他系统、我通过修改 Nimu 基本示例项目尝试使用 cortex A15。

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

    >>如何将其移植到汇编语言中?
    wiki 应该会有所帮助- processors.wiki.ti.com/.../PRU_Assembly_Instructions

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Melissa、
    我想读取 R31上的第14位。 我按照以下步骤操作。
    我使用 Pinmux 工具将"AF1 - MyPRUSS1_PRU0 - pr1_pru0_gpi13 - MyPRUSS1_PRU1"配置为 PR1_PRU0_DIR_IN_MANUAL。

    修改了 LED_0按钮项目以检测端口 pr1_pru0_gpi13

    #define SW10x00002000
    void main(){
    /*将 GPI 和 GPO 配置为模式0 (直接连接)*/
    CT_CFG.GPCFG0 = 0x0000;

    /*清除 GPO 引脚*/
    //_R30 &= 0xFFFFFF0000;

    /*配置 INTC */
    //configIntc();
    _R31 = 0x00000000;
    while (1){
    /*等待 SW1被按下*/
    if ((_R31和 SW1)!= SW1){
    /*中断 PRU1、等待500ms 以获得便宜的"去抖"*/
    _delay_cycles (100000000);
    /* TODO:触发中断-请参阅#defines */
    //PRU0_PRU1_TRIGGER;




    给定该引脚上的电压3.3V (GP evmam572x (GPIO3_20) LM 的 P9连接器)。
    但寄存器 R31的值始终为0x00000000。 为什么?
    尽管将引脚设置为高电平(3.3V)和低电平(0V)、(__R31和 SW1)!= SW1)条件始终为真。 为什么会发生这种情况? 请帮助解决此问题。

    谢谢、
    Anjana Pathak
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果我去错地方,请告诉我。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请回复我的工作被拖了..........
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的问题是不是…
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    已在 e2e.ti.com/.../630328中回答