TI C66x DSP 四种内存保护问题 -之- 针对CPU訪问外存(DDR3 or MSM)时的内存保护问题 - 举例
在代码维护中遇到过这种问题,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
= 0x400003,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检測时会觉得是非法地址。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWl5ZWd1emhvdTEwMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWl5ZWd1emhvdTEwMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
TI C66x DSP 四种内存保护问题 -之- 针对CPU訪问外存(DDR3 or MSM)时的内存保护问题 - 举例的更多相关文章
- TI C66x DSP 四种内存保护问题 -之- CPU訪问corePac内部资源时的内存保护问题
CPU訪问corePac内部资源(L1.L2)时的内存保护(通过设置内存的訪问权限实现)等问题请參考以下两个blog.已经叙述的非常具体. "TI C66x DSP 系统events及其应用 ...
- TI C66x DSP 四种内存保护问题 -之- 外设訪问corePac内部资源时的内存保护问题
外设訪问corePac内部资源(L1,L2)时的内存保护等问题请參考以下两个blog.已经叙述的非常具体. "TI C66x DSP 系统events及其应用 - 2"," ...
- TI C66x DSP 系统events及其应用 - 5.6(INTMUX)
系统event 0~127(包含了eventCombiner的输出event 0~3)与CPU支持的12个可屏蔽中断是通过INTMUX寄存器进行映射的(不包含NMI.RESET).能够选择将系统eve ...
- TI C66x DSP 系统events及其应用 - 5.11(中断控制寄存器)
C66x DSP运行中断的简要流程: 1.使能了全局中断和子中断.假设硬件检測到中断发生,那么CPU就要跳转. 2.软件把CPU内部的A,B类寄存器的值等推入堆栈保存,把当前PC寄存器的值放入IRP寄 ...
- 四种不同的SNP calling算法call低碱基覆盖度测序数据时,SNVs数量的比较(Comparing a few SNP calling algorithms using low-coverage sequencing data)
摘要:如果不设置任何过滤标准的话,SOAPsnp会call出更多的SNVs:AtlasSNP2算法比较严格,因此call出来的SNVs数量是最少的,GATK 和 SAMtools call出来的数量位 ...
- TI C66x DSP 系统events及其应用 - 5.10(创建ISR的三种情况)
ISFP是服务中断的指令包,创建ISR的三种情况: 1.一个ISFP包的8条指令就能够满足ISR watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWl5ZW ...
- TI C66x DSP 系统events及其应用 - 5.1(QM accumulator的配置)
以下解说在详细应用中,event与中断ISR的设置.以对QM的queue监控产生中断(不是EXCEP)为例,主要包含配置QM accumulator(用于监控QM queue)与配置ISR(ISR与e ...
- TI C66x DSP 系统events及其应用 - 5.8(ISTP)
中断服务表指针ISTP(Interrupt Service Table Pointer)位置寄存器用于定位的中断服务例程,那ISTP去哪里找要运行的程序,ISTP(当中的ISTB字段)就是指向IST表 ...
- TI C66x DSP 系统events及其应用 - 5.7(IST)
当CPU開始处理一个中断(INT4~15)时,它将引用中断服务表(IST).IST是一个获取包括中断服务代码的包的表. IST包括16个连续的获取包.每个中断服务获取包(ISFP)包括最多14条指令( ...
随机推荐
- 九度oj 题目1041:Simple Sorting
题目描述: You are given an unsorted array of integer numbers. Your task is to sort this array and kill p ...
- 【Luogu】P4357K远点对(寄蒜几盒)
题目链接 考虑旋转卡壳求出一个最远点对之后删掉其中一个点,把该点到其余所有点的距离存进堆里…… 最后堆输出答案. 我的代码只有在开O2的情况下才不会re.为啥???? #include<cstd ...
- Django的标准库django.contrib包介绍
原文地址:http://www.nowamagic.net/academy/detail/1318716 前面我们激活了 Django 后台,我们要使用自动化的站点管理工具(django.contri ...
- Linux System Programming 学习笔记(二) 文件I/O
1.每个Linux进程都有一个最大打开文件数,默认情况下,最大值是1024 文件描述符不仅可以引用普通文件,也可以引用套接字socket,目录,管道(everything is a file) 默认情 ...
- c#学习笔记之Application.DoEvents应用
Visual Studio里的摘要:处理当前在消息队列中的所有 Windows 消息. 交出CPU控制权,让系统可以处理队列中的所有Windows消息 比如在大运算量循环内,加Application. ...
- WEB学习 -相对定位、绝对定位、固定定位、z-index
相对定位 相对定位,就是微调元素位置的.让元素相对自己原来的位置,进行位置调整. .不脱标,老家留坑,形影分离 也就是说相对定位不脱标,真实位置是在老家,只不过影子出去了,可以到处飘. 3.相对定位用 ...
- python3 - pop 接收邮件/ smtp 发送邮件
以下通过python3 实现接收和发送邮件,网上相关说明文档很多.请自己查阅,这里只写入代码, # 实例:通过poplib 模块接收指定账号的邮件并进行解码处理,结果可视化. #!/opt/pytho ...
- (5)Unity3d GUI
- trick点
1.问题里有取模操作的时候,最后输出(ans+mod)%mod 2.涉及到输出实数0的时候要特判输出的会不是是-0.000000(因为0.00乘一个负的浮点数结果是-0.000000,乘一个正的浮点数 ...
- jvm 问题分析
jmap dump:file=[文件名].dump [进程号] 生成dump root@VM-185-251-ubuntu:/opt/scripts# jmap -dump:file=three.d ...