我已经尝试这个项目很长时间了(https://www.youtube.com/watch?v=4zMyjaEgj2U&t=1208s)(最初是为imx7s-warp制作的)但奇怪的是(根据照片)它只是到达 while 循环的 (while (!rpmsg_lite_is_link_up(rl_instance)) {) 行
我试图解决的事情:
在 /meta-ipc/conf/machine/imx7d-pico.conf 中禁用 tty 模块的自动重新加载,并且仅在启动前使用 modproble imx_rpmsg_ttc 进行调用
imx7d-pico-pi-m4(qca)、imx7s.dtsi 和 imx7d.dtsi 文件的设备树中的多项配置更改
m4-zephyr 应用程序(版本 3.3)中的值发生变化,特别是 BUFF SIZE、NUM BUFF 等...
更改原始Uboot/Kernel的编译To(必须在Ubuntu 18.04中从WSL2机器到本机Ubuntu 18.04机器完成),但仍然存在本主题中相同的错误
使用 Zephyr 1.13 编译 Zephyr 应用程序的原始版本,这是该应用程序的原始版本。在这种情况下,无法使用 zephyr 1.13 编译 imx7d-pico(我有问题)。仅适用于 imx7s-warp (Zephyr 1.13)。但是,我没有 imx7s-warp。
聘请 freelancer.com 来解决 Yocto 部分(A7-Core)和 Zephyr 部分(M4-Core)
将当前 6.6 Linux 内核从 linux-fslc-imx 移植到 4.9-1.0.x(在 linux-fslc github 中存在问题:https://github.com/Freescale/linux-fslc/issues/648)
例如:1) 根据 NXP 员工的说法,RPMSG-lite 是二进制内核,因此可以得到 Yocto Hardknott 和 Kirkstone 的支持
除了上面提到的视频,显然,我的项目是基于这个链接的:https://github.com/diegosueiro/meta-ipc/wiki/Yocto-Distribution-Build-and-Flash-Instructions
确实,我的问题也有可能(我想是远程的)是在 Kconfig 中。由于项目原来的Kconfig与当前的不同: https://gist.github.com/neuberfran/41be5d316c42af0b20b7e4f553694ee0 https://gist.github.com/neuberfran/6a0ad9735e1fba36ac6be9ba76643db3
原始项目Zephyr 1.13(我移植到Zephyr 3.3)部分:https://github.com/diegosueiro/rpmsg-lite/wiki
Zephyr 1.13 中的问题将设备从 imx7s-warp 移植到 imx7d-pico 时:https://github.com/neuberfran/zephyr_old_version
1.2)在一些文件中,我做了更重要的更改。我创建了 imx7d-pico.conf、imx7d-pico-pi.dts 和 imx7d-pico.dtsi,其中包含以下内容:
memory {
reg = <0x80000000 0x1ff00000>;
};
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
rpmsg_reserved: rpmsg@9fff0000 {
no-map;
reg = <0x9fff0000 0x100000>;
};
};
chosen {
stdout-path = "serial0:115200n8";
};
m4_tcm: tcml@007f8000 {
compatible = "fsl, m4_tcml";
reg = <0x007f8000 0x8000>;
};
&rpmsg {
vdev-nums = <1>;
reg = <0x9fff0000 0x10000>;
status = "okay";
};
1.3)移植到内核分支4.9-1.0.x-imx的优点之一是Kconfig已经准备好了,就像下面的链接一样: https://gist.github.com/neuberfran/41be5d316c42af0b20b7e4f553694ee0
这本身并没有解决我的问题。明显地。但这很有帮助,因为上传 RPMSG-lite 的所有必要配置(如下所述)都存在于此分支中:
CONFIG_HAVE_IMX_MU=y
CONFIG_HAVE_IMX_RPMSG=y
CONFIG_RPMSG=y
CONFIG_RPMSG_VIRTIO=y
CONFIG_IMX_RPMSG_PINGPONG=m
CONFIG_IMX_RPMSG_TTY=m
昨天终于成功了
我停止 U-boot 2018.07 并运行以下命令:
ext2load mmc 0:1 0x7F8000 zephyr.bin (and not zephyr_rpmsg_tcm.bin)
dcache flush
bootaux 0x7f8000
run bootcmd