MCUXpresso SDK TrusZone デモにペリフェラル初期化コードを追加しても、MCU ペリフェラルに正常にアクセスできないユーザーもいます。たとえば、セキュリティの世界でFlash操作コードを追加すると、 機能FLASH_INIT()を実行した後にプログラムコードがHardFault_Handlerにジャンプし、Flash消去およびFlashプログラム操作の実行も次のように失敗します。
図1
図2
図3
図4
図5
図 2 と図 3 に示すように、プログラム コードがコード リターン VERSION_FLASH_API_TREE->flash_init(config) まで実行されると、自動的に HardFault_Handler にジャンプします。VERSION_FLASH_API_TREEはブートROMの0x1301fe00アドレスにあり、フラッシュ消去APIはアドレス0x1300413bUにあり、フラッシュプログラムAPIはアドレス0x1300419dUにあります(対応するプログラムコードを図6に示します)。上記のアドレスはすべてセキュリティ特権ではありません。
図6
7.5.3.1.2 からユーザーマニュアルのTrustZoneプリセットデータの章では、TrustZone構成を有効にした後、セキュリティエリアコードでROMエリアに正常にアクセスできるようにするために、ユーザーはROMアドレス空間全体のセキュリティレベルをセキュリティ優先度(S-Priv)に設定する必要があります。
図7
以下は、この問題を解決する方法の手順です。このデモは、MCUXpresso SDK のデモhello_world_sに基づいています。
ステップ1:まず、図8に示すように、MCUXpresso IDEと統合されたTEEツールを使用してBoot ROMアドレス領域のセキュリティレベルを設定し、Memory attribution mapウィンドウでBoot-ROM領域をダブルクリックし、左側の対応するセキュリティアクセス構成ウィンドウでセクターのセキュリティレベルを設定します。
図 8
ステップ2: 次に、セキュリティエリアでFlashまたはその他の周辺機器を操作する場合、ユーザーはセキュリティ優先度(S-Priv)に関連する周辺機器のセキュリティレベルを構成する必要があります。
SDK TrustZoneデモでフラッシュを操作する場合、MCUは2つのスレーブペリフェラルを使用するため、ユーザーはセキュリティレベルをS-Privに設定する必要があります。
図 9
ご注意:
上記のセキュリティレベルの設定は、MCUXpresso IDEに統合されたTEEツールを使用して構成できます。設定が完了したら、[Update Code] をクリックして、tzm_config.c の関連コードを自動的に更新しますファイル (図 10 を参照)。
図 10
更新されたコードを以下の図 11 に示します。ブートROMメモリとペリフェラル(FLASH、SYSCTRL)のセキュリティレベル設定が変更されたことは明らかです。TEE ツールを使用しない場合は、tzm_config.c を手動で変更して、同じセキュリティ オプションを設定することもできます。
図 11
サードパーティツールのユーザー:
多くのユーザーはKeilやIARなどのサードパーティ開発ツールの使用に慣れていますが、これらのIDEはTEEツールを統合していないため、ユーザーはTrusZoneの関連領域と周辺機器のセキュリティレベルを変更するときに、ユーザーマニュアルの関連レジスタの構成要件を確認し、tzm_config.cの関連コードを更新する必要がありますファイル (図 11 と同様) を使用して、関連する構成を完了します。また、NXPはMCU関連の設定機能を統合したMCUXpresso Config Toolsをリリースしました。ユーザーは、このツールをダウンロードしてインストールし、構成とコードの更新を実行できます。ダウンロードリンクは次のとおりです。
https://www.nxp.com/design/software/development-software/mcuxpresso-software-and ツール/MCUXPRESSO-config-tools-pins-clocks-peripherals:MCUXpresso-Config-Tools
MCUXpresso Configツールの紹介
ツールをインストールしたら、構成ツールを開き、[ SDK の例または hello world プロジェクトに基づいて新しい構成を作成する] を選択し、[次へ] をクリックします (図 12 を参照)。
図 12
[開発の開始]ウィンドウで、以下の手順に従ってプロジェクトを生成します。図 13 に示すように。
図 13
tzm_config.cの後ファイルが更新されたら、KEILまたはIARのサードパーティ開発ツールの対応するフォルダにコピーまたはインポートして、通常どおり使用できます。