imx7d-pico 中的 RPMSG-lite 停止 while (0 == rpmsg_lite_is_link_up(rl_instance)) {

问题描述 投票:0回答:1

我已经尝试这个项目很长时间了(https://www.youtube.com/watch?v=4zMyjaEgj2U&t=1208s)(最初是为imx7s-warp制作的)但奇怪的是(根据照片)它只是到达 while 循环的 (while (!rpmsg_lite_is_link_up(rl_instance)) {)

我试图解决的事情:

  1. 在 /meta-ipc/conf/machine/imx7d-pico.conf 中禁用 tty 模块的自动重新加载,并且仅在启动前使用 modproble imx_rpmsg_ttc 进行调用

  2. imx7d-pico-pi-m4(qca)、imx7s.dtsi 和 imx7d.dtsi 文件的设备树中的多项配置更改

  3. m4-zephyr 应用程序(版本 3.3)中的值发生变化,特别是 BUFF SIZE、NUM BUFF 等...

  4. 更改原始Uboot/Kernel的编译To(必须在Ubuntu 18.04中从WSL2机器到本机Ubuntu 18.04机器完成),但仍然存在本主题中相同的错误

  5. 使用 Zephyr 1.13 编译 Zephyr 应用程序的原始版本,这是该应用程序的原始版本。在这种情况下,无法使用 zephyr 1.13 编译 imx7d-pico(我有问题)。仅适用于 imx7s-warp (Zephyr 1.13)。但是,我没有 imx7s-warp。

  6. 聘请 freelancer.com 来解决 Yocto 部分(A7-Core)和 Zephyr 部分(M4-Core)

  7. 将当前 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 的支持

  1. 除了上面提到的视频,显然,我的项目是基于这个链接的:https://github.com/diegosueiro/meta-ipc/wiki/Yocto-Distribution-Build-and-Flash-Instructions

  2. 确实,我的问题也有可能(我想是远程的)是在 Kconfig 中。由于项目原来的Kconfig与当前的不同: https://gist.github.com/neuberfran/41be5d316c42af0b20b7e4f553694ee0 https://gist.github.com/neuberfran/6a0ad9735e1fba36ac6be9ba76643db3

  3. 原始项目Zephyr 1.13(我移植到Zephyr 3.3)部分:https://github.com/diegosueiro/rpmsg-lite/wiki

  4. Zephyr 1.13 中的问题将设备从 imx7s-warp 移植到 imx7d-pico 时:https://github.com/neuberfran/zephyr_old_version

如何解决?

c linux embedded-linux rtos zephyr-rtos
1个回答
0
投票
  1. 为了解决 Linux-Yocto/A7-Side 中的问题,我使用了本文第 4 项中提到的问题。换句话说,我必须回到过去并使用 Ubuntu 18.04 并将 NXP 的内核分支 4.9-1.0.x-imx 从 imx7s-warp 移植到 imx7d-pico。

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
  1. 为了解决 Zephyr-M4 方面的问题,我必须解决本文中的项目 E.g=5 的问题。基于zephyr/boards/arm/warp7_m4,我重新创建了zephyr/boards/arm/pico_pi_m4,并在文件中提供了更详细的规范,例如:pinmux.c、dts.fixup、board.h、Kconfig.board、Kconfig.defconfig、pico_pi_m4.defconfig , pico_pi_m4.dts.

昨天终于成功了

我停止 U-boot 2018.07 并运行以下命令:

ext2load mmc 0:1 0x7F8000 zephyr.bin (and not zephyr_rpmsg_tcm.bin)
dcache flush
bootaux 0x7f8000

run bootcmd

© www.soinside.com 2019 - 2024. All rights reserved.