Embedded 如果FIQ中CPU挂起,数据中止?

Embedded 如果FIQ中CPU挂起,数据中止?,embedded,arm,interrupt,Embedded,Arm,Interrupt,我正在ARM平台上开发嵌入式系统。我只是想解决一个随机数据中止的问题。当我试图将有问题的行集中在寄存器映射上进行调试时,另一个问题是行号并不总是固定的。 最后,我发现等待函数调用(只需使CPU暂停指定的时间)将引入数据中止问题 我想知道如果我们在FIQ或IRQ中做很多事情,比如复杂的计算,会出现什么问题?它会导致数据中止问题吗?既然FIQ应该在服务例行程序期间禁用所有其他FIQ或IRQ,为什么会引入此类问题 参考号 您是否已验证所有访问都已对齐?您应该能够查看堆栈(cortex-m)或链接寄存

我正在ARM平台上开发嵌入式系统。我只是想解决一个随机数据中止的问题。当我试图将有问题的行集中在寄存器映射上进行调试时,另一个问题是行号并不总是固定的。 最后,我发现等待函数调用(只需使CPU暂停指定的时间)将引入数据中止问题

我想知道如果我们在FIQ或IRQ中做很多事情,比如复杂的计算,会出现什么问题?它会导致数据中止问题吗?既然FIQ应该在服务例行程序期间禁用所有其他FIQ或IRQ,为什么会引入此类问题

参考号


您是否已验证所有访问都已对齐?您应该能够查看堆栈(cortex-m)或链接寄存器(不是cortex-m)并找到导致中止的指令。是的,我检查了链接寄存器R14,但地址并不总是指向同一地址。如果我做同样的操作,它有时会关机,有时会变慢,并不总是固定的时间。这很奇怪,但在我删除了FIQ中的等待后,它似乎起了作用!?谢谢你的提醒。