JAJZ034E October   2022  – July 2025 TMS320F2800132 , TMS320F2800133 , TMS320F2800135 , TMS320F2800137

 

  1.   1
  2.   TMS320F28003x Real-Time MCUs Silicon Errata シリコン リビジョン 0
  3. 1使用上の注意およびアドバイザリ マトリックス
    1. 1.1 使用上の注意マトリックス
    2. 1.2 アドバイザリ マトリックス
  4. 2命名法、パッケージのマーキングとリビジョンの識別
    1. 2.1 デバイスおよび開発ツールの命名規則
    2. 2.2 サポート対象デバイス
    3. 2.3 パッケージの記号表記およびリビジョンの識別
  5. 3シリコン リビジョン C の使用上の注意とアドバイザリ
    1. 3.1 シリコン リビジョン C の使用上の注記
      1. 3.1.1 PIE:双方向 PIEACK 書き込みと手動 CPU 割り込みマスク クリア後のスプリアス ネスト割り込み
      2. 3.1.2 繰り返しブロックでネストされた割り込みを使用する際の注意
      3. 3.1.3 セキュリティ:プライマリ防御層はチップの境界を保護します。これは、JTAGLOCK およびフラッシュからのゼロ ピン ブート機能を有効化することから始まります
    2. 3.2 シリコン リビジョン C のアドバイザリ
      1.      アドバイザリ
      2.      アドバイザリ
      3.      アドバイザリ
      4.      アドバイザリ
      5.      アドバイザリ
      6.      アドバイザリ
      7.      アドバイザリ
      8. 3.2.1 アドバイザリ
      9.      アドバイザリ
      10. 3.2.2 アドバイザリ
      11. 3.2.3 アドバイザリ
      12.      アドバイザリ
      13.      アドバイザリ
      14.      アドバイザリ
      15.      アドバイザリ
      16. 3.2.4 アドバイザリ
      17.      アドバイザリ
      18. 3.2.5 アドバイザリ
      19.      アドバイザリ
  6. 4シリコン リビジョン B の使用上の注意とアドバイザリ
    1. 4.1 シリコン リビジョン B の使用上の注記
    2. 4.2 シリコン リビジョン B のアドバイザリ
  7. 5シリコン リビジョン A の使用上の注意とアドバイザリ
    1. 5.1 シリコン リビジョン A の使用上の注記
    2. 5.2 シリコン リビジョン A のアドバイザリ
  8. 6シリコン リビジョン 0 の使用上の注意とアドバイザリ
    1. 6.1 シリコン リビジョン 0 の使用上の注記
    2. 6.2 シリコン リビジョン 0 のアドバイザリ
  9. 7ドキュメントのサポート
  10. 8商標
  11. 9改訂履歴

PIE:双方向 PIEACK 書き込みと手動 CPU 割り込みマスク クリア後のスプリアス ネスト割り込み

影響を受けるリビジョン:0、A、B、C

ネストされた割り込みに使用される特定のコード・シーケンスでは、CPU と PIE が矛盾した状態に移行し、望ましくない割り込みをトリガできるようになります。この状態に入るために必要な条件は次のとおりです。

  1. PIEACK クリアの後に、グローバル割り込み友好状態 (EINTまたはASM (「CLRC INTM」)) が直ちに続きます。
  2. ネストされた割り込みにより、そのグループの一つ以上の PIEIER ビットがクリアされます。

不要な割り込みがトリガされるかどうかは、システム内の他の割り込みの構成とタイミングによって異なります。これは、ほとんどのアプリケーションではまれなイベントまたは存在しないイベントであると予想されます。発生した場合、不要な割り込みはネストされた割り込みの 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