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.

[参考译文] Linux/AM5728:在 DSP1上运行的 TI-RTOS 中手动触发 GPIO 中断时、Linux 中引发异常

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/570424/linux-am5728-exception-being-thrown-in-linux-when-manually-triggering-a-gpio-interrupt-in-ti-rtos-running-on-dsp1

器件型号:AM5728

工具/软件:Linux

您好、Pavel、
您在帖子中修复问题的建议  对我有效。 非常感谢。
我以类似的方式配置 GPIO2。 然后、我将 GPIO2_2配置为输入、并使用触发软件中断
GPIOTriggerPinInt (GPIO_base_ADDR、0、GPIO_LED_PIN);
GPIO_BASE_ADDR =(0x48055000U)
GPIO_LED_PIN = 0x02

我在 Linux 控制台上看到以下内容:
[408.989728]------ [在此处剪切]-----
[408.994379]警告:CPU:0 PID:0 at /opt/PHYTEC_BSPs/yocto_ti/build/arago-tmp-external-linaro-toolchain/work-shared/am57xx-phycore-rdk/kernel-source/drivers/bus/omap_l3_noc.c:147 L3_interrupt_handler+0x25c/0x368 ()
[409.013582] 44000000.OCP:L3自定义错误:主控 DSP1_MDMA 目标 L4_PER1_P3 (空闲):在功能访问期间以用户模式访问数据
[409.025715]模块链接到: rpmsg_proto bc_example (O) SHA512_generic SHA512_arm SHA1_generic SHA1_arm_NEON SHA1_ARM MD5 CBC SHA256_generic SHA256_arm HMAC drbg xfrm_user xfrm4_tunch ipcomp xfrm_ipcomp dwa1_arm mas rgc sha256_generic sha256_arm_core_proc vapor_remote_proc (texp)
[409.073659] CPU:0 PID:0 Comm:swapper/0被污染:G W O 4.4.12 #8
[409.080823]硬件名称:通用 DRA74X (平展器件树)
[409.086938]回扫:
[409.089412][ ](dump_backtrace)从[ ](show_stack+0x18/0x1c)
[409.097011] r7:c02e2d18 R6:200f0193 R5:00000000 R4:c09d318c
[409.102736][ ](show_stack)从[ ](dump_stack+0x90/0xa4)
[409.109998][ ](dump_stack)从[ ](warn_slESpath_common+0x88/b8)
[409.118121] r7:c02e2d18 R6:00000093 R5:00000009 R4:c09b5d30
[409.123845][ ](warn_slowpath_common)、来自[ ](WARN_RASPH_FMt+0x38/0x40)
[409.132578] R8:00000017 r7:c08af0a4 R6:00000000 R5:c08aec6c R4:c08aed10
[409.139354][ ](warn_slowpath_fmt)、来自[ ](L3_INTERRUPT_Handler+0x25c/0x368)
[409.148261] r3:ee1b6140 r2:c08aed10
[409.151862] R4:80080003
[409.154419][ ](L3_interrupt_handler)、来自[ ](handle_irq_event_perpu+b0x4/0x160)
[409.163763] R10:c0a02d2d R9:ee1b0480 R8:00000017 r7:00000000 R6:00000000 R5:ee1b04e0
[409.171666] R4:ee1b6640
[409.174219][ ](handle_irq_event_perpu)、来自[ ](handle_IRQ_EVENT_+0x40/0x64)
[409.183126] R10:c09b64d0 R9:c06e91e4 R8:ee008000 r7:00000000 R6:c09bc08c R5:ee1b04e0
[409.191027] R4:ee1b0480
[409.193581][ ](handle_irq_event)从[ ](handle_fasteoi_IRQ+0xc0/0x194)
[409.202139] r7:00000000 R6:c09bc08c R5:ee1b04e0 R4:ee1b0480
[409.207856][ ](handle_fasteoi_IRQ)、来自[ ](generic_handle_IRQ+0x2C/0x3c)
[409.216502] r7:00000000 R6:00000000 R5:00000017 R4:c09b0424
[409.222221][ ](generic_handle_IRQ)、来自[ ](_handle_domain_IRQ+0x64/bb)
[409.230961][ ](_handle_domain_IRQ)、来自[ ](GIC_Handle_IRQ+0x40/0x7c)
[409.239344] R9:c06e91e4 R8:fa213000 r7:fa212000 R6:c09b5ef0 R5:fa21200c R4:c09b6868
[409.247166][ ](GIC_Handle_IRQ)、来自[ ](_IRQ_Svc+0x40/0x74)
[409.254678]异常堆栈(0xc09b5ef0至0xc09b5f38)
[409.259750] 5e0:00000001 00000000 fe600000 00000000
[409.267963] 5f00:c09b4000 c09b6484 00000000 00000000 c09b5f60 c06e91e4 c09b64d0 c09b5f4c
[409.276177] 5f20:c09b5f2c c09b5f40 c00268f4 c0010540 600f0013 ffffff
[409.2816] R9:c06e91e4 R8:c09b5f60 r7:c09b5f24 R6:ffff R5:600f0013 R4:c0010540
[409.290640][ ](arch_cpu_idle)从[ ](DEFAULT_IDLE_CALL + 0x28/0x34)
[409.298769][ ](DEFAULT_IDLE_CALL)从[ ](CPU_STARTUP_END+0x204/0x264)
[409.307419][ ](CPU_STARTUP_INPUK)、来自[ ](REST_INIT+0x90/0x94)
[409.315192] r7:00000000
[409.317747][ ](REST_INIT)从[ ](start_kernel+0x400/0x40c)
[409.325259] R5:c0a05000 R4:c0a05040
[409.328866][ ](start_kernel)从[<80008090>](0x80008090)
[409.33520]-[结束线迹 c5f33a20b59aa006 ]---

我可以将同一个 I/O 配置为输出、它工作正常。
我已按如下方式配置 DSP1 IRQ 交叉开关
*(CTRL_CORE_DSP1_IRQ_56_57)&=~(DSP1_IRQ_56);
*(CTRL_CORE_DSP1_IRQ_56_57)|= ENABLE_GPIO2_INT_Vector;

#define ENABLE_GPIO2_INT_Vector 0x00000019
#define DSP1_IRQ_56 0x000001ff

此外、我还使用以下 API 来启用中断
/*设置回调函数*/
GPIO_setCallback (USER_LED0、AppGpioCallbackFxn);

/*在特定 GPIO 引脚上启用 GPIO 中断*/
GPIO_enableInt (USER_LED0);

USER_LED0对应于 GPIO2_2

有什么建议吗?

非常感谢。

此致、
Shaunak

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

    我看到您有一个 L3自定义错误、这会导致内核出现严重错误:
    [409.013582] 44000000.OCP:L3自定义错误:主控 DSP1_MDMA 目标 L4_PER1_P3 (空闲):在功能访问期间以用户模式访问数据
    过去、我们通过从器件 DTS 文件(abot .dts 和相应的.dtsi 文件)中删除 RTC 器件树节点来解决类似的问题。

    如果您的系统不使用 RTC、您能否测试此功能?

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

    Yordan、您好!

    我尝试禁用 DTS 和 dtsi 文件中的所有 RTC 实例、但结果相同。

    请您建议一个替代方案吗?

    此致、

    Shaunak