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.

[参考译文] 66AK2E05:ARM A15 Noos 上的中断

Guru**** 2551110 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/565311/66ak2e05-interrupts-on-arm-a15-noos

器件型号:66AK2E05
Thread 中讨论的其他器件:SYSBIOS

你好!!

这项质询是在没有满意答案的情况下提出的,所以我想再问一次

系统=裸机(即无操作系统、无 SYSBIOS 等)

现在、我将使用以下目录

ti/pdk_k2e_4_0_2/packages/ti/CSL/arch/a15 =>为我提供基本中断处理

按照 interrupt.h、"NUM_INTERRUPTS_EXTERNA"= 160。

根据 K2E 的数据表、中断总数= 480

对于160个中断、我已经检查了我的代码(如下所示)以使其轻松工作

INTC_Init(); 
intcnumb=120; stat=IntMasterStatusGet (); IntMasterIRQEnable (); intc_SystemEnable (intcnumb); intc_IntRegister (intcnumb、 intIsr、NULL); stat=IntMasterStatusGet (); a = 0; pinNum = 0; bankNum = 0; hGpio = CSL_GPIO_open (0); CSL_GPIO_setPinDirOutput (hGpio、pinNum); CSL_GPIO_setRisingEdgeDetect (hGpio、pinNum); CSL_GPIO_bankInterruptEnable (hGpio、bankNum); CSL_GPIO_clearOutputData (hGpio、pinNum); CSL_GPIO_getOutputData (hGpio、pinNum、&outData); CSL_GPIO_setOutputData (hGpio、pinNum); CSL_GPIO_getOutputData (hGpio、pinNum、&outData);

这里的中断完全触发、但当我尝试配置 NUM_INTERRUPTS_EXTERNAL 之上的任何中断时、如上所述、中断不会触发。 这是因为上面提到的目录中的 interrupt.c 可以检查是否存在(intrNum < NUM_INTERRUPTS_EXTERNAL)、但即使我绕过了这种情况、我仍然无法配置中断、这给我留下了2个选择

1.我将中断(例如 int numb 277)映射到160范围内的某个值

2.有一个寄存器允许我访问大于160的中断

无论在哪种情况下、我都不知道如何解决这个问题

