こんにちは、
私は i.MX 943 EVKボードを使っており、Linux上のCortex-A55 SMPとZephyrのCortex-M33sの間でネットワークを共有したいと考えています。
そこで興味を持ちました。i.MX Linux ユーザーズガイド(https://www.nxp.com/docs/en/user-guide/UG10163.pdf - セクション11.6.2)からのENETC共有ユースCASEです。この例では、Linux側でプロキシPFドライバーを有効にするためにRPMsg接続を設定しました。RPMsg接続のリソーステーブルのアドレスは0x208a0000で、仮想キューは0x20800000にあります。これらのアドレス([0x20800000~0x208A0FFF])はNETC OCRAM内にあります。この領域はCortex-M33 Core1(M33S)とAP(非セキュアLinux)間のRPMSG共有メモリとして使用されます。
この例では、mx94evknetc.cfgのシステムマネージャー設定ファイルを使い、Cortex-M33がネットワークにアクセスできるようにしています。この設定ファイルの関係で、A55とM33は起動時に起動する必要があるので、ターゲットのimx-mkimage flash_allを使っています。
問題は、flash_a55ターゲット(mx94rte.cfgシステムマネージャーの設定ファイル)を使うと、Linux/U-BootとZephyrはそれらのアドレスにアクセスできますが、flash_allに切り替えると(システムマネージャーの設定ファイルに関係なく)、Linux/U-BootもZephyrもそれらのアドレスにアクセスできません。Zephyrはこれらのアドレスでバスフォールトが発生します。しかし、Zephyrの代わりにシンプルなhello_worldなどのFreeRTOSプログラムを使うと、Cortex-M33sやLinux/U-Bootがそれらのアドレスにアクセスできます。
また、mx94rte.cfgシステムマネージャーファイルでflash_allターゲットを使うと、Linux/U-BootもZephyrもそのアドレスにアクセスできませんが、Cortex-M33を停止してFreeRTOS hello_worldを読み込んで再起動すると、Linux/U-BootはNETC OCRAMにアクセスできます。
ちなみに、Zephyrはflash_M33sターゲットにアクセスできません。
そこで、FreeRTOSが初期化時にZephyrができないことを知りたいです。つまり、Linux/U-BootとZephyr間でNETC OCRAMにアクセスしやすくするために、その点はflash_allターゲットで。
ゼファーバージョン:4.3
Linuxバージョン(リアルタイムエッジ版):6.18.2
こんにちは、 @Remantj さん。
お元気でお過ごしのことと思います。
ぜひnxp-zephyrのドキュメントをご覧ください:
System-Managerで説明されている変更があなたの場合に効果があったか教えてください。
よろしくお願いいたします。
サラス。
こんにちは、 @Manuel_Salas さん、
ご回答ありがとうございます。
あなたが指摘したドキュメントを見て、ドキュメントで行われたのと同じ方法でシステムマネージャにパッチを当ててみましたが、何も変わりませんでした。
これは予想通りのようです。なぜなら、私の問題の違いはFreeRTOSのファームウェアとZephyrのファームウェアの違いだからです。System マネージャの設定ファイルは2つのケースで同じままです。
FreeRTOSがZephyrと違うNETC OCRAMについて何をしているのかはわかりませんが、Zephyrで同じことができる方法について何かアイデアはありますか?
よろしくお願いします