Thread 中讨论的其他器件:SYSBIOS
从 Linux 驱动程序端和 SYSBIOS 端配置 ISR 的基本步骤是什么?
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 驱动程序端和 SYSBIOS 端配置 ISR 的基本步骤是什么?
你好、前锋
DTS 修改为:
dsp0{
(笑声)
中断=<0x8 0x0 0x0 0x0 0x18 0x0>;
(笑声)
};
dsp1{
(笑声)
中断=<0x9 0x0 0x1 0x0 0x19 0x0>;
(笑声)
};
等等。
驱动程序代码、用于配置 IRQ:
if (request_IRQ ( 、您的_irqhandler、0、 ,NULL)){
printk (Kern_ERR "错误描述\n");
…
}
谢谢、Atmeg
但是、我对一些问题也很好奇-请原谅我、我是器件树中的新手。
1) 中断=<0x8 0x0 0x0 0x0 0x18 0x0>-- 最后两个元素代表什么? 老实说,中断元素的数量是4或6也令我感到困惑,我只能在中看到#interrupt-cells =<2>
keyston.dtsi 的分支 ipcirq0。
2)您的 IRQ 号为512+16=528 - 512的含义是什么,您在哪里得到了这个数字? 它看起来像是基本 IPC-IRQ 编号。
3) request_IRQ ( ,使用什么功能可以获得 IRQ 号,或者您是否直接使用528? 总共有28位可以触发 IRQ -如果我想捕获所有这些位、这是否意味着需要28个 REQUEST_IRQ 功能?
此致。
1)#interrupt-cells =<2>表示每个 IRQ 定义使用2个字段。 即、2个 IRQ 为4个字段、3个 IRQ 为6个字段。 第一个字段定义 IRQ 号。 我不知道第二个是什么意思(有人能解释一下这是什么吗?)
2) 2)大约512偏移、我通过比较器件树中的 cat /proc/interrupts 和 IRQ 编号来获得此数字。 可能是此编号是在文档中的某个位置定义的、但我找不到。
3) 3)我使用 platform_get_IRQ (platform_device、2)来获得 IRQ 号。 它返回528、因此对于数字、无需知道或定义该512偏移。 Remoteproc 正在使用0和1个平台 IRQ,我使用2个平台 IRQ。
在 Remoteproc_user.c 中:
uproc->IRQ_ctl = platform_get_IRQ (pdev、0);
uproc->IRQ_ring = platform_get_IRQ (pdev、1);
rproc->trace_IRQ = platform_get_IRQ (pdev、2); <-已添加
trace_IRQ 是我添加到 rproc 结构中的字段、用于将 IRQ 传递给驱动程序