完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,我正在使用SPC56EL60L3。
我正在做一些功能测试,有时我的应用程序会被卡住。 今天早上我发现它再次卡住,我看了一下使用调试器,我发现它超出了_ivor_exit(请看下图) 查看启动代码(ivor.s),我发现了以下代码,它看起来像是与ivor_exit相关的唯一代码。 #if(CORE_SUPPORTS_DECREMENTER == 1) / * * _IVOR10处理程序(Book-E递减器)。 * / .align 4 .globl _IVOR10 .type _IVOR10,@ function _IVOR10: / *创建外部堆栈帧(extctx结构)。* / e_stwu sp,-80(sp)/ * extctx结构的大小。* / e_stmvsrrw 8(sp)/ *保存PC,MSR。 * / e_stmvsprw 16(sp)/ *保存CR,LR,CTR,XER。 * / e_stmvgprw 32(sp)/ *保存GPR0,GPR3 ...... GPR12。 * // *复位TSR寄存器中的DIE位。* / e_lis%r3,0x0800 / * DIS位掩码。 * / mtspr 336,%r3 / * TSR寄存器。 * /#ifndef _SPC570Sxx_ / *恢复IRQ前的MSR寄存器值。* / mfSRR1%r0 / *没有抢占,保持EE禁用。* / se_bclri%r0,16 / * EE =第16位。* / mtMSR%r0 #endife_b _ivor_exit #endif / * CORE_SUPPORTS_DECREMENTER * /阅读我发现的文档IVOR_10与递减中断有关。 据我所知,递减器可用于实现软件定时。 好吧,如果我不需要减量器(我不希望它的中断干扰我的应用程序怎么办?)。 还有一件事: 我在程序员手册上找到了以下句子: ''MSR [EE]也可以启用外部输入和递减中断。''(RM004,第272页) 看起来每当我在MSR寄存器中设置EE标志的中断时(我使用irqIsrEnable()为此),它也会启用递减中断。 如果我不希望启用递减的interruotys怎么办? 我应该对irqIsrEnable()进行任何更改吗? 谢谢。 问候 亚历山德罗 以上来自于谷歌翻译 以下为原文 Hello everyone, I'm working with SPC56EL60L3. I'm doing some functional testing, and sometimes my application gest stuck. This morning I found it stuck once again, I took a look using the debugger and I found it was exceuting _ivor_exit (please see the picture below) Looking at the startup code (ivor.s), I found the following code, which looks like the only piece of code related to ivor_exit. #if (CORE_SUPPORTS_DECREMENTER == 1) /* * _IVOR10 handler (Book-E decrementer). */ .align 4 .globl _IVOR10 .type _IVOR10, @function _IVOR10: /* Creation of the external stack frame (extctx structure).*/ e_stwu sp, -80(sp) /* Size of the extctx structure.*/e_stmvsrrw 8(sp) /* Saves PC, MSR. */ e_stmvsprw 16(sp) /* Saves CR, LR, CTR, XER. */ e_stmvgprw 32(sp) /* Saves GPR0, GPR3...GPR12. *//* Reset DIE bit in TSR register.*/ e_lis %r3, 0x0800 /* DIS bit mask. */ mtspr 336, %r3 /* TSR register. */#ifndef _SPC570Sxx_ /* Restoring pre-IRQ MSR register value.*/ mfSRR1 %r0/* No preemption, keeping EE disabled.*/ se_bclri %r0, 16 /* EE = bit 16. */ mtMSR %r0 #endife_b _ivor_exit #endif /* CORE_SUPPORTS_DECREMENTER */Reading the documentation I found IVOR_10 is related to decrementer interrupt. As far as I understand, decrementer can be used for implementing software timing. OK, what if I don't need decrementer (and I don't want its interrupt to interfere with my application?). One more thing: I found the following sentence on the programmers manual: ''MSR[EE] also enables external input and decrementer interrupts.'' (RM004, page 272) It looks like whenever I enable interrupts setting the EE flag in MSR register (I use irqIsrEnable(), for this), it also enables decrementer interrupts. What If I don't want decrementer interruotys to be enabled? Should I make any changes to irqIsrEnable()? Thank you. Regards Alessandro |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2666 浏览 1 评论
3221 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1793 浏览 1 评论
3622 浏览 6 评论
6003 浏览 21 评论
951浏览 4评论
1323浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
597浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1316浏览 3评论
1375浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 13:02 , Processed in 0.911584 second(s), Total 44, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号