[英]problem with armv8 timer interrupt setting
我正在尝试在 cortex-a55 上设置核心定时器中断。 计时器设置如下所示
.global get_sys_timer_interrupt
get_sys_timer_interrupt:
mrs x1, CNTFRQ_EL0
msr CNTP_TVAL_EL0, x1
mov x0, 1
msr CNTP_CTL_EL0, x0
RET
CurrentEL
寄存器告诉我我在EL1
级别工作。 我在VBAR_EL1
寄存器中指向一个指向向量表的指针。 向量表看起来像这样
.text
.global vector_table
.balign 2048
vector_table:
b exception_entry
.balign 0x80
b interrupt_entry
.balign 0x80
b interrupt_entry
.balign 0x80
b exception_entry
.balign 0x80
b exception_entry // <----
.balign 0x80
b interrupt_entry
.balign 0x80
b interrupt_entry
.balign 0x80
mov x0, #8
b exception_entry
.balign 0x80
b exception_entry
.balign 0x80
b interrupt_entry
.balign 0x80
b interrupt_entry
.balign 0x80
b exception_entry
.balign 0x80
b exception_entry
.balign 0x80
b interrupt_entry
.balign 0x80
b interrupt_entry
.balign 0x80
b exception_entry
如果我创建了一个不正确的命令,处理器会进入 exception_entry (即进入中断错误处理,我注意到它)但我不明白为什么不调用定时器中断。 我认为有必要在 GIC(中断处理单元)中安装一些寄存器,但是在写入寄存器时它们不会被覆盖(我检查了GICD_CTRL
和GICD_ISENABLER
)
您可以参考https://www.terraelectronica.ru/pdf/show?pdf_file=%252Fds%252Fpdf%252FD%252FDDI0500.pdf在第3.2.2 Exception levels
An exception cannot target the EL0 Exception level
: An exception cannot target the EL0 Exception level
。 这意味着应该从 EL1/EL2/EL3 处理 IRQ 异常,具体取决于您的配置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.