こんにちは、
iMX93 のすべてのコアで RTOS を実行したいと考えています。それは可能ですか?
Zephyr の Web サイトを見ると、FRDM-IMX93 ボードの M33 コアで Zephyr を実行するプロジェクトがあるようです。また、A55 コアで Zephyr を実行するプロジェクトもあります。
しかし、両方実行することはできますか?両方の A55 プロセッサで別々の Zephyr プロジェクトを実行できますか?
チップの初期化はどのように機能しますか。クロックやメモリコントローラの初期化のようなものですか?誰がそんなことをするのでしょうか?
不可能な場合は、MCUXPresso を使用して M33 コア上で RTOS を実行し、チップを初期化することはできますか?両方の A55 コアに Zephyr を使用しますか?
すべてのコアで RTOS を実行する方法は何ですか?
こんにちは@simmania
2x A55 で実行される 2 つの Zephyr プロジェクトの場合、これはサポートされません。サポートされているフレームワークは、Linux を実行する A55 --> Jailhouse --> Zephyr を実行するその他の A55 であるため、Jailhouse がハードウェアのアイソレータを管理する必要があります。
不可能な場合は、MCUXPresso を使用して M33 コア上で RTOS を実行し、チップを初期化することはできますか?両方の A55 コアに Zephyr を使用しますか?
--> i.MX93は、ブートROMからM33を起動する低消費電力ブートをサポートしています。目的を達成するには、SDKのコードを大幅に書き換える必要があります。根本的な問題は、DDRを誰が初期化するかです。ドキュメントによると、U-Bootを維持するのが最適な選択です。U-BootはM33とA55プロセッサの両方でZephyrを同時にロードできるためです。
https://docs.zephyrproject.org/latest/boards/nxp/imx93_evk/doc/index.html
よろしくお願いします、
志明
NXPの社員によると、銛を使えば可能だという。
NXPのテクニカルサポートは、それは不可能だと言っています。
非常に紛らわしい。
iMX93のAコアとmコアの両方がZephyrリリースをサポートしています。ZephyrランディングページにアクセスしてMPU Zephyr使用ガイドを入手してください。Aコアとmコアの両方でZephyrを同時に実行したい場合は、NXPのHarpoonリリースを探してください。
https://www.nxp.com/design/design-center/software/embedded-software/zephyr-os-for-edge-connected-dev...
Harpoonのドキュメントで、以下の記述を見つけました。
Harpoonは、Linuxディストリビューション上で並列動作する1つ(または複数)のCortex-Aコア上で動作するRTOS上で、リアルタイム処理能力が要求されるアプリケーションを開発するための環境を提供し、64ビットArmアーキテクチャを活用して高いパフォーマンスを実現します。
つまり、一部のコアではまだLinuxが必要なのです。つまり、iMX93の全コアでZephyrを実行することは不可能のようだ。
コアユーザーガイドはこちら
UG10199:NXP MPU Cortex-Aコア Zephyrユーザーガイド | NXPセミコンダクターズ
Zephyrのウェブページには、すでに93 Aコアとmコアのサポートについて記載されています。
i.MX93 EVK — Zephyrプロジェクトドキュメント
銛ユーザーガイド
ご回答ありがとうございます。
しかし、私たちはまだiMX93を使った開発を行っておらず、私たちにとってはまだ明確な答えが出ていません。
私たちは現在、新しいプロジェクトで使用するハードウェアを選定しているところです。今私たちが知りたいのは、Linuxを必要とせずにZephyrをすべてのコアで実行できるかどうかだけです。
@simmania 1 つの A コアで Harpoon を実行し、別の A コアで Zephyr を実行し、mcore で Zephyr を実行することもできます。あるいは、A コアでネイティブ Zephyr を実行し、mcore Zephyr を実行する BootROM を使用することもできます。
プログラム flash.bin を UUU を使用して SD/eMMC に書き込む — MCUXpresso SDK ドキュメントを参照してください。
ステップ4でzephyr.binをimx-mkimage/i.MX9のm33_image.binにコピーしてフラッシュbinを作成します
対応するLinux BSPリリースからブートイメージとimx-mkimageソースリポジトリを入手してください。imx-mkimage/i.MX9に配置する必要のあるブートイメージは以下のとおりです。
- u-boot-imx93evk.bin-sd (rename to u-boot.bin)
- u-boot-spl.bin-imx93evk-sd (rename to u-boot-spl.bin)
- bl31-imx93.bin (rename to bl31.bin)
- mx93a0-ahab-container.img
- lpddr4_dmem_1d_v202201.bin
- lpddr4_dmem_2d_v202201.bin
- lpddr4_imem_1d_v202201.bin
- lpddr4_imem_2d_v202201.bin
リアルタイムエッジソフトウェアユーザーガイドの第3.3章「柔軟なリアルタイムシステム」を参照してください。
表30は、i.MX 93プラットフォーム上で実行可能なすべてのAMPシステムを示しています。
また、 hetogeneous-multicore は、これらの可能なすべての AMP システムを実行するためのハローワールドの例を提供します。たとえば、i.MX 93 は構築でき、Realtime Edge も次の事前構築済みバイナリ イメージを提供します。
i.MX93の各Cortex-Aコアで2つのZephyrを実行するための重要な技術的ポイント:
1. リソースの割り当て
第3.3.2.2章の技術的なポイントを参照し、リソースの競合を避けるために、これら2つのZephyrインスタンスには異なるUARTとRAMメモリを使用してください。
heterogeneous-multicoreを使用せずに Zephyr のサンプルを構築することもできますが、リソース割り当ての方法についてはheterogeneous-multicoreを参照することができます。
2. 起動方法
現在、ubootコマンドを使用してこれら2つのZephyrインストールを起動できます。最初のZephyrは「cpu release」コマンドを使用して起動し、次に「go」コマンドを使用して起動します。詳細については、ユーザーガイドを参照してください。
また、Real-time Edgeで提供されるCortex-Aコアの統合ライフマネジメントをサポートするには、TF-A、U-BootなどのReal-time Edgeリポジトリを使用する必要があります。
そして、次回のRealtime Edgeリリース(7月リリース予定)では、「高速起動」という新機能が提供されます。この新機能により、TF-Aはこれら2つのZephyrインスタンスを1秒未満で起動できるようになります。
この件に関して他に何かお手伝いが必要な場合は、遠慮なくお知らせください。ありがとうございます。
それは素晴らしいですね!
銛を使う?しかし、Harpoonのドキュメントにはこう書かれている。
「システムはLinux上で起動し、Jailhouseハイパーバイザがハードウェアを分割して、LinuxとゲストRTOSを並行して実行します。」
私たちは、LinuxなしでZephyrがすべてのコアで動作することを望んでいます。
答えはイエスですが、これ以上の詳細情報は提供できません。さらに質問がある場合は、 @Jiafei_Pan までお問い合わせください。
同時に2つのZephyrアプリケーションを実行することについて話しているのですか、それともSMPを使用して両方のコアをスケジューリングに利用できるようにしているアプリケーションについて話しているのですか?
2番目のケースには非常に興味があるのですが、うまく動作させることができません。
@Jiafei_Pan さん、Harpoon を導入せずに A コアと mcore 上で 2 つの Zephyr を実行できるようにする方法について何か情報を提供していただけますか。ありがとう!