TI C66x DSP 四种内存保护问题 -之- 针对CPU訪问外存(DDR3 or MSM)时的内存保护问题 - 举例
2017-07-21 08:56
232 查看
在代码维护中遇到过这种问题,CPU訪问了corePac的外部内存空间0x75510C55地址,即CPU向corePac的L2内存控制器发起了对该内存的訪问,然后L2内存控制器将该请求发给corePac的XMC模块,XMC模块依据配置好的寄存器(即32bit虚拟地址到36位物理地址的映射与内存权限寄存器,每一个大小为16M的内存段用一个寄存器设置,每一个CPU均有相同的多个此种寄存器)检查该地址是否合法。发现该地址没有在不论什么一个这种寄存器中设置,即XMC将该内存视为非法地址。然会会通过L2内存控制器上报非法地址訪问。L2内存控制器通过system
event 0x6E = 110来上报该错误(event 110与该类内存非法訪问MDMAError映射是固定的。參考corePac user guide 9.3节),用户能够在注冊给event 110的exception处理函数中做些自己的事情(如通常是主动将DSP的其它CPU也crash掉等,使整个DSP停止工作,这样保存了现场,易于问题的调查),系统会设置MDMAError寄存器,将错误类型在寄存器中显示给用户,如图中MDMAErr
= 0x40000302,LSB 0x02就表示privilege error,即CPU对0x75510C55地址无权限訪问。
上述的检查机制由硬件实现。
以下解释下0x75510C55内存地址,当CPU要訪问corePac外部内存时。CPU发起的訪问均是32bit的虚拟地址。所以要想真正訪问到外部内存(如DDR)的物理地址,必须由前面提到的XMC模块映射为36bit物理地址。这里的0x75510C55就是CPU发起的32位虚拟地址,XMC会检測到该地址非法。同一时候由最后一张图可知(见TI C66x data manual table 2-2
Memory Map Summary。实际上该地址是reserved的,即CPU以及不论什么外设是不可以訪问reserved地址的,用户也不能拿这些reserved地址映射到物理地址上。当CPU訪问了这些reserved的地址,会报上面的错误的。
所以这里用户在XMC寄存器中没用映射0x75510C55地址。当然XMC检測时会觉得是非法地址。
![](http://img.blog.csdn.net/20140603210947640?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWl5ZWd1emhvdTEwMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20140603213604359?<br/><br/>watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWl5ZWd1emhvdTEwMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
event 0x6E = 110来上报该错误(event 110与该类内存非法訪问MDMAError映射是固定的。參考corePac user guide 9.3节),用户能够在注冊给event 110的exception处理函数中做些自己的事情(如通常是主动将DSP的其它CPU也crash掉等,使整个DSP停止工作,这样保存了现场,易于问题的调查),系统会设置MDMAError寄存器,将错误类型在寄存器中显示给用户,如图中MDMAErr
= 0x40000302,LSB 0x02就表示privilege error,即CPU对0x75510C55地址无权限訪问。
上述的检查机制由硬件实现。
以下解释下0x75510C55内存地址,当CPU要訪问corePac外部内存时。CPU发起的訪问均是32bit的虚拟地址。所以要想真正訪问到外部内存(如DDR)的物理地址,必须由前面提到的XMC模块映射为36bit物理地址。这里的0x75510C55就是CPU发起的32位虚拟地址,XMC会检測到该地址非法。同一时候由最后一张图可知(见TI C66x data manual table 2-2
Memory Map Summary。实际上该地址是reserved的,即CPU以及不论什么外设是不可以訪问reserved地址的,用户也不能拿这些reserved地址映射到物理地址上。当CPU訪问了这些reserved的地址,会报上面的错误的。
所以这里用户在XMC寄存器中没用映射0x75510C55地址。当然XMC检測时会觉得是非法地址。
相关文章推荐
- TI C66x DSP 四种内存保护问题 -之- 针对CPU访问外存(DDR3 or MSM)时的内存保护问题 - 举例
- TI C66x DSP 四种内存保护问题 -之- 针对CPU访问外存(DDR3 or MSM)时的内存保护问题
- TI C66x DSP 四种内存保护问题 -之- CPU訪问corePac内部资源时的内存保护问题
- TI C66x DSP 四种内存保护问题 -之- CPU访问corePac内部资源时的内存保护问题
- TI C66x DSP 四种内存保护问题 -之- 外设訪问corePac内部资源时的内存保护问题
- TI C66x DSP 四种内存保护问题 -之- 外设访问corePac内部资源时的内存保护问题
- TI C66x DSP 四种内存保护问题
- 常见的CPU訪问引起的内存保护问题为什么仅仅用event_122上报 - 举例2
- 常见的CPU访问引起的内存保护问题为什么只用event_122上报 - 举例1
- 常见的CPU访问引起的内存保护问题为什么只用event_122上报 - 举例2
- 常见的CPU访问引起的内存保护问题为什么只用event_122上报 - 1
- 常见的CPU访问引起的内存保护问题为什么只用event_122上报 - 2
- 黄聪:MYSQL使服务器内存CPU占用过高问题的分析及解决方法
- linux性能问题(CPU,内存,磁盘I/O,网络)
- 内存和CPU主板的搭配问题
- 解决w3wp.exe占用CPU和内存问题
- TI C66x DSP 系统events及其应用 - 5.12(vector的创建)
- 一道内存对齐问题和由此引出的CPU字节序问题
- 服务器的w3wp.exe进程占用cpu和内存过多的问题
- 如何解决w3wp占用CPU和内存问题