JAJZ026B April 2024 – February 2025 TMS320F28P550SG , TMS320F28P550SJ , TMS320F28P559SG-Q1 , TMS320F28P559SJ-Q1
影響を受けるリビジョン:0, A
ネストされた割り込みに使用される特定のコード・シーケンスでは、CPU と PIE が矛盾した状態に移行し、望ましくない割り込みをトリガできるようになります。この状態に入るために必要な条件は次のとおりです。
不要な割り込みがトリガされるかどうかは、システム内の他の割り込みの構成とタイミングによって異なります。これは、ほとんどのアプリケーションではまれなイベントまたは存在しないイベントであると予想されます。発生した場合、不要な割り込みはネストされた割り込みの PIE グループの最初の割り込みになり、ネストされた割り込みが CPU 割り込みを再度イネーブルにした後にトリガされます (EINT または ASM (「CLRC INTM」))。
回避方法:PIEACK 書き込みと CPU 割り込み有効化の間に NOP を追加します。コード例を以下に示します。
//Bad interrupt nesting code
PieCtrlRegs.PIEACK.all = 0xFFFF; //Enable nesting in the PIE
EINT; //Enable nesting in the CPU
//Good interrupt nesting code
PieCtrlRegs.PIEACK.all = 0xFFFF; //Enable nesting in the PIE
asm(" NOP"); //Wait for PIEACK to exit the pipeline
EINT; //Enable nesting in the CPU