完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在P44L3上的项目在RUN1模式下运行,并在空闲循环中使用SPCSetRunMode(SPC5_RUNMODE_HALT0)来节省功耗。 PIT定时器以1Khz运行,因此切换到HALT0模式通常每秒进行1000次。
在某些情况下 - 不确定如何重现 - SPCSetRunMode()函数不返回,但在for()循环中继续旋转等待I_IMODE或I_IMTC,两者都没有变高。在这种情况下,ME.IS仍为0。 是否存在可能发生这种情况的已知情况,或者我可以采取哪些措施来调试此问题? 谢谢, 以上来自于谷歌翻译 以下为原文 My project on the P44L3 runs in RUN1 mode and uses SPCSetRunMode(SPC5_RUNMODE_HALT0) in the idle loop for power saving. The PIT timer runs at 1Khz, so switching to HALT0 mode is typically done 1000 times per second. In some cases - not sure yet how to reproduce though - the SPCSetRunMode() function does not return, but keeps spinning in the for() loop waiting for I_IMODE or I_IMTC, neither of which ever go high. ME.IS is still 0 in this case. Are there any known circumstances in which this can happen, or anything I could do to debug this issue? Thank you, |
|
相关推荐
7个回答
|
|
进一步调查显示,序列后S_MTRANS不会切换到1
ME.MCTL.R = SPC5_ME_MCTL_MODE(模式)| SPC5_ME_MCTL_KEY; ME.MCTL.R = SPC5_ME_MCTL_MODE(模式)|执行SPC5_ME_MCTL_KEY_INV; 难怪for()循环永远不会终止,因为尚未执行模式切换。 然而,我无法找到*为什么*切换失败。执行切换指令后,ME寄存器具有以下值: 我是:00000000 GS:401F00F4 IMTS:00000000 DMTS:00000000 ME:000005FD 未完待续 以上来自于谷歌翻译 以下为原文 Further investigation shows that S_MTRANS does not switch to 1 after the sequence ME.MCTL.R = SPC5_ME_MCTL_MODE(mode) | SPC5_ME_MCTL_KEY; ME.MCTL.R = SPC5_ME_MCTL_MODE(mode) | SPC5_ME_MCTL_KEY_INV;is executed. No wonder the for() loop never terminates, as the mode switch has not been performed. I'm however not able to find out *why* the switching failed. The ME registers have the following values right after the switch instructions are executed: ME IS:00000000 GS:401F00F4 IMTS:00000000 DMTS:00000000 ME:000005FD To be continued |
|
|
|
可能或可能不相关:我偶然看到机器检查IVOR1发生在HALT0节电时。然后将MCSR机器检查综合症寄存器设置为0x08000010,这意味着“指令读取时总线错误”。
以上来自于谷歌翻译 以下为原文 Might or might not be related: I incidentally see the machine check IVOR1 happen when doing power saving to HALT0. MCSR machine check syndrom register is then set to 0x08000010, meaning 'bus error on instruction read'. |
|
|
|
似乎我遇到了两个不同的问题,我很感激任何反馈来证明我的理论是对还是错:
在高中断负载下,SPCSetRunMode()未返回的问题显着增加。数据表第6.4.2小节HALT0规定:'如果在中断请求有效时存在HALT0模式请求,则器件模式不会改变,并且不会产生无效模式中断。'。我觉得SPCSetRunMode()的实现没有考虑到这一点:在模式切换后,永远不会检查ME.GS.B.S_MTRANS,并且for()循环永远不会退出.HALT0模式转换时的总线错误问题似乎与在HALT0中将闪光灯切换到低功率模式有关。如果我保持CFLASH上电,问题就完全消失了。是否有任何情况下处理器可以在从HALT0唤醒时尝试运行下一条指令,而CFLASH没有及时正确唤醒? 以上来自于谷歌翻译 以下为原文 It seems that I was hit by two different issues, I'd appreciate any feedback to prove my theory right or wrong:
|
|
|
|
|
|
|
|
Hello Geirt,
对于第1点) 你是对的 我正在为RLA&创建一个ER。 HAL 最好的祝福 二万 以上来自于谷歌翻译 以下为原文 Hello Geirt , For point 1) you are right
i am creating an ER for this for RLA & HAL Best regards Erwan |
|
|
|
供将来参考:这是恩智浦的一份文件,提供了广泛的解释和解决方案:
http://www.nxp.com/assets/documents/data/en/engineering-bulletins/EB770.pdf 以上来自于谷歌翻译 以下为原文 For future reference: here is a document from NXP with extensive explanation and solutions: http://www.nxp.com/assets/documents/data/en/engineering-bulletins/EB770.pdf |
|
|
|
你好格特,
MPC56(NXP-Freescale)的应用说明适用于SPC56(ST Microlectronics) 相同的核心 最好的祝福 二万 以上来自于谷歌翻译 以下为原文 Hello Gert , Application Notes for MPC56 (NXP-Freescale) are valid for SPC56 (ST Microlectronics) Same core Best Regards Erwan |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
1445 浏览 1 评论
2113 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1510 浏览 1 评论
2822 浏览 6 评论
5238 浏览 21 评论
362浏览 4评论
537浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
278浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
606浏览 3评论
511浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-24 10:13 , Processed in 0.894641 second(s), Total 81, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号