为 i.mx8MQ 创建 Jailhouse 虚拟机监控器 Inmate cell 时出现问题 亲爱的先生, 正在尝试通过 Jailhouse 在 NXP i.MX 8MQ EVK 板中创建自定义(e-Call)Inmate linux 演示单元。 所有操作步骤均已添加到所附的 "NXP_Jailhouse_Ticket.txt "中。锉刀 面临的问题:- 我们面临编译问题, 如何编译 linux-inmate-demo.c文件并生成 .o和 .cell文件? 如何创建正确的 .bb文件,用于编译 linux-inmate-demo.c文件并生成 .o和 .cell文件并添加到最终图像中。? 请向我们提供您在创建自定义监狱囚犯牢房时有的任何应用笔记, 或者 是否有任何指向以前具有相同解决方案的恩智浦社区门票的链接? 还请纠正上述步骤并提供解决方案。 i.MX8ULP Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 关于如何设置网络以允许囚犯访问互联网,请参阅下文,您需要更新设置以使用 USB 网或以太网。
如何使用网络为第 2 版 Linux 设置网络
首次启动 linux 后
sysctl -w net.ipv4.ip_forward=1 sysctl -p /etc/sysctl.conf
启用根细胞后
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
第二次启动 linux 后
ifconfig eth1 或 2 192.168.1.4第 1 个 Linux 根单元
ifconfig eth0 192.168.1.5为第二个 Linux 囚犯牢房
"ip route add default via 192.168.1.4dev eth0" for the 2nd linux " ip route add 10.193.100.0/24通过 192.168.1.4dev eth0" 用于第二个 linux
现在,您可以"mount -t nfs 10.193.108.xx:/home/xxx/nfs/mnt"
在步骤 3 和 4 中,根据您的网络将 10.193.xx.xx 更新为您的网络
此致
Peng 开始标志。 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 嗨,彭、 非常感谢你们的支持,我们可以将 "scp "从根单元复制到囚犯单元。 基本上,我们希望在囚犯手机上保留带有 MQTT 的电子呼叫应用程序。 我们可以共享从根节点到囚犯单元的读/写共享内存。此外,我们还可以按照您的建议,为 root/inmate 单元提供静态 IP。 现在,我们需要在囚犯牢房上建立互联网连接,以便将接收到的数据从根牢房传输到云端。 我们通过 USB 端口将 Quectel EC25 模块连接到恩智浦 i.MX8MQ 板。 根单元数据的 IFCONFIG: ” ifconfig eth0: flags=-28669 mtu 1500 ether 00:04:9f:05:a5:9c txqueuelen 1000(以太网) RX 数据包 0 字节 0 (0.0 B) RX 错误 0 丢失 0 超限 0 帧 0 TX 数据包 0 字节 0 (0.0 B) TX 错误 0 丢失 0 超出 0 载波 0 碰撞 0 eth1: flags=-28605 mtu 16384 inet 192.168.0.3 netmask 255.255.255.0 广播 192.168.0.255 inet6 fe80::88f0:a7ff:fe40:2407 prefixlen 64 scopeid 0x20 ether 8a:f0:a7:40:24:07 txqueuelen 1000(以太网) RX 数据包 41 字节 7030 (6.8 KiB) RX 错误 0 丢失 0 超限 0 帧 0 TX 数据包 71 字节 18812 (18.3 KiB) TX 错误 0 丢失 0 超出 0 载波 0 碰撞 0 lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000(本地环回) RX 数据包 103 字节 9268 (9.0 KiB) RX 错误 0 丢失 0 超限 0 帧 0 TX 数据包 103 字节 9268 (9.0 KiB) TX 错误 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 prefixlen 64 scopeid 0x0 inet6 fe80::609f:c3ff:fe2c:903b prefixlen 64 scopeid 0x20 ether 62:9f:c3:2c:90:3b txqueuelen 1000(以太网) RX 数据包 84 字节 7614 (7.4 KiB) RX 错误 0 丢失 0 超限 0 帧 0 TX 数据包 117 字节 13860 (13.5 KiB) TX 错误 0 丢失 0 超出 0 载波 0 碰撞 0 " 可以看到,互联网连接已在 ROOT 手机端建立。 以下是 PING 命令的输出结果 ” root@imx8mqevk:/home ping 8.8.8.8 PING 8.8.8 (8.8.8.8) 56 (84) 字节的数据。 来自 8.8.8.8 的 64 字节:icmp_seq=1 ttl=114 时间=193 毫秒 来自 8.8.8.8 的 64 字节:icmp_seq=2 ttl=114 时间=68.9毫秒 来自 8.8.8.8 的 64 字节:icmp_seq=3 ttl=114 时间=62.8毫秒 来自 8.8.8.8 的 64 字节:icmp_seq=4 ttl=114 时间=68.5 毫秒 来自 8.8.8.8 的 64 字节:icmp_seq=5 ttl=114 时间=66.5 毫秒 来自 8.8.8.8 的 64 字节:icmp_seq=6 ttl=114 时间=78.6 毫秒 来自 8.8.8.8 的 64 字节:icmp_seq=7 ttl=114 时间=71.0毫秒 ” 现在我在囚犯牢房遇到了网络问题,下面是 IFCONFIG 日志: ” root@imx8mqevk:~ ifconfig eth0 Link encap:Ethernet HWaddr 6E:58:98:59:01:A0 inet addr:192.168.0.4 Bcast:192.168.0.255 掩码:255.255.255.0 inet6 addr: fe80::6c58:98ff:fe59:1a0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:16384 Metric:1 RX 数据包:184 错误:0 丢弃:0 超限:0 帧:0 TX 数据包:65 错误:0 丢弃:0 超限:0 载波:0 碰撞:0 txqueuelen:1000 RX 字节:78814 (76.9 KiB) TX 字节:14002 (13.6 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 掩码:255.0.0.0 inet6 地址:::1/128 范围:主机 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX 数据包:22 错误:0 丢弃:0 超限:0 帧:0 TX 数据包:22 错误:0 丢弃:0 超限:0 载波:0 碰撞:0 txqueuelen:1000 RX 字节:3897 (3.8 KiB) TX 字节:3897 (3.8 KiB) ” 此外,我们还尝试在 ROOT 手机端进行 IP 转发: 允许囚犯牢房接入外部网络: 根细胞中 echo 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 POSTROUTING -o usb0 -j MASQUERADE ” 当我运行上述命令时,得到以下日志: ” root@imx8mqevk:/home iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE [ 1869.738194] audit: type=1325 audit(1755848821.593:11):table=nat 系列=2 entries=7 op=xt_replace pid=713 comm="iptables" root@imx8mqevk:/home [ 1869.749806] audit: type=1300 audit(1755848821.593:11):arch=c00000b7 syscall=208 success=yes 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] audit: type=1327 audit(1755848821.593:11):proctitle=69707461626C6573002D74006E6174002D4100504F5354524F5554494E47002D6F0075736230002D6A004D415351554552414445" ” 还将 Dmesg 日志放入根单元 ” [ 71.141601]创建了监狱牢房"ecall-linux-inmate-demo" [ 77.822386]IPv6:ADDRCONF(NETDEV_CHANGE):ETH1:链路就绪 [ 206.451703]audit: type=1325 audit(1755847158.198:4):table=nat 系列=2 个条目=0 op=xt_register pid=651 comm="iptables" [ 206.463131]audit: type=1300 audit(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]audit: type=1327 audit(1755847158.198:4):proctitle=69707461626C6573002D74006E6174002D4100504F5354524F5554494E47002D6F0065746830002D6A004D415351554552414445 [ 206.508268]audit: type=1325 audit(1755847158.202:5):table=nat 系列=2 entries=5 op=xt_replace pid=651 comm="iptables" [ 206.519201]audit: type=1300 audit(1755847158.202:5):arch=c00000b7 syscall=208 success=yes exit=0 a0=4 a1=0 a2=40 a3=aaaabb51c230 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.547353]audit: type=1327 audit(1755847158.202:5):proctitle=69707461626C6573002D74006E6174002D4100504F5354524F5554494E47002D6F0065746830002D6A004D415351554552414445 [ 217.506636]audit: type=1325 audit(1755847169.257:6):table=nat 系列=2 个条目=6 op=xt_replace pid=657 comm= " iptables " [ 217.517791]audit: type=1300 audit(1755847169.257:6):arch=c00000b7 syscall=208 success=yes exit=0 a0=4 a1=0 a2=40 a3=aaaaec783230 items=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" key=(null) [ 217.547639]audit: type=1327 audit(1755847169.257:6):proctitle=69707461626C6573002D74006E6174002D4100504F5354524F5554494E47002D6F0075736230002D6A004D415351554552414445 [ 294.389911]audit: type=1325 audit(1755847246.146:7):table=filter 系列=2 entries=0 op=xt_register pid=659 comm="iptables" [ 294.401564]audit: type=1300 audit(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]audit: type=1327 audit(1755847246.146:7):proctitle=69707461626C6573002D4100464F5257415244002D690065746831002D6F0075736230002D6A00414343455054 [ 294.445250]audit: type=1325 audit(1755847246.150:8):table=filter 系列=2 entries=4 op=xt_replace pid=659 comm="iptables" [ 294.456430]audit: type=1300 audit(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]audit: type=1327 audit(1755847246.150:8):proctitle=69707461626C6573002D4100464F5257415244002D690065746831002D6F0075736230002D6A00414343455054 [ 314.598783]audit: type=1325 audit(1755847266.267:9):table=filter 系列=2 entries=5 op=xt_replace pid=662 comm="iptables" [ 314.610726]audit: type=1300 audit(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]audit: type=1327 audit(1755847266.267:9):proctitle=69707461626C6573002D4100464F5257415244002D690075736230002D6F0065746831002D6A00414343455054 [ 849.488680]audit: type=1006 audit(1755847801.267:10):pid=671 uid=0 old-auid=4294967295 auid=0 tty=(none) old-ses=4294967295 ses=3 res=1 [ 849.501588]audit: type=1300 audit(1755847801.267:10):arch=c00000b7 syscall=64 success=yes exit=1 a0=3 a1=ffffc0aa76a0 a2=1 a3=ffff83653020 items=0 ppid=238 pid=671 auid=0uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=3 comm="crond" exe="/usr/sbin/crond" key=(null) [ 849.527425]audit: type=1327 audit(1755847801.267:10):proctitle=2F7573722F7362696E2F63726F6E64002D6E [ 1869.738194] audit: type=1325 audit(1755848821.593:11):table=nat 系列=2 entries=7 op=xt_replace pid=713 comm="iptables" [ 1869.749806] audit: type=1300 audit(1755848821.593:11):arch=c00000b7 syscall=208 success=yes 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] audit: type=1327 audit(1755848821.593:11):proctitle=69707461626C6573002D74006E6174002D4100504F5354524F5554494E47002D6F0075736230002D6A004D415351554552414445 " 您能帮助我们解决囚犯牢房的上述网络问题吗? Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 在 linux 中执行你的 “root” 或 “犯人” 将触发信号分段故障。
要在两个 linux 之间测试 ivshmem,可以按以下方法进行:
在根单元中: ivshmem-demo -d /dev/uio0 -t 2
在囚犯牢房中: ivshmem-demo -d /dev/uio0 -t 0
然后,你就会看到两个细胞之间的交流。
ivshmem-demo 的源代码位于 imx-jailhouse/tools/demos/ivshmem-demo.c 中。
关于如何在囚犯 Linux 启动后将文件复制到囚犯牢房、
在囚犯牢房: ifconfig eth0 192.168.0.4
在根单元中: ifconfig eth0 192.168.0.3
然后,你可以使用 scp 将文件从 root 复制到犯人。
也可以在根牢房配置 IP 转发,让囚犯访问外部网络。 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:~jailhouse 牢房列表 ID 名称 状态 已分配 CPU 故障 CPU 0 imx8mq 运行中 0-1 1 ecall-inmate-linux-demo 运行 2-3 ecall-inmate-linux-demo guest " 我们正在使用 /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-参考发行版、系统开发套件。 export cross_compile=aarch64-参考发行版、系统开发套件。-linux-make kird=/home/automotive/yocto_imx_linux/版本/tmp/work-shared/imx/kernel-版本-Artifacts c= " aarch64-参考发行版、系统开发套件。-linux x-gcc--sysroot=$sdktargetsysRoot " arch=arm64 cross_compile=aarch64-参考发行版、系统开发套件。-Linux-aarch64-参考发行版、系统开发套件。-linux-gcc--sysroot=/opt/fsl-imx-wayland/5.15-kirkstone/sysroots/armv8a-参考发行版、系统开发套件。-l inux-Wall-O2-o 根目录 ivshmem_root.c 我们在桌面端使用 imx8mq 工具链和上述命令进行编译。 我们想将生成的二进制文件复制到 Linux 囚犯演示单元。 我们已成功复制到根单元,但不知道在 Inmate Linux 演示单元上复制或编译的步骤? ,您能提供相同的操作方法吗? 我指的是恩智浦文档 "UG10163",名称为 "iMX_Linux_user_guide_LF6.12.20_2.0.0"。 我需要一些有效的示例代码和用户指南来使用这个 Linux 演示囚犯牢房,因此从根单元传输(一些捆绑的数据,例如 JSON 或字符串/二进制)数据,反之亦然,从 Linux Inmate 演示单元接收。 谢谢, Sumit Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 所以,我的理解是,你遇到了投诉问题。
恩智浦有一个仓库:https://github.com/nxp-imx/imx-jailhouse
我不明白你为什么要尝试版本单元文件。仅使用make即可版本监狱和所有单元文件非常简单。即使你使用的是 Simense 仓库,该文档也说:
make [KDIR=/path/to/kernel/objects]
还有我版本所有内容的命令:
. /opt/fsl-imx-internal-xwayland/6.12-styhead/environment-setup-armv8a-参考发行版、系统开发套件。-linux
导出 cross_compile=aarch64-参考发行版、系统开发套件。-Linux-
取消设置 CFLAGS
unset LDFLAGS
make kdir=$HOME/linux/linux-LTS-NXP CC= " aarch64-poky-linux-gcc--sysroot=$sdktargetsysroot " arch=arm64 cross_compile=aarch64-POKY-LINUX-LINUX-GCC arch=arm6
Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 亲爱的 PENG、 非常感谢你们的建议。 我们仍面临一些问题,详情如下: 创建 .cell 的流程文件(Jailhouse Inmate 二进制文件)、SDK 编译命令: 工具链环境设置: 来源 /opt/fsl-imx-wayland/5.15-kirkstone/environment-setup-armv8a-参考发行版、系统开发套件。-linux PATH 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-kirkstone/sysroots/x86_64-kirkstone/sysroots/sbin: /opt/fs l-imx-wayland/5.15-kirkstone/sysroots/x86_64-kirkstone/sysrox86_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-pokysdk-linux/bin/aarch64-pokysdk-linux: /opt/fsl-imx-wayland/5.15-kirkstone/sysroots/x86_64-pokysdk-linux/bin/aarch64-pokysdk-linux/bin/apoky-linux-musl: /home/automotive/.local/bin: /home/automotive/bin: /usr/local/sbin: /usr/bin: /usr/bin: /bin: /bin: /usr/bin: /bin: /usr/bin: /usr/bin: /bin: /usr/bin: /usr/bin: /usr/bin: /bin: /usr/bin: /usr/bin: /usr/bin: /bin: /usr/bin: /usr/bin: /usr/bin: /bin: /usr/b-c-i/HOME/Automotive/Jailhouse/Hypervisor/include-i/home/Automotive/Jailhouse/Hypervisor/arch/ arm64/include-i 汽车/监狱/include-nostdlib-nostartfiles-ffreestanding ecall-inux-demo.c-o ecall-inux-demo.c-o ecall-inumate-inmate-inmate-inmate-inmate-inmat 注意:-Jailhouse 头文件不是工具链的一部分,因此我们从 Seimens 的 Jailhouse 文件夹中单独下载(github 版本)。我们使用头文件 inmate-linux-demo.cell 进行编译。 我们没有对 .c锉刀 第 1 步:链接 .o 生成平面 ELF aarch64-poky-linux-ld\-ttext=0x0\-nostdlib\-o ecall-inux-demo.elf\ ecall-inux-demo.elf\ ecall-inumate-linux-demo.o -ttext=0x0 放置 .text 地址为 0x0 的部分,用于平面二进制布局。 -nostdlib阻止链接标准 C 库(队友不需要它)。 第 2 步:将 ELF 转换为原始二进制 .cell aarch64-poky-linux-objcopy\-O 二进制\ ecall-inimate-linux-demo.elf\ ecall-inumate-linux-demo.cell 验证结果:文件 ecall-inumate-linux -demo.cell 验证结果:文件 ecall-inux-demo. 打印信息: ecall-inmate-linux-demo.cell: data 删除默认的 imx8mq.cell 和 imx8mq-linux-demo.cell 生成 "imx8mq.cell 和 imx8mq-linux-demo.cell文件被推送到目标文件夹:"/usr/share/jailhouse/cells 之后,使用生成的 imx8mq.cell 启用 Jailhouse,并面临以下错误 / jailhouse enable /usr/share/jailhouse/cells/imx8mq.cell [ 2533.385877] jailhouse:不是系统配置 JAILHOUSE_ENABLE:无效参数 请提供指导,如果可能的话,请提供一些用户指南/应用笔记或 Makefile/Proper GCC 命令来解决问题。 附上 makefile(它包含所有命令,如上所述) 编译,制 作 aarch64-poky-linux-gcc-nostdlib-nostartfiles-ffreestanding-i/home/automotive/Jailhouse/Hypervisor/include-i-i/home/jailhouse/Hypervisor/include-i-home/automotive/Jailhouse/Hypervisor/include-i-home/automotive/Jailhouse/Hyp-imx8mq.o aarch64-poky-linux-ld-ttext=0x0-nostdlib-o imx8mq.elf imx8mq.elf imx8mq.elf imx8mq.o aarch64-poky-linux-ld: 警告 :找不到入口符号 _start;默认为 0000000000000000 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.cell:数据 感谢您的支持。 苏米特 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ BTW:
这是不对的
"敲击
export pythonpath=/HOME/automotive/yocto_imx_linux/版本/tmp/work/x86_64-linux/jailhouse-native/0.12-r0/image/USR/Share/Jailhouse/Tools
export c_include_path=/HOME/Automotive/yocto_imx_linux/版本/tmp/work/x86_64-linux/jailhouse-native/0.12-r0/image/USR/Include/Jailhouse
/home/automotive/yocto_imx_linux/版本/tmp/work/x86_64-linux/jailhouse-native/0.12-r0/image/usr/bin/jailhouse-cell-linux \
/home/automotive/yocto_imx_linux/版本/tmp/work/armv8a-参考发行版、系统开发套件。-linux/jailhouse-ecall/1.0-r0/ecall-inmate-linux-demo.c \
-o ecall-inmate-linux-demo.cell
单元格是由 GCC 编译出来的,而不是 jailhouse-cell-linux 编译出来的。
Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 我对 Yocto 的东西知之甚少。只需分享我的版本命令即可:
. /opt/fsl-imx-internal-xwayland/6.12-styhead/environment-setup-armv8a-参考发行版、系统开发套件。-linux
make 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 亲爱的彭凡 感谢您就 i.MX 8MQ 上 Jailhouse 的 IVSHMEM 内存区域提供的宝贵指导,您在回复中提供了有关状态表、RW 部分和输入/输出部分的信息。我们已经将你的建议纳入了我们的牢房配置,但是当我们尝试在i.MX 8MQ EVK板上使用Yocto 5.15 Kirkstone(Linux 5.15.71-2.2.0)创建自定义的E-Call囚犯单元时,仍然面临持续的编译错误。以下是该问题的详细摘要、我们为解决该问题所做的努力以及目前的状况。如果您能提供任何具体的参考、应用笔记或进一步的指导,以帮助我们解决这个问题,我们将不胜感激。 问题摘要 我们正在尝试编译一个自定义的 E-Call 囚犯单元配置(最初基于 `imx8mq-linux-demo.c`、现在使用简化的 "ecall-inmate-linux-demo.c"),使用 "jailhouse-cell-linux "工具。在 "jailhouse-ecall.bb "的 "do_compile "任务中编译失败配方出现以下错误: " 错误:jailhouse-ecall-1.0-r0do_compile:执行错误('/home/automotive/yocto_imx_linux/版本/tmp/work/armv8a-参考发行版、系统开发套件。-linux/jailhouse-ecall/1.0-r0/temp/run.do_compile.225085 ',1,无,无)日志数据如下:调试:执行 shell 函数 do_compile 不是单元配置:/home/automotive/yocto_im_imbild x_linux/版本/tmp/work/armv8a-参考发行版、系统开发套件。-linux/jailhouse-ecall/1.0-r0/imx8mq-linux-demo.c 警告:从 shell 命令中退出代码 1。 错误:任务(/home/automotive/yocto_imx_linux/sources/meta-ecall/recipes-jailhouse/jailhouse-cells/jailhouse-cells/jailhouse-call/jailhouse-cells/jailhouse-call.bb: " 该错误表明 `jailhouse-cell-linux` 无法识别单元配置文件。尽管多次尝试解决,但问题依然存在。 尝试解决的详细信息根据社区反馈和反复试验, 我们对Yocto配方、细胞配置和环境进行了多次更新。以下是主要工作的摘要: 1.初始设置和错误: - 以 `jailhouse-ecall.bb` 开始使用 `imx8mq-linux-demo.c`.和 `jailhouse-native.bb`基于西门子 Jailhouse fork (`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`)。更新为包含: " bitbake install -d${D}${includedir} /jailhouse cp -r${S}/include/jailhouse/*.h${D}${includedir} /jailhouse/ " - 切换到 NXP Jailhouse fork (`git://source.codeaurora.org/external/imx/imx-jailhouse.git;branch=imx_5.4.47_2.2.0;SRCREV=8bbe203`),与 `jailhouse_0.12.bb` 看齐,以兼容 i.MX 8MQ。 - 确保 `pyjailhouse_0.12.bb` 与 `jailhouse_0.12.bb` 兼容。 - jailhouse-ecall.bb: - 更正了 "jailhouse-cell-linux "命令,删除了无效的"/dev/null "参数,并使用正确的语法: " bitbake ${STAGING_BINDIR_NATIVE} /jailhouse-cell-linux \ ${S} /ecall-inmate-linux-demo.c\ -o${S}/ecall-inmate-linux-demo.cell " - 更新了 'SRC_URI',以使用 `ecall-inmate-linux-demo.c` 而非 `imx8mq-linux-demo.c`,从而专注于 E-Call 用例。 - 添加了 'export C_INCLUDE_PATH' 和 'PYTHONPATH',以确保找到头文件和 Python 模块。 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, .size= 0x1000, .flags= JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED, }, /* IVSHMEM RW 部分 */ { .phys_start= 0xbfdf1000, .virt_start= 0xbfdf1000, .size= 0x10000, .flags= JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED, }, /* IVSHMEM 根输出 */ { .phys_start= 0xbfdfa000, .virt_start= 0xbfdfa000, .size= 0x2000, .flags= JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_ROOTSHARED, }, /* IVSHMEM 根输入 */ { .phys_start= 0xbfdfc000, .virt_start= 0xbfdfc000, .size= 0x2000, .flags= jailhouse_mem_read | jailhouse_mem_rootshared, }, ... } " 4。依赖关系和层配置: -在 bblayers.conf 中添加了 `meta-ecall` 和 `meta-freescale`。 - 更新了 `local.conf`: "conf IMAGE_INSTALL:append =" jailhouse jailhouse-ecall python3" DISTRO_FEATURES:append =" jailhouse virtualization" " - 验证过的 `jailhouse_0.12.bb` 使用 NXP fork 进行目标部署。 - 确保 `python3-native`、`pyjailhouse` 和头文件安装在本地系统根 (`${STAGING_DIR_NATIVE}/usr/share/jailhouse/tools/pyjailhouse/`, `${STAGING_DIR_NATIVE}/usr/include/jailhouse/`)。 5。手动测试: -手动测试的 “jailhouse-cell-linux”:" bash export pythonpath=/HOME/automotive/yocto_imx_linux/版本/tmp/work/x86_64-Linux/jailhouse-native/jailhouse-native/jailhouse-native/jailhouse-native/jailhouse-native/jailhouse-native/jailhouse-native/0.12-r0/imx/imx/版本/tmp/work/x86_64-linux/Jailhouse-native/0.12-r0/image/usr/include/jailhouse /home/automotive/yocto_imx_linux/版本e/tmp/work/x86_64-linux/jailhouse-native/jailhouse-native/jailhouse-linux/版本e/tmp/work/x86_64-linux/jailhouse-native/imx_linux/ 版本/tmp/ work/armv8a-参考发行版、系统开发套件。-linux/jailhouse-ecall/1.0-r0/ecall/inmate-linux-demo.c\ -o ecall-inmate-linux-demo.cell " - 同样的错误:`Not a cell configuration`。 - 已验证系统根内容:存在`pyjailhouse`模块、头文件和`jailhouse-cell-linux`。 当前状态 - 尽管: - 错误 `Not a cell configuration` 仍然存在。 - 简化单元配置。 - 将 `jailhouse-native.bb` 与 NXP fork 对齐。 - 确保已安装头文件和 `pyjailhouse`。 -其他配方(“jailhouse-native”、“jailhouse”)成功编译,这表明问题特定于 “jailhouse-ecall.bb” 和单元配置解析。 问题和指导请求 1.错误可能是由于恩智浦 Jailhouse fork (`imx_5.4.47_2.2.0`)和我们的电池配置之间的版本不匹配造成的吗?这个分叉中对 “jailhouse-cell-linux” 有具体要求吗? 2。有没有关于使用 Yocto 5.15 Kirkstone 在 i.MX 8MQ 上创建自定义监狱囚室的应用笔记或用户指南?我们找不到该平台的详细文档。 3.jailhouse-cell-linux "在解析复杂配置(如 IVSHMEM 区域)时是否存在已知问题?我们应该进一步简化配置吗? 4。你能不能提供参考 `jailhouse-ecall.bb`为 i.MX 8MQ 编译 `.cell` 文件的配方或示例? 5。我们可能缺少 i.MX 8MQ 上的 Jailhouse 所需的特定的 U-启动 或内核配置吗? 6。如何解决自定义配方/bb层的监狱依赖关系问题? 附加文件(供参考) -`jailhouse-ecall.bb`:更新了电子呼叫手机的配方。 -`jailhouse-native.bb`: - `ecall-inmate-linux-demo.c`:简化了 IVSHMEM 区域的配置。 - imx8mq-linux-demo.c`:原始配置(供参考)。 -详细的编译日志(如果需要,请确认如何共享)。 我们迫切希望解决这个问题,以便继续部署 E-Call 囚犯单元和测试共享内存通信。如果对我们的方法有任何见解、引用或更正,我们将不胜感激。 感谢您的支持! 致以最崇高的敬意, Sumit 注:-如果需要帮助改进响应或生成详细日志,请告诉我! 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 这对我们的恩智浦i.mx8MQ板有帮助吗? 谢谢、 苏米特 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 让我给大家支几招:
1.Documentation/inter-cell-communication.md 描述了内存的排列方式。
每个单元的 ivshmem 都需要以下区域: - 用于保存状态表的只读区域,一般为一页大小 - 所有对等点都可读写的一个区域 - 每个对等点都有一个输出区域,仅其中一个可读写
2.至 i.MX8MQ
/* 00:00.0 的 IVHSMEM 共享内存区域*/ { .phys_start= 0xbfdf0000, .virt_start= 0xbfdf0000, .size= 0x1000, .flags= JAILHOUSE_MEM_READ, ===> 这是状态表。 }, { .phys_start= 0xbfdf1000, .virt_start= 0xbfdf1000, .size= 0x9000, .flags= JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE , ===> 这是 RW 部分。您可以用它来进行交流。或者把这个放大。
}, { .phys_start= 0xbfdfa000, .virt_start= 0xbfdfa000, .size= 0x2000, .flags= JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE , ==> 这是根输入/输出 }, { .phys_start= 0xbfdfc000, .virt_start= 0xbfdfc000, .size= 0x2000, .flags= JAILHOUSE_MEM_READ, ==> 这是根目录输入 }, { .phys_start= 0xbfdfe000, .virt_start= 0xbfdfe000, .size= 0x2000, .flags= JAILHOUSE_MEM_READ, ==> 这是根目录输入信息
这与 imx8mq-inmate-linux.c 中的布局相似。
您可以配置 RW 和 INPUT/OUTPUT 部分,但不要触碰状态部分。
对于 INPUT/OUTPUT,如果定义了多个区域,则每个区域的大小应相同。
此致
Peng 开始标志。 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 你好
MX8MQ 没有监狱,但是可以以 github 或 6.6.36 为基础的 MX8M 系列是同一个系列BSP。
此致 Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 你好,Bio_TICFSL 非常感谢你的快速回复。 由于我们使用的是 i.MX NXP 8MQ EVK 板 'i.MX 8MQuad',部件号为 " TDA6637 "。 目前,我已经闪存了 Linux Yocto 5.15 Kirkstone'5.15.71-2.2.0'。 但是在你回复 “ NXP Harpoon Jailhouse integration” 时,我们需要 “i.MX Linux Yocto Project 电路板支持包 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” 在此版本中测试了以下板: 恩智浦 i.MX 8MMini LPDDR4 EVK (imx8mm-lpddr4-evk) 恩智浦 i.MX 8MNano LPDDR4 EVK (imx8mn-lpddr4-evk) 恩智浦 i.MX 8MPlus LPDDR4 EVK (imx8mp-lpddr4-evk) 更不用说了 i.MX 8MQ 了,你能否为我们的板提供具体的监狱解决方案,或者提出其他建造囚犯牢房的可能性? 非常感谢你们的支持。 谢谢, Sumit Re: Issue with Jailhouse hypervisor Inmate cell Creation for i.MX8MQ 你好
你可以通过bbappend的配方遵循与恩智浦鱼叉监狱整合类似的方法。
参见示例:meta-nxp-harpoon/配方-extended/jailhouse/jailhouse-imx_%.bbappend 在 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 @Peng
[email protected] 请就我们面临的自定义监牢创建问题(如上述票单中所述)提出一些解决方案? 感谢您的支持。 请与我们联系,了解任何需要的更多细节。