提醒一下、系统是裸机 ARM 内核0

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

    我已将此事转交给专家。 他们的反馈应发布在此处。

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

    您提到了先前的帖子。 您可以向我发送 URL 吗?

    您说得对、K2E 中的事件数量为480。 我认为、当代码从仅具有160个事件的不同器件(AM57X)移植时、160限制可能会是一个错误。 我将对此进行进一步调查、并可能提交报告。

    我想知道你试图连接的事件是什么-它甚至是277个 GIU ( www.ti.com/.../66ak2e05.pdf 的表7-23 )或 CIC2 (同一文档的表7-25)。 如果这是后来的、则需要映射 CIC2。

    请回来、然后我们将继续


    此致

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

    你好,跑了!!

    首先、我查看了 UART 中断(277至279)、如表7-23中所示。 我使用 UART 是因为我能够直接查看存储器级别、即中断确实是由 UART 触发的、但 ARM 没有响应。

    现在我可能会在这里添加几个可能不会有帮助的东西、但可能会告诉你我在哪里弄乱东西。 我看了两种方法,一种是上面提到的方法,另一种是位于/ti/pdk_k2e_4_0_2/packages/ti/osal/src/nonos 的 Hwip_nonos,但由于缺少文档和示例,我无法深入探讨。

    这里还有我的中断查询的链接
    e2e.ti.com/.../559243
    e2e.ti.com/.../551196
    e2e.ti.com/.../2015142

    此致、
    Hannan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为这是一个错误。 我向工程部门报告了这一情况、我将向您提供他们的回复

    同时、您是否考虑使用 DSP 响应 UART、甚至生成可被 IC400识别的 GPIO 中断?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗯、我尝试(并且失败)配置 GIC、但正如我说过的、它缺少任何真实的文档、所以它可能不正确、但下面是我使用的2种方法

    gCpuIntrf.gicDispedist =&Intruserf;
    gCpuIntif.cpuIntfBasePtr =(void *) SOC_INTC_MPU_PHY_CPU_IF_BASE;
    InterdistBasePtr =(void *) SOC_INTC_MPU_Distributor_BASE;
    gCpuIntrf.initStatus =(uint32) false;
    gCpuIntrf.gicDis->initStatus =(uint32) false;
    gCpuIntrf.pDefaultInterHandlers =空;
    gCpuIntrf.pDefaultUserParameter =空;
    
    CSL_armGicInit (&gCpuIntif);
    
    
    Cookie = Hwip_disable();
    
    Hwip_Params_init (&hwiParams);
    
    hwiParams.arg =空;
    hwiParams.evtId = 152;
    hwiParams.priority = 0x20;
    hwiParams.triggerSensitivity = 0x3;//中断边沿触发
    rxHwiHandle = Hwip_create (152、(Hwip_Fxn)&intIsr、&hwiParams);
    
    hwip_restore (cookie);
    
    a = 0;
    pinNum = 0;
    bankNum = 0;
    
    hGpio = CSL_GPIO_open (0);
    CSL_GPIO_setPinDirOutput (hGpio、pinNum);
    CSL_GPIO_setRisingEdgeDetect (hGpio、pinNum);
    CSL_GPIO_bankInterruptEnable (hGpio、bankNum);
    CSL_GPIO_clearOutputData (hGpio、pinNum);
    CSL_GPIO_getOutputData (hGpio、pinNum、&outData);
    CSL_GPIO_setOutputData (hGpio、pinNum);
    CSL_GPIO_getOutputData (hGpio、pinNum、&outData); 

    Hwip 位于... ti/osal/src/ nonos

    gCpuIntrf.gicDispedist =&Intruserf;
    gCpuIntif.cpuIntfBasePtr =(void *) SOC_INTC_MPU_PHY_CPU_IF_BASE;
    InterdistBasePtr =(void *) SOC_INTC_MPU_Distributor_BASE;
    gCpuIntrf.initStatus =(uint32) false;
    gCpuIntrf.gicDis->initStatus =(uint32) false;
    gCpuIntrf.pDefaultInterHandlers =空;
    gCpuIntrf.pDefaultUserParameter =空;
    
    cSL_armGicInit (&gCpuIntif);
    
    gRtcIntraParams.triggerType = cSL_ARM_GIC_TRIG_TYPE_HIGH_LEVEL;
    gRtcIntraParams.priority = 0x20U;
    
    gRtcIntraParams.pFnIntraHandler =&intIsr;
    gRtcIntraParams.pUserParam =空;
    CSL_armGicEnableIntr (&gCpuIntif、(CSL_ARM_GIC_GPIO_INT0 + 32));
    
    CSL_armGicConfigIntr (&gCpuIntif、(CSL_ARM_GIC_GPIO_INT0 + 32)、&gRtcIntraams);
    
    
    
    a = 0;
    pinNum = 0;
    bankNum = 0;
    
    hGpio = CSL_GPIO_open (0);
    CSL_GPIO_setPinDirOutput (hGpio、pinNum);
    CSL_GPIO_setRisingEdgeDetect (hGpio、pinNum);
    CSL_GPIO_bankInterruptEnable (hGpio、bankNum);
    CSL_GPIO_clearOutputData (hGpio、pinNum);
    CSL_GPIO_getOutputData (hGpio、pinNum、&outData);
    CSL_GPIO_setOutputData (hGpio、pinNum);
    CSL_GPIO_getOutputData (hGpio、pinNum、&outData); 

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

    还没有。  工程部门将在未来发布修复程序

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

    好的、在处理一个位的中断后、使用提示问题可能是从 AM57移植时、我能够生成高达279的中断(未在上面进行测试)。 老实说、我们需要做的不是太大、就是将外部交叉器的数量更改为480、以便 fnRAMvector 数组等能够达到速度、然后更改将 MPU0目标从48分配到116U 的环路值(这可能需要) 推文)。 此外、我们需要在我的情况下、在异常处理程序中的 ISR 处理程序中屏蔽"R1屏蔽"
    还有一件事是将 NUM_GICD_ENABLE 寄存器增加到16U (dnt knw、为什么需要完成)
    我希望在使用裸机中断时、这对其他人有所帮助
    如果有任何问题、请告诉我

    此致!!
    Hannan