TI论坛
直播中

丁浩

7年用户 229经验值
私信 关注
[问答]

C6748的存储器保护单元可以实现“取指异常”与“访问异常”吗?

因为程序在某些时候跑飞,想查找异常,但是无奈没有类似于ARM的“取指异常”与“访问异常”等异常,如对0地址的读写操作。
但看到MPU大概可以实现这个功能;,无奈相关资料太少;
并且上说的MPU REVID(0x4E810101)与实际器件(0x4E814901)不一致.
找到另外一篇:
KeyStone Architecture Memory Protection Unit (MPU)
Literature Number: SPRUGW5A
June 2013
版本ID能对上,但按时间操作并无引起异常;
程序如下(仿真器调试):
HWREG(SOC_MPU_0_REGS + MPU0_PROG1_MPSAR) = 0x00000000;
HWREG(SOC_MPU_0_REGS + MPU0_PROG1_MPEAR) = 0x00000000 + 0x00700000 - 1;
HWREG(SOC_MPU_0_REGS + MPU0_PROG1_MPPA) = 0x03FFFE00;
p = (void*)1;
*p = 0x11;
val = *p;
按我理解应该是会引起异常的,虽然中断没开,至少“FLTSTAT”等寄存器会有变化;
是否有更详细的资料或参考代码;“C6748_StarterWare”中没有此部分例程。

回帖(4)

丁浩

2020-7-31 07:44:25
问题太简单了?没人回答?
举报

李波

2020-7-31 07:55:34
#1. C6748就参考SPRUH79A好了,你说的ID不对,可能是写错了,但不影响实际的操作。
#2. C6748的MPU只能对DDR,shareRAM做保护,你上面例子的地址不是这个范围,其实是配置不进去的。
#3. 你要的功能是DSP 核的memory protection功能,请参考sprufk5a。
                                                                         http://processors.wiki.ti.com/index.php/Main_Page
Think Over Before Asking.
http://www.catb.org/~esr/faqs/smart-questions.html#goal
举报

丁浩

2020-7-31 08:10:55
谢谢!
按你说法MPU即无法实现“访问非法存储区域”引起一个异常?
那如何产生“指令异常”与“数据异常”?
现在我所遇到的问题是程序有时候会跑飞,程序指针在0x0070000之后的地址,即是内部ROM;
我想做的工作是:访问非法的存储区时产生异常,在异常处理中记录产生异常的一些信息,如程序指针,堆栈信息等,以备查找原因。
举报

李波

2020-7-31 08:30:02
#3. 你要的功能是DSP 核的memory protection功能,请参考sprufk5a。
这篇文章可以参考:http://wenku.baidu.com/link?url=pPdYQbmE8IOVtZSRSObnrZlPybxI7mwMvBCbZAZlAZ_szzyIqd9XPdVRM12op8nAkliE2c_ACVHkW1sOvtOohhgxd0LGsIKLgCykmzyTlyi


                                                                         http://processors.wiki.ti.com/index.php/Main_Page
Think Over Before Asking.
http://www.catb.org/~esr/faqs/smart-questions.html#goal
举报

更多回帖

发帖
×
20
完善资料,
赚取积分