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/AM4379:如何更改以太网的中断优先级

Guru**** 2589245 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/587925/linux-am4379-how-to-change-interrupt-priority-for-ethernet

器件型号:AM4379

工具/软件:Linux

大家好

我对使用 AM437xSK 的 AM437x 的 RTLinux 有疑问。

我的客户使用 RTLinux 为 EtherCAT 主站进行开发。
他们希望更改中断优先级。

他们使用"cat /proc/interrupts 命令看到2个以太网中断。

=
173:0 WUGEN 41级别4a100000以太网
174:0 WUGEN 42级别4a100000以太网
=

他们使用"ps–a | grep IRQ"命令查找以太网的 SoftIrqHandler。

=
PID TTY 时间 CMD
3? 00:00:00 ksoftirqd/0
19? 00:00:00 IRQ/20-L3-dbg-I
20? 00:00:00 IRQ/21-L3-APP-I
21? 00:00:00 IRQ/36-44e07000
23? 00:00:00 IRQ/69-4804c000
24? 00:00:00 IRQ/102-4832000
25? 00:00:00 IRQ/135-4832200
30? 00:00:00 IRQ/2-49000000
31? 00:00:00 IRQ/26-49000000
54? 00:00:00 IRQ/180-4808000
68? 00:00:00 IRQ/171-mmc0
70? 00:00:00 IRQ/186-OMAP DI
72? 00:00:00 IRQ/168-44e0b00
73? 00:00:00 IRQ/219-tps6521
74? 00:00:00 IRQ/169-4802a00
75? 00:00:00 IRQ/170-mmc1
76? 00:00:00 IRQ/43-48060000
261? 00:00:00 IRQ/23-wkup_m3_
262? 00:00:00 IRQ/32-wkup_m3
300? 00:00:00 IRQ/33-rtc0
307? 00:00:00 IRQ/34-rtc0
343? 00:00:00 IRQ/179-4831000
351? 00:00:00 IRQ/184-VPFE_ca
354? 00:00:00 IRQ/181-dwc3-om
355? 00:00:00 IRQ/182-dwc3-om
361? 00:00:00 IRQ/68-EDT-ft53
374? 00:00:00 IRQ/176-5310000
451? 00:00:00 IRQ/141-矩阵-
453? 00:00:00 IRQ/142-matrix -
620? 00:00:00 IRQ/181-dwc3-ot
621? 00:00:00 IRQ/181-s-dwc3-
624? 00:00:00 IRQ/222-xhci-HC
733? 00:00:00 IRQ/30-44e09000
=

但我们在 SoftIrqHandler 中找不到以太网中断。
如果我们找到、我想我们可以更改优先级。 但我们看不到该中断。

您能告诉我如何更改以太网中断优先级吗?

此致
高贵须

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

    我必须进行验证、但 cpsw 网络堆栈处理不一定由中断触发、它有自己的调度程序。 这可能说明用户无法找到线程的 pid 的原因。

    您能否更详细地解释想要提高优先级的原因? cpsw 端口是列出的中断、该端口是否需要进行优先级排序? EtherCAT 主站运行在哪个端口上?

    使用的是哪个内核版本、内核的来源是 TI SDK?

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

    感谢你的答复,我很抱歉。 很晚了。

    我的客户希望开发 EtherCAT 主站产品。
    它们使用 RTLinux SDK 中的内核软件和通用以太网驱动程序。
    并在 AM437xSK 电路板上进行评估。

    当循环频率为1ms 时、它与从器件通信。
    但当循环频率为0.5ms 时、它无法与从器件通信。

    我们认为、当0.5ms 时、通过提高以太网的优先级、这是成功的。
    并需要了解这种方法。

    我的客户使用 RTLinux SDK 版本03.03.00.04。

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

    随着 SDK Linux RT 优先内核的后续版本、没有为以太网创建的具有优先级的唯一线程可在以后提高。 网络处理与其他内核软件线程一起放入单个 ksoftirqd 线程中。 提高此 ksoftirqd 将提高 ksoftirqd 中运行的线程的优先级。 下面是一个有关如何提高 ksoftirqd 线程优先级的示例。

     

    这与客户尝试的方法类似:

     

    ps -A | grep ksoftirq

     

    这应该会返回一个 PID 数字、在我的板上它是3。 因此、现在可以将优先级提升为高于内核优先级(即50)但低于应用程序的值。 这里的这个示例我将 PID 3提升至优先级51:

     

    CHRT -p 51 3.

     

    使用此命令确保更改了优先级。

    CHRT -p 3.

     

    作为优先级更改的一部分、计划策略也将更改为轮询。

     

    请注意、提高 ksoftirqd 线程优先级可能会产生意外的副作用。 因此、建议完全重新进行客户测试。

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

    大家好、Schuyler

    感谢您的大力支持!!
    它在周期为0.5ms 和0.25ms 时工作!

    此致
    高贵须