qq_38839860 2023-09-01 14:06 采纳率: 40%
浏览 11
已结题

中自己申请GPIO按键中断如何断绑定指定CPU

我在学习的过程中,创建了gpio中断,但是我想做下实验,我cat /proc/interrupts 发现我的的中断类型为gpio,网卡等中断类型是GICV3,我想将我自己的按键中断绑定在CPU2上,使用echo "2" > /proc/irq/70/smp_affinity
sh: echo: write error: Input/output error,但是我绑定网卡等中断就可以,我搞不明白,是否有这个方向的学习资料。

  • 写回答

2条回答 默认 最新

  • z a x 2023-09-01 14:31
    关注

    在Linux系统中,要将一个中断绑定到特定的CPU核心上,通常需要root权限,但也需要确保该中断支持绑定到CPU核心上。在你的情况下,你希望将GPIO中断绑定到CPU2上。

    首先,确保你有root权限,可以使用sudo或者直接以root用户登录。

    然后,你需要检查中断是否支持绑定到CPU核心。并不是所有的中断都支持绑定到特定的CPU核心上,这取决于硬件和驱动程序的支持。你可以使用以下命令来查看中断是否支持绑定:

    cat /proc/irq/70/smp_affinity_list
    

    如果输出为空或包含多个CPU核心,那么这个中断可能不支持绑定到单个CPU核心上。

    如果你确定该中断支持绑定到单个CPU核心,但是仍然出现 "Input/output error",可能有以下几种原因:

    1. 权限问题: 确保你有足够的权限来更改中断的绑定。使用sudo来执行你的echo命令。

    2. IRQ线程处理: 有些中断可能已经在IRQ线程上运行,这些中断通常不能绑定到特定的CPU核心上。你可以查看/proc/irq/70/smp_affinity文件中的内容,如果显示为IRQ线程(如[IRQ]),那么这个中断可能不支持绑定。

    3. IRQ共享: 如果多个中断共享同一个IRQ线,你可能无法直接将它们绑定到不同的CPU核心上。在这种情况下,你需要考虑重新分配中断,或者通过软件来处理中断。

    如果你仍然遇到问题,可能需要查阅特定硬件和驱动程序的文档,以了解如何正确配置中断绑定。同时,也可以尝试查找相关的内核文档和论坛,寻求帮助和建议。

    总之,中断绑定到特定的CPU核心是一个复杂的主题,受到硬件、驱动程序和操作系统的多方面影响,因此需要详细的调查和研究。如果你有特定的硬件和驱动程序,最好参考相关的文档和社区支持。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月9日
  • 已采纳回答 9月1日
  • 创建了问题 9月1日

悬赏问题

  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd