BL2でセキュアブートが失敗しているのは、SEC/CAAMが初期化されていないためと思われます。コードを詳しく調べてみると、sec_init は直接呼び出されず、その前に config 関数が呼び出されているようで、そのためグローバル変数に SEC ブロックのアドレスに対応する定義済みの定数が代入されないようです。つまり、NXP_CAAM_ADDRの値のことです。その値をハードコーディングすると、処理は少し進むのですが、ジョブリングをフラッシュ/リセットできないというエラーが発生します。
電源投入後、SRKHミラーレジスタをロードしてCPUを解放する前に、DCFG_CCSR_DEVDISR1レジスタを確認すると、ビット22(SEC)が1に設定されていることがわかります。リセットに関するドキュメントによると、このレジスタはすべて0になっているはずです。ブートプロセスのこんなに早い段階で、この値がどこで設定されているのでしょうか?pblコマンドで何か操作する必要はありますか?RCW(ワシントン州法)に何か誤りがあるのでしょうか?低電力セキュリティレジスタで電源障害が検出されていることは確認できますが、構成レジスタでは低電力改ざんは無視/対処しないよう指示されていることも確認できます。
こんにちは、
NXP_CAAM_ADDRハードコーディングしてアドレスエラーを回避できたとしても、ジョブリングのフラッシュ/リセットエラーが発生する場合は、通常、CAAMハードウェアブロックにクロック信号が供給されていないか、遷移状態のままになっているか、セキュリティ違反によってブロックされていることを意味します。sec_init設定関数より先に呼び出されない理由は、おそらくbl2_main.cの実行順序によるものです。または、お使いのプラットフォーム固有のplat_bl2_el3_setup.c参照してください。 bl2_el3_early_platform_setup 内で plat_ls_sec_init() (またはご使用の SoC の同等の関数) が呼び出されていることを確認してください。NXP_CAAM_ADDRが設定されない場合は、プラットフォームのplat_get_caam_address()関数が 0 を返しているか、データセグメントが BL2 変換テーブルに正しくマッピングされていないかを確認してください。よろしくお願いします。
どなたか、私に確認していただけると助かります。
TF-A ドライバ / nxp/dcfg/dcfg.cセキュリティが有効になっているかどうかを確認する計算式を見つけました。これは、SVR_SEC_MASKとレジスタ0x1ee00a4の値(読み取り専用レジスタ)との間でビットごとの&演算を実行します。フィールドを正しく読み取っているとすれば、ビット16~23は、それがls1043かls1023か、そしてSECハードウェアが有効になっているかどうかを示しているはずです。0x00000001 のビットに値があることがわかります。つまり、このチップではSECブロックが無効になっているということですよね?回路図を参照して部品番号を確認したところ、LS1043ASN7MNLBという番号が分かりました。NXPのサイトで調べてみると、SECは無効になっていると表示されました。これがセキュアブートの問題の原因でしょうか?このチップでSECを有効にすることは可能ですか?それともNXPから出荷された時点で設定は変更できないのでしょうか?別のチップを検討する必要があるのでしょうか?それともSECなしでセキュアブートは可能でしょうか?
AIによるコピー&ペースト機能?その方法を採用するなら、エージェントをさらに調整する必要がある。SoCは仕様が定められており、コードベースを認識していれば、NXP_CAAM_ADDRがヘッダーファイルで静的に定義されており、初期値として設定されていないことを認識しているはずです。