添付されているのは、PROFILE_MEDIUM と ISOLATION_LEVEL=2 で TF-M を有効にした後に GPIO および RTC の障害を示す、シンプルな VSCode / NXP MCUXpresso Zephyr プロジェクトの zip です。
このプロジェクトには、単純なオーバーレイ MCXN947 オーバーレイ ファイル、単純な prj.conf ファイル、およびいくつかの単純な c ファイルが含まれています。プロジェクトが起動すると、zephyr はすでに TF-M を設定しています。起動時に、プロジェクトはいくつかの GPIO を切り替えようとします。コードは動作しているようで、エラーは発生していませんが、ロジック アナライザーではピンがトグルしていないことが示されています。その後、RTC からの時刻とともにいくつかのコンソール メッセージが出力されます。時間は正しく進みますが、ボードがリセットされると、時間は失われ、再びゼロから始まります。RTC はリセットしても存続しませんでした。
TF-M 構成を削除し、プロジェクトを単純な Zephyr 非 TF-M プロジェクトに変更すると、GPIO と RTC は期待どおりに動作します。フラッシュおよびデバッグのプロセスも期待どおりに動作します。
AHBSC コントローラーが適切に構成されておらず、GPIO または RTC が非セキュア コードで動作できないというのが私の仮説です。
重大度の低いもう 1 つの問題は、launch.json を構成して main.c やその他の安全でないコードを適切にフラッシュしてデバッグできないことです。
私は最新の Zephyr バージョンである Zephyr 4.3.99 を使用しています。VSCode と MCUXpresso はどちらも最新です。
追加ファイルは以下にあります。プロジェクトを送信する方法があればお知らせください。
元の投稿にプロジェクトの zip ファイルを添付していましたが、削除されたようです。もう一度試してみます。
いいえ、zip はサポートされていません。生のソースファイルを添付してみます。それらを活用して独自のプロジェクトを作成することができます。ファイルの制限が 5 つあるため、2 回の返信で送信するようにします。
ご覧いただきありがとうございます。この問題は私にとっては致命的であり、他の人にとって大きな問題になる可能性があると思います。
こんにちは@ClarkS
コードを共有してもらえますか?
BR
ハリー
こんにちは@ClarkS
詳しくご説明いただきありがとうございます。
」
## 既知の調査結果
1. **AHBSC 読み取り時の BusFault**: 非セキュア コードが AHBSC コントローラ レジスタを読み取ろうとすると、直ちに BusFault (BFAR: 0x400AC1D0) が発生します。
- これは次のことを証明します: ISOLATION_LEVEL=2では、NSはペリフェラル アクセス検証から完全にロックアウトされます
- AHBSCコントローラ自体は安全に保護されたメモリ空間にあります
2. **GPIOはまだ機能しない**: AHBSC構成がセキュアワールド(検証できない)で行われている場合でも、NS GPIOは機能しないままです。
」
MCX Nx4xリファレンスマニュアル73.1.2によると
セキュリティに関する考慮事項
各 GPIO モジュールは、2 つのモジュール スロット (たとえば、GPIO0 と GPIO0_alias) を使用するようにインスタンス化されます。
セキュア AHB コントローラでは、1 つのスロットをセキュア アクセス用に構成し、もう 1 つのスロットを非セキュア アクセス用に構成できます。
GPIOモジュールは、ピンごとにセキュア/非セキュアおよび特権/非特権アクセスを構成するために使用できるアクセス保護を実装します。
以下のリンクが役に立つと思います。
NXP MCXN947 CPU1 が GPIO を制御できない · 問題 #88521 · zephyrproject-rtos/zephyr
NXP MCXN947 CPU1 が GPIO を制御できない · 問題 #88521 · zephyrproject-rtos/zephyr
MCXN947はスレーブコア(CPU1)のGPIOを制御できませんでした
BR
ハリー
私はこれに取り組み続けていますが、成功していません。より詳しい情報とさらなるサポートのリクエストを記載した返信を準備しています。明日投稿します。
ZephyrをTF-Mを実装するように設定した後も、GPIOが動作しません。TF-Mを追加してblinkyアプリを改造しようと試みましたが、そうするとLEDが点滅しなくなりました。
TF-Mを有効にするだけの、点滅サンプルアプリの修正版を提供してください。理想的には、GPIOを有効にするために、AHBSC、SYSCON、およびGPIOレジスタを調整する最適な方法を実装する必要があります。
main関数が実行される前にこれらのレジスタを調整するには、target_cfg.cを修正する以外に方法はありませんか?Zephyrリポジトリを修正するのは好きではないので、もっと良い方法があればいいのですが。