首页 > 代码库 > 常见的CPU访问引起的内存保护问题为什么只用event_122上报 - 1
常见的CPU访问引起的内存保护问题为什么只用event_122上报 - 1
当CPU访问某个地址,会首先将访问请求发给L1D内存控制器,如果在L1D cache或L1D SRAM(CPU直接访问L1D内存)中命中,则L1D内存控制器就向CPU直接返回访问内存,如果没有命中则需要L2内存控制器请求…
这样当CPU访问的地址是空地址(NULL)或者是DSP中reserved(DSP没有开放使用的内存地址)的地址,在L1D内存控制器中就会检测到CPU非法地址访问,就会通过L1D的内存保护event 122(0x7A)上报非法访问。
L1D内存控制器是最接近CPU的,所以一旦CPU请求的地址是0或者reserved地址,就在第一时间被L1D内存控制器发现,所以就不再需要进入L2内存控制器检查了,也没必要了。
CPU内存访问路径:CPU<---->L1D内存控制器<--->L2内存控制器<--->EMC/XMC(corePac模块)<--->MSMC
而event 122(L1D_CMPA)就是L1D内存控制器检测到CPU非法访问时,上报exception的event(event 123,即 L1D_DMPA是L1D内存控制器检测到外设的非法访问)
那么L1D内存控制器是怎么检测到CPU访问空指针或reserved地址的呢? 见"常见的CPU访问引起的内存保护问题为什么只用event_122上报 - 2"
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。