ハードウェア: S32K144 開発ボード
IDEs : S32 Design Studio
プログラミング:S32DS経由直接
問題の説明:
次の手順で、S32K144 に CSEc セキュア ブートを正常に実装しました。
問題:
ネガティブCASE(失敗シナリオ)をテストする場合:
質問:
現在のステータス:
デバイスは安全な状態のままになっているようです。S32DS を使用してアプリケーションをフラッシュできません。デバイスのセキュリティを解除するには、段階的な回復手順が必要です。
どのセキュア ブート モードを設定しましたか?シーケンシャルモード、パラレルモード、厳密なシーケンシャルモードがあります。
シーケンシャルまたはパラレルブートモードが失敗した場合、ブート保護キーが使用できなくなるという結果しか生じません。これが唯一の効果であり、アプリケーションには影響せず、引き続き実行されます。
厳密なシーケンシャル ブート モードが失敗すると、デバイスは永久にリセット状態のままになり、回復する方法はありません。
回答: AN5401sw の S32K144_CSEc_Secure_boot_add_boot_MAC_Manual の例を使用して、BOOT_DEFINE() 関数でブート モード 1 でシリアル セキュア ブートを構成しました。ブート モード1が厳密なシーケンシャル ブート モードに対応する場合、発生している永続的なリセット動作が説明されます。
「
リセット信号を確認しましたか?電源投入後に解除されますか?
回答:はい、リセット信号を確認しました。電源投入後もリセット信号はアクティブのまま(リセットLEDが点灯したまま)、デバイスがまだリセット状態にあることを示しています。
また、CSEc が有効になると、一括消去 (すべてのブロックを消去するコマンド) がロックされます。
一括消去を有効にするには、MASTER_ECU_KEY を認識した上で、CMD_DBG_CHAL コマンドと CMD_DBG_AUTH コマンドを使用してすべてのキーを消去する必要があります。
回答: AN5401_S32K144_CSEc_Resetting_Flash_to_Factory_Stateをフラッシュしようとすると、「デバイスはセキュリティ保護されています。消去してセキュリティ保護を解除しますか?」というダイアログが表示されます。「はい」をクリックしても同じダイアログが繰り返し表示されます。
S32DS には、「フルチップ消去による緊急 Kinetis デバイス回復」オプションがあります。これを使ってデバイスを回復すべきでしょうか?
注記:
フラッシュおよび消去用のデバッガーが設定されていません。フラッシュとデバッグには S32DS を使用しています。したがって、大量消去に関する支援が必要です。
こんにちは@Kishore_14
どのセキュア ブート モードを設定しましたか?シーケンシャルモード、パラレルモード、厳密なシーケンシャルモードがあります。
シーケンシャルまたはパラレルブートモードが失敗した場合、ブート保護キーが使用できなくなるという結果しか生じません。これが唯一の効果であり、アプリケーションには影響せず、引き続き実行されます。
厳密なシーケンシャル ブート モードが失敗すると、デバイスは永久にリセット状態のままになり、回復する方法はありません。
リセット信号を確認しましたか?電源投入後に解除されますか?
また、CSEc が有効になると、一括消去 (すべてのブロックを消去するコマンド) がロックされます。
一括消去を有効にするには、MASTER_ECU_KEY を認識した上で、CMD_DBG_CHAL コマンドと CMD_DBG_AUTH コマンドを使用してすべてのキーを消去する必要があります。
よろしくお願いいたします。
ルーカス
ブート フレーバー パラメータが 0 に設定されている場合、厳密なシーケンシャル ブート モードが構成されます。
しかし、元のシーケンシャルブートを維持した場合は意味がありません。
/* ステップ3 セキュアブートのフレーバーとBOOT_SIZEを定義する*/
csec_error = BOOT_DEFINE(128*1024*8, 1);
シーケンシャルブートが失敗した場合でも、これによって永続的なリセットが発生することはありません。オシロスコープで信号を確認してみましたか、それとも LED だけを観察しましたか?リセット信号はトグルしていませんか?
リセット信号が永続的にアサートされている場合、回復する方法はありません。
直接観察すると、LED は切り替わっておらず、常時点灯しています。
シーケンシャル ブート モードの場合、新しいアプリケーションがフラッシュされるときにデバイスが継続的にリセットされる可能性はどれくらいありますか?
例のすべての Flashconfig 設定が以下の通りの場合、デバイスはどのように保護されますか。
/* フラッシュ設定 */
。セクション.FlashConfig, "a"
。長さ0xFFFFFFFF /* 8バイトのバックドア比較キー */
。長さ0xFFFFFFFF /* */
。長さ0xFFFFFFFF /* 4バイトのプログラムフラッシュ保護バイト */
。長さ0xFFFF7FFE /* FDPROT:FEPROT:FOPT:FSEC(0xFE = 保護されていない) */
利用できないためデバッガーを直接フラッシュすることができないので、Kinetis の大量消去オプションを試すことはできますか。
注: このCASEは別のボードでも確認されており、以下のリンクに投稿されています。
エラー: デバイスはセキュリティ保護されています。消去してセキュリティ保護を解除してください - NXPコミュニティ
リセット ピンの切り替えは非常に高速であるため、肉眼では確認できない場合があります。それで、オシロスコープで試してみたかどうか尋ねたのです。
永久リセットが必要な理由は 2 つしかありません。
1. 厳密なシーケンシャルブートモードに失敗しました。
2. ハードウェアの問題 - 通常は電圧が不十分なので、電圧モニターではデバイスの起動ができません...
(間違った) アプリケーションによってデバイスを強制的に永久的にリセットする方法はありません。これは、たとえば GPIO を短絡に設定するなど、何らかの自己破壊的な方法でのみ実行できます。
「デバイスは安全です。」というメッセージが表示されます。「消去して安全でない状態にしますか?」というのは、一般的な質問です。ほとんどの場合、これはデバッガーが接続を確立できなかったことを意味します。このCASE、デバイスが保護されていても、有効になっている CSEc モジュールによって大量消去操作がブロックされているため、保護を解除することはできません。
こんにちは、
リセット ピンの切り替えは非常に高速であるため、肉眼では確認できない場合があります。それで、オシロスコープで試してみたかどうか尋ねたのです。
リセット信号を確認しましたか?電源投入後に解除されますか?
回答: リセット ピンがトグルしていることがわかりました。
以前にフラッシュされたアプリケーションが、SW / WDG リセットでスタックしていることを意味しますか?
SWD デバッガーのフラッシュによってCAN回復できますか?
MDM-AP を読み取るための Segger J-Link プローブまたは Lauterbach デバッガーをお持ちですか?残念ながら、Pemicro ではそれが不可能です。
デバイスがロックされる可能性があるまれなシナリオがあります。このThreadを確認してください:
https://community.nxp.com/t5/S32K/Unbricking-S32K146/mp/937227
確認するにはMDM-APを読み取る必要があります。
残念ながら、フラッシュ用の JLink または PE Micro はありません。
デバッグにはS32DS OpenSDAを使用します。
以下はAN12130から引用したものです。
プログラム パーティション コマンド (PGMPART) を起動するときは、CSEc キー サイズを必ず 0 以外の値に割り当ててください。
• CSEc キー(少なくとも MASTER_ECU_KEY)をプログラムします。
• CMD_DBG_CHAL および CMD_DBG_AUTH コマンドを発行してキーを消去します。CMD_DBG_AUTHコマンドは、
データ IFR によりパーティション コードが消去され、大量消去が再び機能するようになります。
いずれかの CSEc キーが「書き込み保護」されている場合、上記の手順は機能せず、大量消去を開始できません。
質問: 別のアプリケーションをフラッシュしたとき、最初の試行で正常にフラッシュされました。
上記のシーケンスに従わない場合、次回のリセット時に、新しいアプリケーションが連続してリセットされる可能性がありますか?これは正しいですか?
OpenSDA も Pemicro のものです。
通常、CSEc が有効になっていても、一部のキーが書き込み保護されている場合でも、OpenSDA によって新しいアプリケーションをプログラムすることは可能です。これは、一括消去ではなく、フラッシュ ブロックをブロックごとに消去するためです。AN12130 では次のような問題について言及しているということです。
SO、これらはむしろ、プログラミング中に予期しないリセットなど、何か問題が発生した場合に発生する問題です。
残念ながら、このような状態を確認する唯一の方法は、前述の MDM_AP レジスタを読み取ることです。そうすれば、デバイスが永続的にロックされているかどうかがわかります。しかし、レジスタは OpenSDA では読み取ることができません。
よろしくお願いいたします。
ルーカス