This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28335:外设中断扩展(PIE)初始化后失败

Guru**** 2604225 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/673697/tms320f28335-failure-after-initialization-of-peripheral-interrupt-expansion-pie

器件型号:TMS320F28335

您好、Sirs、

我们现场有一个故障传感器、症状是系统无法工作。

我们有引导加载程序和 AP 代码、并且引导加载程序和 AP 上都没有响应。

我 使用 JTAG 只加载 sysmbol 并检查状态。

我 发现禁用 PIE 初始化后系统消失。

 我验证它是否正常、它是否在同一行中。

您知道什么是错误吗?

 在重新编译工程并重新下载时解决此症状非常奇怪。

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Gogi、

    您能否进一步解释一下"禁用 PIE 初始化后消失"的含义?

    - Ken
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ken、

    PIE 初始化的一个步骤是禁用 PIE、"PieCtrlRegs.PIECTRL.bit.ENPIE = 0"。

    下一步是清除寄存器、我在此行上设置断点 、但不再响应。  

    Gogi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Gogi、

    请参阅以下研讨会:

    processors.wiki.ti.com/.../C2000_Archived_Workshops

    在实验5中、请参阅 PIECTRL_5_6_7_8_9_10.c 文件。 请注意、首先禁用 PIE 块、然后立即复制 PIE 矢量表(memcpy)以填充 PIE 块。 接下来、禁用 PIE 中断、清除可能挂起的 PIEIFR 标志、并确认 PIE 中断组。 然后、最后启用 PIE 块。

    我可以在此文件中的任意点设置断点、以及单步执行此文件等 请将您的 PIE 初始化代码与此文件进行比较、并让我知道结果。

    但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。

    - Ken
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ken、
    一个区别是"memcpy (&PieVectTable、&PieVectTableInit、256);"
    这仍然无法确定为什么在该样本上的"Disable PIE"之后将系统挂起。

    我们的初始化是
    空 InitPieCtrl (空)

    //在 CPU 级别禁用中断:
    Dint;

    //禁用 PIE
    PieCtrlRegs.PIECTRL.bit.ENPIE = 0;

    //清除所有 PIEIER 寄存器:
    PieCtrlRegs.PIEIER1.ALL = 0;
    PieCtrlRegs.PIEIER2.ALL = 0;
    PieCtrlRegs.PIEIER3.ALL = 0;
    PieCtrlRegs.PIEIER4.ALL = 0;
    PieCtrlRegs.PIEIER5.ALL = 0;
    PieCtrlRegs.PIEIER6.ALL = 0;
    PieCtrlRegs.PIEIER7.ALL = 0;
    PieCtrlRegs.PIEIER8.ALL = 0;
    PieCtrlRegs.PIEIER9.ALL = 0;
    PieCtrlRegs.PIEIER10.ALL = 0;
    PieCtrlRegs.PIEIER11.all = 0;
    PieCtrlRegs.PIEIER12.ALL = 0;

    //清除所有 PIEIFR 寄存器:
    PieCtrlRegs.PIEIFR1.ALL = 0;
    PieCtrlRegs.PIEIFR2.ALL = 0;
    PieCtrlRegs.PIEIFR3.ALL = 0;
    PieCtrlRegs.PIEIFR4.ALL = 0;
    PieCtrlRegs.PIEIFR5.ALL = 0;
    PieCtrlRegs.PIEIFR6.ALL = 0;
    PieCtrlRegs.PIEIFR7.ALL = 0;
    PieCtrlRegs.PIEIFR8.ALL = 0;
    PieCtrlRegs.PIEIFR9.ALL = 0;
    PieCtrlRegs.PIEIFR10.ALL = 0;
    PieCtrlRegs.PIEIFR11.all = 0;
    PieCtrlRegs.PIEIFR12.ALL = 0;


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Gogi、

    您是否说您没有以下内容?

    asm (" EALLOW");//启用 EALLOW 受保护寄存器访问
    memcpy (&PieVectTable、&PieVectTableInit、256);
    asm (" EDIS");//禁用 EALLOW 受保护寄存器访问

    否则、PIE 表将不会加载矢量。 尝试使用我的 PIECTRL.c 文件运行您的代码(用我的文件替换您的文件)。 然后进行测试、让我知道会发生什么。

    - Ken
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Gogi、

    我们上次听说过您、已经有一段时间了。 因此、我们假设您能够解决您的问题。 如果情况并非如此,请拒绝此解决方案或回复此主题。 如果此主题被锁定、请制作一个描述问题当前状态的新主题。 谢谢你。

    - Ken