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