i.MX8MQ の Jailhouse ハイパーバイザーの Inmate セル作成に関する問題 拝啓、 NXP i.MX 8MQ EVK ボードの Jailhouse 経由でカスタム (E-call) Inmate Linux デモ セルを作成しようとしています。 実行したすべての手順は、添付の「NXP_Jailhouse_Ticket.txt」に追加されています。ファイル。 直面している問題:- コンパイルに問題が発生しています。 linux-inmate-demo.c をコンパイルする方法ファイルと.oを生成するおよび.cellファイル? 適切な.bbを作成する方法linux-inmate-demo.c をコンパイルするためのファイルファイルと.oを生成するおよび.cellファイルをコピーして最終画像に追加しますか? カスタム刑務所の囚人セルを作成するためのアプリケーションノートをご提供ください または 同じ解決策が記載されている以前の NXP コミュニティ チケットへのリンクはありますか? また、上記の手順について訂正し、解決策を提供してください。 i.MX8ULP Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 受刑者がインターネットにアクセスできるようにネットワークを設定する方法については、以下を参照してください。セットで USB ネットまたは eth ネットを使用するように更新する必要があります。
ネットワークを使用して2台目のLinuxのネットワークを設定する方法
Linuxが最初に起動した後
sysctl -w net.ipv4.ip_forward=1 sysctl -p /etc/sysctl.conf
ルートセルが有効になった後
iptables -A 転送 -i eth1 -j 受け入れる
iptables -A FORWARD -o eth1 -j ACCEPT iptables -t nat -A ポストルーティング -o eth0 -j マスカレード
2回目のLinux起動後
ifconfig eth1または2 192.168.1.4最初のLinuxルートセル
ifconfig eth0 192.168.1.52番目のLinux囚人セル
「ip route 192.168.1.4 経由でデフォルトを追加2番目のLinux用の「dev eth0」 「ipルート 10.193.100.0/24 を追加192.168.1.4経由2番目のLinux用の「dev eth0」
これで、「mount -t nfs 10.193.108.xx:/ホーム/xxx/nfs」と実行できるようになります。/分"
手順3と4で、ネットワークに応じて10.193.xx.xxを自分のものに更新します。
よろしくお願いします。
彭。 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ こんにちは、ペンさん。 サポートありがとうございます。ルート セルから受刑者セルに 'scp' をコピーできるようになりました。 基本的に、私たちは Inmate セル側で MQTT を使用して E-call アプリケーションを維持したいと考えています。 ルートから受刑者セルまで読み取り/書き込み共有メモリを共有できます。また、お客様のご提案どおりに、ルート/受刑者セルに静的 IP を付与することもできます。 ここで、ルート セルから受信したデータをクラウドに送信するために、受刑者セルにインターネット接続が必要になります。 Quectel EC25 モジュールを USB ポート経由で NXP i.MX8MQ ボードにコネクテッドしました。 ルートセルデータのIFCONFIG: 」 ifconfig eth0: flags=-28669 mtu 1500 イーサ 00:04:9f:05:a5:9c txqueuelen 1000 (イーサネット) RXパケット 0 バイト 0 (0.0 B) RXエラー 0 ドロップ 0 オーバーラン 0 フレーム 0 送信パケット 0 バイト 0 (0.0 B) 送信エラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0 eth1: flags=-28605 mtu 16384 inet 192.168.0.3 ネットマスク 255.255.255.0ブロードキャスト 192.168.0.255 inet6 fe80::88f0:a7ff:fe40:2407 プレフィックス長 64 スコープID 0x20 ether 8a:f0:a7:40:24:07 txqueuelen 1000 (イーサネット) RXパケット 41 バイト 7030 (6.8 KiB) RXエラー 0 ドロップ 0 オーバーラン 0 フレーム 0 送信パケット 71 バイト 18812 (18.3 KiB) 送信エラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0 lo: flags=73 mtu 65536 inet 127.0.0.1 ネットマスク 255.0.0.0 inet6 ::1 プレフィックス長 128 スコープID 0x10 loop txqueuelen 1000 (ローカルループバック) RXパケット 103 バイト 9268 (9.0 KiB) RXエラー 0 ドロップ 0 オーバーラン 0 フレーム 0 送信パケット 103 バイト 9268 (9.0 KiB) 送信エラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0 usb0: flags=-28605 mtu 1500 inet 192.168.225.39ネットマスク 255.255.255.0ブロードキャスト 192.168.225.255 inet6 2401:4900:4bb5:e7a7:609f:c3ff:fe2c:903b プレフィックス長 64 スコープID 0x0 inet6 fe80::609f:c3ff:fe2c:903b プレフィックス長 64 スコープID 0x20 ether 62:9f:c3:2c:90:3b txqueuelen 1000 (イーサネット) RXパケット 84バイト 7614 (7.4 KiB) RXエラー 0 ドロップ 0 オーバーラン 0 フレーム 0 送信パケット 117 バイト 13860 (13.5 KiB) 送信エラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0 「 ご覧のとおり、ROOT セル側でインターネット接続が確立されています。 以下はPINGコマンドの出力です 」 root@imx8mqevk:/ホーム ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) バイトのデータ。 8.8.8.8 からの 64 バイト: icmp_seq=1 ttl=114 time=193 ms 8.8.8.8 からの 64 バイト: icmp_seq=2 ttl=114 time=68.9MS 8.8.8.8 からの 64 バイト: icmp_seq=3 ttl=114 time=62.8MS 8.8.8.8 からの 64 バイト: icmp_seq=4 ttl=114 time=68.5 ms 8.8.8.8 からの 64 バイト: icmp_seq=5 ttl=114 time=66.5 ms 8.8.8.8 からの 64 バイト: icmp_seq=6 ttl=114 time=78.6 ms 8.8.8.8 からの 64 バイト: icmp_seq=7 ttl=114 time=71.0MS 」 現在、私は Inmate セルでインターネットの問題に直面しています。IFCONFIG ログは以下のとおりです。 」 root@imx8mqevk:~ ifconfig eth0 リンクカプセル化:イーサネット HWaddr 6E:58:98:59:01:A0 inetアドレス:192.168.0.4放送:192.168.0.255マスク:255.255.255.0 inet6 アドレス: fe80::6c58:98ff:fe59:1a0/64 スコープ:リンク アップブロードキャスト 実行中 マルチキャスト MTU:16384 メトリック:1 RXパケット:184 エラー:0 ドロップ:0 オーバーラン:0 フレーム:0 送信パケット:65 エラー:0 ドロップ:0 オーバーラン:0 キャリア:0 衝突:0 トランザクション数:1000 RX バイト:78814 (76.9 KiB) TX バイト:14002 (13.6 KiB) lo リンクカプセル化:ローカルループバック inetアドレス:127.0.0.1マスク:255.0.0.0 inet6 アドレス: ::1/128 スコープ:ホスト アップループバック実行中 MTU:65536 メトリック:1 RXパケット:22 エラー:0 ドロップ:0 オーバーラン:0 フレーム:0 送信パケット:22 エラー:0 ドロップ:0 オーバーラン:0 キャリア:0 衝突:0 トランザクション数:1000 RX バイト:3897 (3.8 KiB) TX バイト:3897 (3.8 KiB) 」 また、ルートセル側での IP 転送も試しました。 受刑者の独房に外部ネットワークへのアクセスを許可するには: 根細胞内 エコー 1 > /proc/sys/net/ipv4/ip_forward iptables -A FORWARD -i eth1 -o usb0 -j ACCEPT iptables -A FORWARD -i usb0 -o eth1 -j ACCEPT iptables -t nat -A ポストルーティング -o usb0 -j マスカレード 」 上記のコマンドを実行すると、以下のログが出力されます。 」 root@imx8mqevk:/ホーム iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE [ 1869.738194] 監査: タイプ=1325 監査(1755848821.593:11):テーブル=nat ファミリ=2 エントリ=7 op=xt_replace pid=713 comm="iptables" root@imx8mqevk:/ホーム [ 1869.749806] 監査: タイプ=1300 監査(1755848821.593:11):アーチ = c00000b7 syscall = 208 成功 = はい exit = 0 a0 = 4 a1 = 0 a2 = 40 a3 = aaaafd66a400 items = 0 ppid = 607 pid = 713 auid = 4294967295 uid = 0 gid = 0 euid = 0 suid = 0 fsuid = 0 egid = 0 sgid = 0 fsgid=0 tty=ttymxc0 ses=4294967295 comm="iptables" exe="/usr/sbin/xtables-legacy-multi" key=(null) [ 1869.779649] 監査: タイプ=1327 監査(1755848821.593:11):proctitle=69707461626C6573002D74006E6174002D4100504F5354524F5554494E47002D6F0075736230002D6A004D415351554552414445" 」 ルートセルからDmesgログも出力します 」 [ 71.141601]刑務所セル「ecall-linux-inmate-demo」を作成しました [ 77.822386]IPv6: ADDRCONF(NETDEV_CHANGE): eth1: リンクが準備完了になりました [ 206.451703]監査: タイプ=1325 監査(1755847158.198:4):テーブル=nat ファミリ=2 エントリ=0 op=xt_register pid=651 comm="iptables" [ 206.463131]監査: タイプ=1300 監査(1755847158.198:4):Arch=c00000b7 syscall=209 success=yes exit=0 a0=4 a1=0 a2=40 a3=ffffe78d01c0 items=0 ppid=607 pid=651 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttymxc0 ses=4294967295 comm="iptables" exe="/usr/sbin/xtables-legacy-multi" key=(null) [ 206.493176]監査: タイプ=1327 監査(1755847158.198:4):proctitle=69707461626C6573002D74006E6174002D4100504F5354524F5554494E47002D6F0065746830002D6A004D415351554552414445 [ 206.508268]監査: タイプ=1325 監査(1755847158.202:5):テーブル=nat ファミリ=2 エントリ=5 op=xt_replace pid=651 comm="iptables" [ 206.519201]監査: タイプ=1300 監査(1755847158.202:5):arch=c00000b7 syscall=208 成功=はい 終了=0 a0=4 a1=0 a2=40 a3=aaaabb51c230 項目=0 ppid=607 pid=651 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttymxc0 ses=4294967295 comm="iptables" exe="/usr/sbin/xtables-legacy-multi" キー=(null) [ 206.547353]監査: タイプ=1327 監査(1755847158.202:5):proctitle=69707461626C6573002D74006E6174002D4100504F5354524F5554494E47002D6F0065746830002D6A004D415351554552414445 [ 217.506636]監査: タイプ=1325 監査(1755847169.257:6):テーブル=nat ファミリ=2 エントリ=6 op=xt_replace pid=657 comm="iptables" [ 217.517791]監査: タイプ=1300 監査(1755847169.257:6):arch=c00000b7 syscall=208 成功=はい 終了=0 a0=4 a1=0 a2=40 a3=aaaaec783230 項目=0 ppid=607 pid=657 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttymxc0 ses=4294967295 comm="iptables" exe="/usr/sbin/xtables-legacy-multi" キー=(null) [ 217.547639]監査: タイプ=1327 監査(1755847169.257:6):proctitle=69707461626C6573002D74006E6174002D4100504F5354524F5554494E47002D6F0075736230002D6A004D415351554552414445 [ 294.389911]監査: タイプ=1325 監査(1755847246.146:7):テーブル=フィルター ファミリ=2 エントリ=0 op=xt_register pid=659 comm="iptables" [ 294.401564]監査: タイプ=1300 監査(1755847246.146:7):arch=c00000b7 syscall=209 success=yes exit=0 a0=4 a1=0 a2=40 a3=fffff5707410 items=0 ppid=607 pid=659 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttymxc0 ses=4294967295 comm="iptables" exe="/usr/sbin/xtables-legacy-multi" key=(null) [ 294.431369]監査: タイプ=1327 監査(1755847246.146:7):proctitle=69707461626C6573002D4100464F5257415244002D690065746831002D6F0075736230002D6A00414343455054 [ 294.445250]監査: タイプ=1325 監査(1755847246.150:8):テーブル=フィルター ファミリ=2 エントリ=4 op=xt_replace pid=659 comm="iptables" [ 294.456430]監査: タイプ=1300 監査(1755847246.150:8):Arch=c00000b7 syscall=208 success=yes exit=0 a0=4 a1=0 a2=40 a3=aaaaeb8d3950 items=0 ppid=607 pid=659 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttymxc0 ses=4294967295 comm="iptables" exe="/usr/sbin/xtables-legacy-multi" key=(null) [ 294.484541]監査: タイプ=1327 監査(1755847246.150:8):proctitle=69707461626C6573002D4100464F5257415244002D690065746831002D6F0075736230002D6A00414343455054 [ 314.598783]監査: タイプ=1325 監査(1755847266.267:9):テーブル=フィルター ファミリ=2 エントリ=5 op=xt_replace pid=662 comm="iptables" [ 314.610726]監査: タイプ=1300 監査(1755847266.267:9):Arch=c00000b7 syscall=208 success=yes exit=0 a0=4 a1=0 a2=40 a3=aaaac05eaac0 items=0 ppid=607 pid=662 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=ttymxc0 ses=4294967295 comm="iptables" exe="/usr/sbin/xtables-legacy-multi" key=(null) [ 314.640305]監査: タイプ=1327 監査(1755847266.267:9):proctitle=69707461626C6573002D4100464F5257415244002D690075736230002D6F0065746831002D6A00414343455054 [ 849.488680]監査: タイプ=1006 監査(1755847801.267:10):pid=671 uid=0 old-auid=4294967295 auid=0 tty=(none) old-ses=4294967295 ses=3 res=1 [ 849.501588]監査: タイプ=1300 監査(1755847801.267:10):アーチ = c00000b7 syscall = 64 success = はい exit = 1 a0 = 3 a1 = ffffc0aa76a0 a2 = 1 a3 = ffff83653020 items = 0 ppid = 238 pid = 671 auid = 0 uid = 0 gid = 0 euid = 0 suid = 0 fsuid = 0 egid = 0 sgid = 0 fsgid = 0 tty=(なし) ses=3 comm="crond" exe="/usr/sbin/crond" key=(null) [ 849.527425]監査: タイプ=1327 監査(1755847801.267:10):proctitle=2F7573722F7362696E2F63726F6E64002D6E [ 1869.738194] 監査: タイプ=1325 監査(1755848821.593:11):テーブル=nat ファミリ=2 エントリ=7 op=xt_replace pid=713 comm="iptables" [ 1869.749806] 監査: タイプ=1300 監査(1755848821.593:11):アーチ = c00000b7 syscall = 208 成功 = はい exit = 0 a0 = 4 a1 = 0 a2 = 40 a3 = aaaafd66a400 items = 0 ppid = 607 pid = 713 auid = 4294967295 uid = 0 gid = 0 euid = 0 suid = 0 fsuid = 0 egid = 0 sgid = 0 fsgid=0 tty=ttymxc0 ses=4294967295 comm="iptables" exe="/usr/sbin/xtables-legacy-multi" key=(null) [ 1869.779649] 監査: タイプ=1327 監査(1755848821.593:11):proctitle=69707461626C6573002D74006E6174002D4100504F5354524F5554494E47002D6F0075736230002D6A004D415351554552414445 「 CAN 受刑者の独房における上記のインターネット問題の解決にご協力いただけますか? Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ Linux で「root」または「inmate」を実行すると、セグメント エラーが発生します。
2 つの Linux 間で ivshmem をテストするには、次のようにします。
ルートセル内: ivshmem-demo -d /dev/uio0 -t 2
囚人セル内: ivshmem-demo -d /dev/uio0 -t 0
すると、2 つのセル間の通信が表示されます。
ivshmem-demo のソースコードは imx-jailhouse/tools/demos/ivshmem-demo.c にあります。
受刑者セルにファイルをコピーする方法については、受刑者Linuxが起動した後、
囚人房内: ifconfig eth0 192.168.0.4
ルートセル内: ifconfig eth0 192.168.0.3
次に、scp を使用して、ルートから inmate にファイルをコピーできます。
または、ルート セルで ip forward を構成して、受刑者が外部ネットワークにアクセスできるようにすることもできます。 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ こんにちは、ペンさん。 ご返信ありがとうございます。cell.c をコンパイルできるようになりました。コードと生成された.cellファイル。 「 カスタム ecall-inmate-linux-demo セルが正常に作成され、ecall-inmate-linux-demo ゲストが起動して実行されています。 Linuxホスト root imx8mqevk:~監獄セルリスト ID 名前 状態 割り当てられたCPU 故障したCPU 0 imx8mq 実行中 0-1 1 ecall-inmate-linux-demo が 2-3 で実行中 ecall-inmate-linux-demo ゲスト 「 通信には /dev/uio0 デバイス ノードを使用しています。 いくつかの Python コードを試したところ、ルート セルでの書き込み/送信は成功しました。同時に、Linux デモの囚人セルには何も受信できません。 その後、Cプログラミングコードに移行し、「ivshmem_common.h」を添付しました。'ivshmem_inmate.c','ivshmem_root.c' および Makefile。 バイナリを生成するために以下のコマンドを使用します ソース /opt/fsl-imx-wayland/5.15-kirkstone/environment-setup-armv8a-poky-Linux エクスポート CROSS_COMPILE=aarch64-poky-Linux- KDIR=/ホーム/オートモーティブ/yocto_imx_Linux/build/tmp/work-shared/imx8mqevk/kernel-build-artifacts CC="aarch64-poky-Linux-gcc --sysroot=$SDKTARGETSYSROOT" ARCH=arm64 CROSS_COMPILE=aarch64-poky-Linux- を作成します。 aarch64-poky-Linux-gcc --sysroot=/opt/fsl-imx-wayland/5.15-kirkstone/sysroots/armv8a-poky-Linux -Wall -O2 -o root ivshmem_root.c デスクトップ側では、上記のコマンドを使用して、imx8mq ツール チェーンを使用してコンパイルしました。 生成されたバイナリを Linux inmate デモ セルにコピーします。 ルート セル側へのコピーは成功しましたが、Inmate Linux デモ セルでコピーまたはコンパイルする手順がわかりません。 CAN あなたは私に同じことをする方法を教えていただけますか? NXP ドキュメント「UG10163」、名前「iMX_Linux_user_guide_LF6.12.20_2.0.0」を参照しています。 この Linux デモ インメイト セルを使用するための実用的なサンプル コードとユーザーガイドが必要です。SO、ルート セルからデータ (JSON や文字列/バイナリなどのバンドル データ) を送信し、その逆に Linux インメイト デモ セルからデータを受信します。 ありがとう、 スミット Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ SO私の理解では、コンパイルの問題があるということです。
NXP にはリポジトリがあります: https://github.com/nxp-imx/imx-jailhouse
なぜセル ファイルを自分で構築しようとしているのか理解できません。make を使用するだけで jailhouse とすべてのセル ファイルを構築するのは非常に簡単です。Simense リポジトリを使用している場合でも、ドキュメントには次のように記載されています。
make [KDIR=/path/to/kernel/objects]
そして、すべてを構築するという私の命令:
. /opt/fsl-imx-internal-xwayland/6.12-styhead/environment-setup-armv8a-poky-linux
エクスポート CROSS_COMPILE=aarch64-poky-linux-
CFLAGSの設定を解除する
LDFLAGSを解除します
KDIR=$HOME/linux/linux-lts-nxp を CC="aarch64-poky-linux-gcc --sysroot=$SDKTARGETSYSROOT" に設定し、ARCH=arm64 CROSS_COMPILE=aarch64-poky-linux-
Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 親愛なるPENG様 ご提案ありがとうございます。 まだ問題が続いています。詳細は以下の通りです。 .cell を作成するためのフローファイル (Jailhouse Inmate バイナリ)、SDKs コンパイル コマンド: ツールチェーン環境のセットアップ: ソース /opt/fsl-imx-wayland/5.15-kirkstone/environment-setup-armv8a-poky-linux パス bash: /opt/fsl-imx-wayland/5.15-kirkstone/sysroots/x86_64-pokysdk-Linux/usr/bin:/opt/fsl-imx-wayland/5.15-kirkstone/sysroots/x86_64-pokysdk-Linux/usr/sbin:/opt/fsl-imx-wayland/5.15-kirkstone/sysroots/x86_64-pokysdk-Linux/bin:/opt/fsl-imx-wayland/5.15-kirkstone/sysroots/x86_64-pokysdk-Linux/sbin:/opt/fsl-imx-wayland/5.15-kirkstone/sysroots/x86_64-pokysdk-Linux/usr/bin/../x86 _64-pokysdk-Linux/bin:/opt/fsl-imx-wayland/5.15-kirkstone/sysroots/x86_64-pokysdk-Linux/usr/bin/aarch64-poky-Linux:/opt/fsl-imx-wayland/5.15-kirkstone/sysroots/x86_64-pokysdk-Linux/usr/bin/aarch64-poky-Linux-musl:/ホーム/オートモーティブ/.local/bin:/ホーム/オートモーティブ/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin: そのようなファイルまたはディレクトリはありません aarch64-poky-Linux-gcc -c -I/ホーム/オートモーティブ/jailhouse/hypervisor/include -I/ホーム/オートモーティブ/jailhouse/hypervisor/arch/arm64/include -I/ホーム/オートモーティブ/jailhouse/include -nostdlib -nostartfiles -ffreestanding ecall-inmate-Linux-demo.c -o ecall-inmate-Linux-demo.o 注意: Jailhouse ヘッダー ファイルはツール チェーンの一部ではないSO、Seimens (github バージョン) から Jailhouse フォルダーに別途ダウンロードしました。コンパイルにはヘッダー ファイル inmate-linux-demo.cell を使用しました。.cには変更を加えていないファイル。 テスト目的でデフォルトのものを使用しました。 ステップ1: .oをリンクしてフラットなELFファイルを作成する aarch64-poky-linux-ld \ -Tテキスト=0x0 \ -nostdlib \ -o ecall-inmate-linux-demo.elf \ ecall-inmate-linux-demo.o -Ttext=0x0 は .text を配置しますフラットバイナリレイアウトのアドレス 0x0 のセクション。 -nostdlib は標準 C ライブラリのリンクを防止します (囚人には必要ありません)。 ステップ2: ELFを生のバイナリ.cellに変換する aarch64-poky-linux-objcopy \ -O バイナリ \ ecall-inmate-linux-demo.elf \ ecall-inmate-linux-demo.cell 結果を確認します。 ファイル ecall-inmate-linux-demo.cell 印刷されたメッセージ: ecall-inmate-linux-demo.cell: データ デフォルトの imx8mq.cell と imx8mq-linux-demo.cell を削除しました 'imx8mq.cell と imx8mq-linux-demo.cell' を生成しましたファイルはターゲットフォルダにプッシュされます: '/usr/share/jailhouse/cells' その後、生成されたimx8mq.cellでJailhouseを有効にすると、以下のエラーが発生します。 / jailhouse で /usr/share/jailhouse/cells/imx8mq.cell を有効にする [ 2533.385877] jailhouse: システム構成ではありません JAILHOUSE_ENABLE: 無効な引数 問題を解決するためのガイダンスと、可能であればユーザーガイド/アプリケーションノートまたは Makefile/適切な GCC コマンドを提供してください。 makefile を添付します (上記のすべてのコマンドが含まれています) コンピレーション、 作る aarch64-poky-Linux-gcc -nostdlib -nostartfiles -ffreestanding -I/ホーム/オートモーティブ/jailhouse/hypervisor/include -I/ホーム/オートモーティブ/jailhouse/hypervisor/arch/arm64/include -I/ホーム/オートモーティブ/jailhouse/include -c imx8mq.c-o imx8mq.o aarch64-poky-linux-ld -Ttext=0x0 -nostdlib -o imx8mq.elf imx8mq.o aarch64-poky-Linux-ld:警告: エントリシンボル _start が見つかりません。デフォルトは 00000000000000000 です aarch64-poky-Linux-objcopy -O バイナリ imx8mq.elf imx8mq.cell .elfを生成しました、.cell、.o。 次のコマンドでファイル形式を検証しました: ファイル imx8mq.elf imx8mq.elf:ELF 64 ビット LSB 実行ファイル、ARM aarch64、バージョン 1 (SYSV)、静的リンク、ストリップなし ファイル imx8mq.o imx8mq.o:ELF 64 ビット LSB 再配置可能、ARM aarch64、バージョン 1 (SYSV)、ストリップなし ファイル imx8mq.cell imx8mq.セル:データ サポートありがとうございます。 スミット Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ ところで:
これは間違っている
「バッシュ
PYTHONPATH=/ホーム/オートモーティブ/yocto_imx_Linux/build/tmp/work/x86_64-Linux/jailhouse-native/0.12-r0/image/usr/share/jailhouse/tools をエクスポートします。
エクスポート C_INCLUDE_PATH=/ホーム/オートモーティブ/yocto_imx_Linux/build/tmp/work/x86_64-linux/jailhouse-native/0.12-r0/image/usr/include/jailhouse
/ホーム/オートモーティブ/yocto_imx_Linux/build/tmp/work/x86_64-Linux/jailhouse-native/0.12-r0/image/usr/bin/jailhouse-cell-Linux \
/ホーム/オートモーティブ/yocto_imx_Linux/build/tmp/work/armv8a-poky-Linux/jailhouse-ecall/1.0-r0/ecall-inmate-Linux-demo.c\
-o ecall-inmate-linux-demo.cell
セルは jailhouse-cell-linux ではなく GCC によってコンパイルされます。
Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 私はYoctoについてあまり知識がありません。私のビルド コマンドを共有します:
. /opt/fsl-imx-internal-xwayland/6.12-styhead/environment-setup-armv8a-poky-linux
KDIR=$HOME/linux/linux-lts-nxp CC="aarch64-poky-linux-gcc --sysroot=$SDKTARGETSYSROOT" ARCH=arm64 CROSS_COMPILE=aarch64-poky-linux- V=1 を作成します。
次にセルが構築されます。
5.10も同様のはずです。
コンパイルしたセル ファイルも共有してください。jailhouse-cell-linux がセルでエラーを報告する理由を調べさせてください。
Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 彭凡様 状態テーブル、RW セクション、および入出力セクションに関するご回答で提供された、i.MX 8MQ 上の Jailhouse の IVSHMEM メモリ領域に関する貴重なご指導に感謝いたします。皆様のご提案をセル構成に取り入れましたが、i.MX 8MQ EVK ボード上で Yocto 5.15 Kirkstone (Linux 5.15.71-2.2.0) を使用してカスタム E-Call 受刑者セルを作成しようとすると、依然としてコンパイル エラーが発生します。以下に、問題の詳細な概要、解決に向けた取り組み、および現在の状況を示します。この問題の解決に役立つ具体的な参考資料、アプリケーションノート、その他のガイダンスなどをご提供いただければ幸いです。 問題の概要 私たちは、カスタムE-Call受刑者セル構成(最初は `imx8mq-linux-demo.c` に基づいて、`jailhouse-cell-linux` ツールを使用して、簡略化された `ecall-inmate-linux-demo.c` を使用します。`jailhouse-ecall.bb` の `do_compile` タスク中にコンパイルが失敗します。次のエラーのあるレシピ: 「 エラー: jailhouse-ecall-1.0-r0do_compile: 実行エラー('/ホーム/オートモーティブ/yocto_imx_Linux/build/tmp/work/armv8a-poky-Linux/jailhouse-ecall/1.0-r0/temp/run.do_compile.225085', 1, なし, なし) ログデータは次のとおりです: デバッグ: シェル関数 do_compile を実行しています セル構成ではありません: /ホーム/オートモーティブ/yocto_imx_Linux/build/tmp/work/armv8a-poky-Linux/jailhouse-ecall/1.0-r0/imx8mq-Linux-demo.c 警告: シェル コマンドから終了コード 1 が返されました。 エラー: タスク (/ホーム/オートモーティブ/yocto_imx_linux/sources/meta-ecall/recipes-jailhouse/jailhouse-cells/jailhouse-ecall.bb:do_compile) が終了コード '1' で失敗しました 「 このエラーは、`jailhouse-cell-linux` がセル構成ファイルを有効なものとして認識していないことを示します。解決するために何度も試みましたが、問題は解決しません。 解決に向けた取り組みの詳細 コミュニティからのフィードバックと試行錯誤に基づいて、Yocto レシピ、セル構成、環境にいくつかの更新を加えました。主な取り組みの概要は次のとおりです。 1. 初期設定とエラー: - `jailhouse-ecall.bb` から始めました`imx8mq-linux-demo.c` を使用するそして `jailhouse-native.bb`Siemens Jailhouse フォーク (`git://github.com/siemens/jailhouse.git;branch=master;SRCREV=e57d1eff`) に基づいています。 - `pyjailhouse` モジュールが見つからないことと、`jailhouse-cell-linux` コマンド構文が正しくないこと (例: `-I` を `CELLCONFIG` と誤って解釈する) に関連するエラーが発生しました。 2. レシピの更新: - jailhouse-native.bb: - 当初はヘッダーのインストールが不足していた(`jailhouse/types.h`、`jailhouse/cell-config.h` を参照してください。更新内容: 「ビットベイク インストール -d ${D} ${includedir} /jailhouse cp -r ${S} /include/jailhouse/*.h ${D} ${includedir} /jailhouse/ 「 - i.MX 8MQ の互換性のために `jailhouse_0.12.bb` と整合させるために、NXP Jailhouse フォーク (`git://source.codeaurora.org/external/imx/imx-jailhouse.git;branch=imx_5.4.47_2.2.0;SRCREV=8bbe203`) に切り替えました。 - `pyjailhouse` のインストールと `python3-native` の依存関係を確保しました。 - jailhouse-ecall.bb: - 無効な '/dev/null' 引数を削除し、適切な構文を使用することで 'jailhouse-cell-Linux' コマンドを修正しました。 「ビットベイク ${STAGING_BINDIR_NATIVE} /jailhouse-cell-Linux \ ${S} /ecall-inmate-Linux-demo.c\ -o ${S} /ecall-inmate-linux-demo.cell 「 - E-Call ユースケースに重点を置くために、`imx8mq-linux-demo.c` ではなく `ecall-inmate-linux-demo.c` を使用するように 'SRC_URI' を更新しました。 - ヘッダーと Python モジュールが確実に見つかるよう、「export C_INCLUDE_PATH」と「PYTHONPATH」を追加しました。 3. セル構成の更新: - 'imx8mq-linux-demo.c' をベースに簡略化した 'ecall-inmate-linux-demo.c'そしてIVSHMEMのガイダンス: - 状態テーブル: `0xbfdf0000`、4 KB、読み取り専用。 - RW セクション: `0xbfdf1000`、64 KB、読み取り/書き込み。 - ルート出力: `0xbfdfa000`、8 KB、読み取り/書き込み。 - ルート入力: `0xbfdfc000`、8 KB、読み取り専用。 - UART1 (`0x30860000`)、RAM (`0xc0000000`、256 MB)、通信領域 (`0x80000000`) が含まれています。 - 解析の問題を回避するために、複雑なマクロ (例: `JAILHOUSE_SHMEM_NET_REGIONS`) を削除しました。 - 構成スニペットの例: 「.c」 .mem_regions= { /* IVSHMEM 状態テーブル */ { .phys_start= 0xbfdf0000, .virt_start= 0xbfdf0000, 。サイズ= 0x1000, .フラグ= JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED、 }, /* IVSHMEM RWセクション */ { .phys_start= 0xbfdf1000, .virt_start= 0xbfdf1000, 。サイズ= 0x10000, .フラグ= JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED、 }, /* IVSHMEM ルート出力 */ { .phys_start= 0xbfdfa000, .virt_start= 0xbfdfa000, 。サイズ= 0x2000, .フラグ= JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED、 }, /* IVSHMEM ルート入力 */ { .phys_start= 0xbfdfc000, .virt_start= 0xbfdfc000, 。サイズ= 0x2000, .フラグ= JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED、 }, ... } 「 4. 依存関係とレイヤー構成: - `bblayers.conf` に `meta-ecall` と `meta-freescale` を追加しました。 - `local.conf` を更新しました: 「会議 IMAGE_INSTALL:append = " jailhouse jailhouse-ecall python3" DISTRO_FEATURES:append = " jailhouse 仮想化" 「 - `jailhouse_0.12.bb` がターゲット展開に NXP フォークを使用していることを確認しました。 - `python3-native`、`pyjailhouse`、およびヘッダーがネイティブ sysroot (` ${STAGING_DIR_NATIVE} /usr/share/jailhouse/tools/pyjailhouse/`、` ${STAGING_DIR_NATIVE} /usr/include/jailhouse/`) にインストールされていることを確認しました。 5. 手動テスト: - 手動でテストされた `jailhouse-cell-Linux`: 「バッシュ export PYTHONPATH=/ホーム/オートモーティブ/yocto_imx_Linux/build/tmp/work/x86_64-Linux/jailhouse-native/0.12-r0/image/usr/share/jailhouse/tools export C_INCLUDE_PATH=/ホーム/オートモーティブ/yocto_imx_Linux/build/tmp/work/x86_64-Linux/jailhouse-native/0.12-r0/image/usr/include/jailhouse /ホーム/オートモーティブ/yocto_imx_Linux/build/tmp/work/x86_64-Linux/jailhouse-native/0.12-r0/image/usr/bin/jailhouse-cell-Linux \ /ホーム/オートモーティブ/yocto_imx_Linux/build/tmp/work/armv8a-poky-Linux/jailhouse-ecall/1.0-r0/ecall-inmate-Linux-demo.c\ -o ecall-inmate-linux-demo.cell 「 - 同じエラー: 「セル構成ではありません」。 - 検証済みの sysroot コンテンツ: `pyjailhouse` モジュール、ヘッダー、および `jailhouse-cell-linux` が存在します。 現在の状況 - 次の場合も「セル構成ではありません」というエラーが続く: - `jailhouse-cell-linux` 構文を修正しました。 - セル構成の簡素化。 - `jailhouse-native.bb` を NXP フォークに合わせます。 - ヘッダーと `pyjailhouse` がインストールされていることを確認します。 - 他のレシピ (`jailhouse-native`、`jailhouse`) は正常にコンパイルされ、問題は `jailhouse-ecall.bb` とセル構成の解析に固有のものであることが示されています。 ご質問とガイダンスのリクエスト 1. このエラーは、NXP Jailhouse フォーク (`imx_5.4.47_2.2.0`) とセル構成のバージョンの不一致が原因である可能性がありますか?このフォークの `jailhouse-cell-linux` には特定の要件がありますか? 2. Yocto 5.15 Kirkstone を使用して i.MX 8MQ でカスタム Jailhouse 受刑者セルを作成するためのアプリケーション ノートまたはユーザー ガイドはありますか?このプラットフォームの詳細なドキュメントは見つかりませんでした。 3. `jailhouse-cell-linux` が複雑な構成 (IVSHMEM 領域など) を解析する際に既知の問題はありますか?構成をさらに簡素化する必要がありますか? 4. `jailhouse-ecall.bb` の参照を提供できますか?i.MX 8MQ 用の `.cell` ファイルをコンパイルするためのレシピまたは例はありますか? 5. i.MX 8MQ 上の Jailhouse に必要な特定の U-Boot またはカーネル構成が不足している可能性はありますか? 6. カスタム レシピ/BB レイヤーの Jailhouse 依存関係の問題を解決するにはどうすればよいですか? 添付ファイル(参考) - `jailhouse-ecall.bb`:E-Callセルのレシピを更新しました。 - `jailhouse-native.bb`:ヘッダー付きの NXP フォークに更新されました。 - `ecall-inmate-linux-demo.c`: IVSHMEM 領域を使用した簡素化された構成。 - `imx8mq-linux-demo.c`:オリジナル構成(参考) - 詳細なコンパイル ログ (必要な場合は、共有方法を確認してください)。 私たちは、E-Call 受刑者セルの展開と共有メモリ通信のテストを進めるために、この問題を解決したいと考えています。私たちのアプローチに関するご意見、参考資料、修正などがあれば、ぜひお知らせください。 サポートありがとうございます! よろしくお願いします、 スミット 注: 応答の改善や詳細ログの生成についてサポートが必要な場合はお知らせください。 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ こんにちは、Bio_TICFSLさん あなたの github リンクで、5.15 Kirkstone へのリンクがいくつか見つかりました: https://github.com/NXP/meta-nxp-harpoon/blob/imx-linux-kirkstone/recipes-extended/jailhouse/jailhouse_%25.bbappend https://github.com/NXP/meta-nxp-harpoon/tree/imx-linux-kirkstone NXP i.MX8MQ ボードに役立ちますか? ありがとう、 スミット Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ いくつかヒントを挙げてみましょう:
1. ドキュメント/inter-cell-communication.md では、メモリの配置方法について説明します。
各セルには、ivshmem 用の次の領域が必要です。 - 状態テーブルを保持するための読み取り専用領域(通常は1ページの大きさ) - すべてのピアが読み取り/書き込み可能な1つの領域 - ピアごとに1つの出力領域があり、そのうちの1つに対してのみ読み取り/書き込み可能
2. i.MX8MQへ
/* IVHSMEM 共有メモリ領域 00:00.0*/ { .phys_start= 0xbfdf0000, .virt_start= 0xbfdf0000, 。サイズ= 0x1000, .フラグ= JAILHOUSE_MEM_READ、===> これは状態テーブルです。 }, { .phys_start= 0xbfdf1000, .virt_start= 0xbfdf1000, 。サイズ= 0x9000, .フラグ= JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE 、 ===> これは RW セクションです。これをコミュニケーションにCANます。あるいはこれを拡大します。
}, { .phys_start= 0xbfdfa000, .virt_start= 0xbfdfa000, 。サイズ= 0x2000, .フラグ= JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE 、 ==> これはルート入出力です }, { .phys_start= 0xbfdfc000, .virt_start= 0xbfdfc000, 。サイズ= 0x2000, .フラグ= JAILHOUSE_MEM_READ, ==> これはルート入力です }, { .phys_start= 0xbfdfe000、 .virt_start= 0xbfdfe000、 。サイズ= 0x2000, .フラグ= JAILHOUSE_MEM_READ, ==> これはルート入力です
これは、imx8mq-inmate-linux.c のレイアウトと同様です。
RW と INPUT/OUTPUT SECTION を設定できますが、State セクションには触れないでください。
INPUT/OUTPUT の場合、複数の領域を定義すると、各領域のサイズは同じである必要があります。
よろしくお願いします。
彭。 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ こんにちは、
MX8MQには監獄はありませんが、MX8Mと同じファミリなので、githubをベースとするか、6.6.36を使用することができます。BSP。
よろしくお願いします。 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ こんにちは、Bio_TICFSL 早速のご返信ありがとうございます。 i.MX NXP 8MQ EVKボード「i.MX 8MQuad」を使用しているため、 部品番号「TDA6637」。 SO、現在、Linux Yocto 5.15 Kirkstone ' 5.15.71-2.2.0 ' をフラッシュしました。 しかし、「 NXP Harpoon Jailhouse 統合」に対する返信では、「 i.MX Linux Yocto Project BSP 6.6.36-2.1.0 Harpoon v3 リリース」が必要です。 i.MX 8MQボードでは5.15 Kirkstone Imageまでサポートされており、Harpoonユーザーガイド「UG10170」に記載されています。 Github リンク ' https://github.com/NXP/meta-nxp-harpoon/tree/imx-linux-scarthgap' このリリースでは次のボードがテストされました。 NXP i.MX 8MMini LPDDR4 EVK (imx8mm-lpddr4-evk) NXP i.MX 8MNano LPDDR4 EVK (imx8mn-lpddr4-evk) NXP i.MX 8MPlus LPDDR4 EVK (imx8mp-lpddr4-evk) i.MX 8MQ については触れられていませんが、当社のボードに特定の刑務所ソリューションを提供できますか、または囚人用の独房を作成するための他の可能性を提案できますか? サポートありがとうございます。 ありがとう、 スミット Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ こんにちは、
bbappend レシピを通じて、NXP Harpoon Jailhouse 統合と同様のアプローチに従うことCAN。
例を参照してください: meta-nxp-harpoon/recipes-extended/jailhouse/jailhouse-imx_%.bbappend at imx-linux-scarthgap · NXP/me...
ユーザーガイド: https://www.nxp.com/docs/en/user-guide/Harpoon_USERS_GUIDE.pdf
よろしくお願いします。 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ @ペン
[email protected] 上記のチケットで説明されているように、私たちが直面しているカスタム Jailhouse セルの作成問題に対する解決策を提案していただけますか? サポートありがとうございます。 さらに詳しい情報が必要な場合はお知らせください。