完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
你好,我使用的芯片是OMAP3530,对应的DSP型号为dm3730,开发环境为CCS3.3,BIOS5.4。在DSP/BIOS系统下开发。现在想使用C64x+芯片提供的异常处理机制来监测处理系统异常,但是在测试时,触发异常后,系统并未进入设置好的异常处理程序,麻烦你们帮我查找下原因?
我开发过程如下: 1、进入DSP/BIOS配置界面,使能EXC功能:HWI_Hardware Interrupt Service Routine Manager->Properties->勾选“Enable EXC module excdption processing”,保存。 2、在DSP/BIOS配置界面,设置异常处理函数(excInt):HWI_NMI->Properties->function,在function后填入:_excInt,然后保存。 3、相关代码说明: (1)内存保护初始化 #define EXC_EVTPMCCMPA 120 /* L1P CPU Memory Protection fault */ #define EXC_EVTDMCCMPA 122 /* L1D CPU Memory Protection fault */ #define EXC_EVTUMCCMPA 124 /* L2 CPU Memory Protection fault */ void MPC_init (void) [ /*写1 到MPFCR,清除BOOT ROM 可能触发的内存保护异常*/ L1PMPFCR = 1; L1DMPFCR = 1; L2MPFCR = 1; /*清除内存保护故障事件对应的EVTFLAG 和MEXPFLAG 标志位*/ EVTCLR3 | = 0x01000000; EVTCLR3 | = 0x04000000; EVTCLR3 | = 0x10000000; /*使能内存保护故障事件*/ EXPMASK3 & = ~0x01000000; EXPMASK3 & = ~0x04000000; EXPMASK3 & = ~0x10000000; ] (2)异常中断初始化 #define EXC_TSRGEE 0x00000004 #define EXC_TSRXEN 0x00000008 void EXC_init(void) [ extern volatile cregister unsigned int TSR; extern volatile cregister unsigned int ISTP; extern volatile cregister unsigned int IER; extern volatile cregister unsigned ECR; extern volatile cregister unsigned NRP; extern volatile cregister unsigned NTSR; extern volatile cregister unsigned IERR; /*清除异常中断相关寄存器的状态*/ ECR = 0xFFFFFFFF; NRP = 0; NTSR = 0; IERR = 0; /* 使能异常中断*/ TSR |= EXC_TSRXEN | EXC_TSRGEE; IER = IER |2; ] (3)设置内存保护页属性 #define MPC_MPPA_UX 0x00000001 /* User execute */ #define MPC_MPPA_UW 0x00000002 /* User Write */ #define MPC_MPPA_UR 0x00000004 /* User Read */ #define MPC_MPPA_SX 0x00000008 /* Supervisor execute */ #define MPC_MPPA_SW 0x00000010 /* Supervisor Write */ #define MPC_MPPA_SR 0x00000020 /* Supervisor Read */ #define MPC_MPPA_LOCAL 0x00000100 /* LOCAL CPU access */ void MPC_setBufferPA(void) [ unsigned int * p1; unsigned int i; p1 = (unsigned int *) 0x0184AE40; //L1DMPPA16 地址 for(i=0; i<8; i++) *p1++ = MPC_MPPA_UR | MPC_MPPA_SR | MPC_MPPA_LOCAL; for(i=0; i<8; i++) *p1++ = 0; //16KB cache ] (4)中断服务处理程序 void excInt() [ //异常处理代码 ] (5)main函数中调用 #define L1DSRAM_CACHE_BASE 0x00F14000 void main(void) [ volatile unsigned int * p; /* L1DCFG L1D Configuration. 16k cache, 16k addressable */ L1DCFG = 3; MPC_init(); //内存保存初始化 EXC_init(); //中断初始化 MPC_setBufferPA(); //设置内存属性 //向不可写的内存进行写操作,触发异常 p= (unsigned int *) L1DSRAM_CACHE_BASE; *p=123; ] 将上述程序集成到系统中,编译后下载到调试板上,发现系统并未进入异常处理函数excInt()。我想问下,是我配置存在问题吗?还是什么其他原因? |
|
相关推荐
15 个讨论
|
|
Abby0127 发表于 2020-8-13 10:30 DSP/BIOS里有MPC_setBufferPA API函数,可以试试用BIOS API函数配置。 请参考一下DM6437的exception handling例程。 http://processors.wiki.ti.com/index.php/Cache_Protection_With_the_DSP/BIOS_MPC_Module#Example |
|
|
|
|
|
|
|
vuywsdfwf 发表于 2020-8-13 10:37 你好,经过调试我的程序已经可以进入NMI中断了,非常感谢。 我还有几个疑问,希望你能解答下: 1、如果在BIOS中不使能”MPC module“,是否可使用 2、在BIOS中不使能”MPC module“,但使能了”内存异常事件“,如果出现了内存的违规访问,是否会产生相应的异常事件,并进入”HWI_NMI“中断的处理函数? 期待你的回答!祝:工作愉快! |
|
|
|
|
|
|
|
|
你好,我现在遇到一个比较困惑的问题: (1) 我在DSP/BIOS中使能了“MPC module”功能,但并未故意制造内存访问异常,并且在DSP初始化中对EXPMASK(0~3)寄存器各位全部置1了,如下: EXPMASK0 = 0xffffffff; EXPMASK1 = 0xffffffff; EXPMASK2 = 0xffffffff; EXPMASK3 = 0xffffffff; 即异常事件都未联合,但程序却进入了HWI_NMI中断控制程序,并且进入了外部可屏蔽异常(EXF); (2)当我不使能“MPC module”功能时,程序就没产生异常。 程序是一样的,请问这是什么原因?期待你的答复。 |
|
|
|
|
|
|
|
Abby0127 发表于 2020-8-13 11:28 例程可以到下面的网站下载。 TI C64x+ DSP内核异常处理机制的应用 (ZIP 1146 KB) http://www.ti.com.cn/general/cn/docs/litabsmultiplefilelist.tsp?literatureNumber=zhca072 |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
550 浏览 0 评论
1613 浏览 0 评论
2047 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1514 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1338 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1757浏览 29评论
2783浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1724浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1634浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1645浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 17:45 , Processed in 1.071250 second(s), Total 76, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3036