书上说Data Abort是由于对一个无效地址进行读/写造成的。比如store r0,地址A,如果地址A是一个Flash地址,就会发生data abort;如果从某个地址读取数据,而这个地址上并没有存储器,也会发生data abort.
问题:CPU如何知道写操作或读操作无效,存储器并没有向CPU反馈任何信息啊?
为了验证我的想法,我在一个程序中加入下列代码 #define ryx (*(volatile unsigned *)0x0) ryx = 0xfd; 地址0是Flash地址 #define ryr (*(volatile unsigned *)0x20000000) int i = ryr; 地址0x20000000处并没有存储器。 但是,程序执行后并没有产生data abort,我在SYSCFG中已经使能data abort了。 难道说书上的说法错了,那么Data Abort到底是如何产生的呢?
|