需要采取哪些步骤来检测Raspberry Pi3上的GPU中断



我正在编写一个裸机内核,但当EMMC interrupt寄存器变为非零时,似乎不会触发中断。

我有两个内核处于空闲状态,一个在EL3,没有启用数据缓存,持续显示一页内存,以查看我正在测试的代码在做什么

正在测试的代码正在内核0上的Secure EL0上运行,并启用了中断。中断路由到核心0:

QA7.GPU_interrupts_routing = 0; // IRQ and FIQ to Core 0

EMMC接口初始化,并向卡发送重置命令,此时INTERRUPT寄存器变为1(设置位0:命令已完成(,但似乎没有GPU中断信号发送给QA7硬件(Core 0中断源寄存器中的位8保持为零(。

EMMC寄存器IRPT_MASK和IRPT_EN都设置为0x017f7137,我认为这应该启用来自该外围设备的所有已知中断,当然还有位0。

BCM8235中断寄存器是这样写的:

Enable_IRQs_1 = 0x20000000; // (1 << 29);
Enable_IRQs_2 = 0x02ff6800; // 0b00000010111111110110100000000000;
Enable_Basic_IRQs = 0x303;

但他们读回来是:

Enable_IRQs_1: 0x20000200 // (1 << 9) also set
Enable_IRQs_2: 0x02ff6800 // unchanged
Enable_Basic_IRQs: 0x3    // No interrupts from IRQs 1 or 2.

我错过了什么?

(标记为raspberry-pi2,因为它也有QA7组件。(

简单的答案仅此而已。Arasan SD接口中断的编号为62,IRQ basic pending寄存器中的第20位。启用IRQ pending 2中的位30,中断通过。

Enable_IRQs_2 = 0x42ff6800;

我不得不无视这个建议:;上表有许多空条目。不应启用这些功能,因为它们会干扰GPU操作"在文档中。

最新更新