こんにちは、
ls1028a ベースのカスタム ボードで Secure Debug をテストしたいと思います。今のところ、次の手順を実行しました。
1. fuse_fipと次のinput_fuse_fileを使用してレジスタをヒューズする
λ ./gen_drv_drbgA2 6168745f5f726e6e
#-----------------------------------------------------#
#------- -------- -------- -------#
#------- CST (コード署名ツール) バージョン 2.0 -------#
#------- -------- -------- -------#
#-----------------------------------------------------#
ハミングコード後のDRV[63:0]は次のようになります。
6168745f5f726e6e
名前 | ビット | 値
_______ __|__ __________ __|__ __________
ドライブ 0 | 63 - 32 | 6168745f
ドライブ 1 | 31 - 0 | 5f726e6e
ブートしてU-Bootシェルから確認することで、それらが正しく融合されていることを確認できます。
ハミングコードエラーなし
0x1e80024 1
01e80024: 00000000 ....
dblev が 1 に設定され、dcvr も融合されています
=> md 0x1e80204 3
01e80204: 00000001 68686868 67676767 ....うぅうぅううう
drvr を 1 に設定
=> md 0x1e80210 2
01e80210: ffffffff ffffffff ........
しかし、接続できません。コード ウォリアー (バージョン: 11.5.12;) で試してみると、ビルドID: 221209)、ターゲット接続構成で「セキュアデバッグキー:」を設定し、そこにキー「0x6e6e725f5f746861」(逆エンディアン)を指定して検査しようとすると、情報でエラーが発生しました。
[CCS: マルチコア動作中のサブコアエラー]
私はSecure_boot.pptxプレゼンテーション(リンク: https://community.nxp.com/t5/Layerscape-Knowledge-Base/Secure-boot-Fuse-Provisioning-Secure-debug/ta... )に従ってCCSからテストしようとしましたが、次のようになりました。
(ビン)54%すべて削除
(bin) 55 % config cc cwtap:192.168.0.32
(ビン)56%ccを表示
0: コードウォリアーTAP (cwtap:192.168.0.32)CC ソフトウェア バージョン{0.0}
(ビン)57%
(bin) 57 % ccs::config_chain {ls1028a dap}
SAP2: セキュアデバッグ違反
(bin) 58 % ccs::get_config_chain を表示
チェーン位置0: LS1028A
チェーンポジション1: DAP
チェーン位置2: SAP2
(ビン)59%
(bin) 59 % ccs::config_chain {ls1028a dap sap2}
LS1028A: std::bad_alloc
(bin) 60 % ccs::config_chain {ls1028a dap}
SAP2: セキュアデバッグ違反
(bin) 61 % ccs::get_config_chain を表示
チェーン位置0: LS1028A
チェーンポジション1: DAP
チェーン位置2: SAP2
(bin) 62 % ディスプレイ ccs::read_reg 0 sdcr 1 8
SAP2 エラー - SAP_STATUS を読み取ります
SAP2 エラーとは何ですか?それに関していかなる情報も見つけることができません。
何か間違ったことをしているのでしょうか?
他に試せることはありますか?あるいは、チャレンジ/レスポンス手順は ls1028a では実行できないのでしょうか?現時点では、JTAG を閉じたように動作しますが、input_fuse_file で使用される IIUC 構成では、通知なしで条件付きで閉じるように設定する必要があります。また、U-Boot シェルから読み取られたレジスタも同じ情報を伝えます。
@LFGP私はhttps://www.nxp.com/part/LS1027AXE7NQAを使用していますSO、そこには E という文字があります。
@LFGP
私の記憶では、部品番号に E が付いている SoC は、セキュリティがオンになっていることを意味しますか?明日確認しますが、セキュア ブート手順を実行できるため、E が搭載されているはずだとほぼ確信しています。
デバッグレベルに関しては..元の投稿で書きましたが、私は現在レベル001です。
# 001 -> 通知なしで、チャレンジレスポンスを介して条件付きで開きます。
以下は U-Boot シェルからの出力です。
=> md 0x1e80204 3
01e80204: 00000001 68686868 67676767 ....うぅうぅううう
したがって、0x1e80204 は 00000001 -> DB_LVL は 001 に設定されます。
@LFGP他に何が間違っているのでしょうか?これをさらにデバッグするにはどうすればいいでしょうか?
親愛なる@tomzy_0様、
デバイスの部品番号命名法に文字 E が含まれていることを確認してください。
一方、「デバッグレベル」レジスタが閉じられていないことを確認してください。以下を参照してください。
--------------------------------------------------
# デバッグ レベルをバイナリ形式で指定します。[オプション]
# 000 -> 完全にオープン: デバッグ ポータルは無条件に有効になります。
# 001 -> 通知なしで、チャレンジレスポンスを介して条件付きで開きます。
# 01x -> 通知付きでチャレンジレスポンス経由で条件付きで開きます。
# 1xx -> クローズしました。すべてのデバッグ ポータルが無効になっています。
DBG_LVL=
---------------------------------------------------
よろしくお願いいたします
LFGP
@LFGP素早い返信ありがとうございます。残念ながら、あなたが言及したスレッドで提供されている手順にすでに従いました。私の投稿でリンクしたプレゼンテーションにも同じ手順が書かれていました。このようなコマンドを実行した結果も投稿しました。返される印刷エラー ログで DCV を CCS として読み取ることもできません。
@yipingwangこんにちは。直接言及して申し訳ありませんが、Threadに返信したのはあなただとわかりました。私が間違っていなければ、セキュア ブートのプレゼンテーションの作成も担当されていましたね。
お手伝いいただけますか?プレゼンテーションと私のケースの違いは、私が ls1028a を使用していることです。
チェーンは異なる構成にする必要があります ({ls1028a dap/sap2} と {ls1043a dap sap2})。しかし、これが本当に問題であるかどうかを判断するのは困難です。CCS ドキュメントというものは存在しないと思います。これがなければ、さらにデバッグを行うことさえ困難です。
質問の一つに戻ります。セキュアデバッグが動作するために追加の条件が必要ですか?ITSは設定されていますか?SB_ENだけで十分でしょうか?RCWの他のビットを設定する必要があるでしょうか?
親愛なる@tomzy_0様、
セキュア デバッグが機能するための追加条件はありますか?セキュアブートで起動する必要がありますか?何らかの SECMON 状態にありますか?
@LFGP
こんにちは、返信が遅くなって申し訳ありません。以下はU-Bootシェルからの出力です。
「`」
=> md 0x1e90014 1
01e90014: 80002900 .)..
「`」
つまり、SecMonの状態は「チェック」に設定されます。OTPMK_ZEROは0です。OTPMK_SYNDROMまたはPEが何なのか分かりません。
「`」
=> md 0x1ee0204 1
01ee0204: 00000000 ....
「`」
SCRATCHRW2 を 0 に設定することで、エラーは発生しません。ちなみに、ハミング符号もゼロなので、すべて問題ないはずです。
「`」
=> md 0x1e80024
01e80024: 00000000 ....
「`」
セキュアモニターは別の状態であるべきでしょうか?