This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA4VM:Bootapp 启动 Linux 内核异常。

Guru**** 2466670 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1457343/tda4vm-bootapp-startup-linux-kernel-abnormality

器件型号:TDA4VM

工具与软件:

您好、TI 专家

我遇到同样的问题:https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1394498/tda4vm-sbl-startup-linux-kernel-abnormality

我的 Linux 启动日志与 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1394498/tda4vm-sbl-startup-linux-kernel-abnormality/相同

当我这样禁用时:  

错误消息消失、但 Linux 仍然启动!。

我使用默认 DM、没有错误。

我使用 vision_app mcu1_0。 main.c 中有 resouce_table



为什么要这样做?

此致
伊森

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 EASON:

    很抱歉、我没有得到这个问题、您的意思是、在删除 mcu1_0和 mcu1_1的 dts 条目后、您将不再看到 Linux 内核崩溃? 是否要在 mcu1_0上启用视觉应用并在其上运行 DM?

    此致、

    Brijesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Brijesh

    感谢您的答复。

    您的意思是、删除 mcu1_0和 mcu1_1的 dts 条目后、您将不再看到 Linux 内核崩溃?

    、、当我在 dts 中禁用 mcu1_0和 mcu1_1时(__LW_AT__当 remoteproc 驱动程序加载 mcu1_0)、它不会看到主 UART 的任何错误日志输出 、但我不知道原因。

    [报价 userid="80721" url="~/support/processors-group/processors/f/processors-forum/1457343/tda4vm-bootapp-startup-linux-kernel-abnormality/5589941 #5589941"]您想在 mcu1_0上启用视觉应用程序并运行 DM 吗?

    我将 vision_app 用作 bootapp(我将 boot_app_RTOS 演示的功能集成到 vision_app mcu1_0)中。 我的引导顺序是:sbl boot mcu1_0)这是 bootapp、来自 ospi(、然后是来自 mmcsd 的 mcu1_0引导 spl )、然后是来自 mmcsd 的 spl 引导 uboot(、然后是来自 mmcsd 的 uboot Linux 内核。、所有引导 Linux 内核需求均已完成、。

    此致

    伊森

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 EASON:

    MCU1_0上的 vision_apps 不支持作为引导应用程序作为标准 SDK 流程的一部分。 我想知道您是否出于任何特定原因需要 vision_apps 中使用此引导应用、而不是在 MCU1_0上运行 vision_apps 之外使用单独的引导应用(如果有的话、会集成一些附加功能)?

    此致、

    Nikhil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Nikhil

    我是否知道在 vision_apps 中需要此引导应用程序是出于什么特殊原因、而不是在 MCU1_0上运行的 vision_apps 之外需要使用此引导应用程序(如果有的话、还集成了一些附加功能)?

    我想以最快的速度启动。(必须在100ms 内从上电到第一个帧)发送第一条 CAN 消息

    此致
    伊森

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Nikhil

    有什么建议吗?

    此致
    伊森

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 EASON:

    在您的引导流程中、SBL 使用 mcu1_0上的 Boot 应用程序加载 DM 固件、因此 u-boot 不再是同样加载的吗?  

    如果您只需要执行 boot app 并能对 mcu1_0进行响应、我仍然不明白为什么 vision_apps 会集成到 mcu1_0固件中。 是否有计划与其他内核通信、为什么在未来会采用 IPC?

    您能否分享您当前看到的错误日志?

    此致

    Nikhil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Nikhil

    您对此有任何建议吗?

    此致
    伊森

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Nilhil
    我通过我的内核调试知道原因。 这是因为内核加载 mcu1_0 resource_table 错误、  内存溢出。
    但我不知道内核加载 mcu1_0 resource_table 错误的原因。

    我能否创建一个与内核驱动程序中的 mcu1_0完全相同的 resource_table、然后在内核加载 mcu1_0 resource_tabel 时分配该值?

    此致
    伊森

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 EASON:

    IPC 初始化将在 MCU1_0 vision_apps 固件内进行。  

    您可以告诉我 SD 卡中/lib/firmwares 中固件的软链接是什么吗?

    如果是 vx_app_mcu1_0_xx.out、能否检查 SD 卡相同的大小是否为0?

    此致、

    Nikhil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Nikhil
    现在、我将 C6x 资源表用作 mcu1_0资源表(因为 mcu1_0和 C6x 在代码中使用相同的资源表配置)
    但在 mcu1_0中、Linux 始终未就绪:

    现在我需要在 mcu1_0和 Linux:之间进行 IPC
    e2e.ti.com/.../

    此致
    伊森

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 EASON:

    我看到您就此问题提出了新话题。 让我们继续讨论。  

    [报价 userid="506459" url="~/support/processors-group/processors/f/processors-forum/1457343/tda4vm-bootapp-startup-linux-kernel-abnormality/5597281 #5597281"]

    您可以告诉我 SD 卡中/lib/firmwares 中固件的软链接是什么吗?

    如果是 vx_app_mcu1_0_xx.out、能否检查 SD 卡相同的大小是否为0?

    [报价]

    对于本主题、您能告诉我默认用例的以下内容吗?

    此致、

    Nikhil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Nikhil
    vx_app_mcu1_0_xx.out 不为0:

    我现在已将 bootapp 函数集成到 PDK 中的 XIP 工程(mcu1_0)(我想以最快的速度引导)、并在 mcu1_0中启动 uboot 和 Linux。 我已经实现了上述所有函数、并且 Linux 已经成功运行。

    现在我还想使用 IPC 来使 Linux 能够与 mcu1_0通信、但在实际测试过程中、我发现 Linux 在加载 mcu1_0的 resource_table 时出错(因为 Linux 内核找不到 mcu1_0的 resource_table)、因此当 Linux 加载 C6x 的 resource_table 时、我会将 c6x_tabel 作为 c6x_0的资源表(资源列表与 c6x_table 相同)。

    但是、当我使用 rpmsg_char_simple 进行测试时、我发现 Linux 和 mcu1_0仍然无法通信:

    当我在 source_code 中的 rpmsg_char_simple 中调试时、我发现没有 mcu1_0   rpmsg_chrdev find、但在 mcu1_0 rtos_code 中、、 我已经宣布了  

    rpmsg_chrdev。  
    Linux 端:



    RTOS 端:
    那么、如何解决该问题呢?  
    请帮助检查一下这个。

    此致
    伊森
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    【继续...】: 

    使用上述方法、ipc_isRemoteReady (ipc_MPU1_0)不能用于确定 Linux 是否已准备就绪、因为 Linux 内核在加载资源表时使用 C6x 资源表(mcu1_0也包括 C6x 资源表)、因此在 IPC 驱动程序中、我修改了相关函数、并且 Linux 默认已启动:

    如果我不这样做、就无法使用 VirtioIPC_createVirtioCorePair 为 Linux 创建它。 然而、我在实际调试过程中发现、在我修改了上述驱动程序之后、当我使用 VirtioIPC_init 时、程序 carsh

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果我不修改驱动程序、将无法使用适用于 Linux 的 VirtioIPC_init 进行初始化、从而导致 RPMessage_announce (IPC_MPU1_0、rpmsg_TX_Endpt、"rpmsg_chrdev")失败 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    ipc_isRemoteReady

    无疑需要使用该 API 来确保 R5F 内核在 Linux 在 A72内核上运行后向 Linux 宣布端点。

    rpmsg_char_simple 是 Linux 和 IPC_ECHO_TEST/cdd_IPC 示例之间与定义的端点进行通信的示例。我注意到您正在使用自定义视觉应用示例进行测试、并已对视觉应用示例进行了修改。

    对于 IPC_ECHO_TEST 和 VISION 应用、MCU1_0的内存布局保持不变、无需修改内存布局。

    您是否可以附加源代码文件更改而不是代码段、以便我可以进一步帮助您?

    此致

    Tarun Mukesh