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.

[参考译文] Linux/66AK2G02:使用 u-boot 为 IPC 加载 DSP 和 ARM

Guru**** 2562870 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/609108/linux-66ak2g02-using-u-boot-to-load-dsp-and-arm-for-ipc

器件型号:66AK2G02
主题中讨论的其他器件:EVMK2G

工具/软件:Linux

我在 K2G 上的程序使用 DSP 和 ARM 与 IPC 模块进行通信。  DSP 必须首先启动、然后是 ARM。  两个处理器都运行 TI RTOS、但这是有关 U-Boot 的问题。  出于各种原因、我想使用 u-boot 加载映像。  加载臂影像是直接的。  

我使用的是2017.1版 ti-u-boot。  我看到有一个"rproc load"命令、但它需要 DSP 代码的二进制映像。  我看到有一个工具 、C:\ti\ccsv6\utils\tiobj2bin\tiobj2bin.bat 可以生成 bin 文件。  这是推荐的工具吗?

我看到还有一个"bootelf"命令。  由于它启动了 ARM、因此它不适用于 DSP。  但这似乎是最好的。  是否最好使用"rproc loadelf"命令?

还有人从 uboot 加载这样一个包含两个部分的程序吗?  在深入了解之前有什么建议?

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

    我已通知 RTOS 团队。 他们的反馈将在此处发布。

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

    我需要了解 rproc 的作用。 如果是在 kenrel 中对 remoteproc 进行了全面的吹扫、则可以这样做。 不过,我怀疑情况会是这样。 除下载映像外,内核启动期间运行的 Remoteproc 还会检查资源表,以便在必要时修改 MMU。

    我不熟悉 RTOS、但是否可以让 RTOS 启动代码加载 DSP、然后加载 ARM? 还是在 ARM 代码的开头、它下载 DSP?

    雷克斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当您说内核时、您是指 uboot 内核吗? 此处不涉及 Linux 内核。 这是 u-boot。 我已经弄清了这一点、我认为我必须使用 uboot 来加载和启动 TI 称为"SBL"(次级引导加载程序)的内容、它可以启动 ARM 和 DSP。 我想使用 u-boot、以便能够通过以太网获取新映像。 但我要加载的程序不是 Linux。

    下面是我的当前摘要:

    1) 1) uboot loadelf 命令可以将 ARM 映像以与调试器完全相同的方式放置在存储器中。 我知道这是因为:
    a)'setenv autostart no'会导致 uboot loadelf、但不会启动它。
    b)连接调试器(无 GEL 文件)。
    c)使用加载/验证。 它通过了。
    我使用 GPIO_LedBlink_evmK2G_armExampleProject 程序进行检查。

    2) 2)如果我现在尝试执行、我将进入 uboot 异常处理程序。 无论我让 uboot 启动程序还是在那里设置 PC 并使用调试器、都是如此。 这是由内存冲突引起的吗? 我的程序是否绑定 uboot? 我是否违反了 uboot 的 MMU 访问限制? 我想让 uboot 走出去。

    3) 3)另一方面、如果我使用 mkimage、然后使用 bootm、我不会获得异常、但程序不会运行。 mkimage 添加了 uboot 标头、但仍有问题。

    4) 4) C6000链接器创建的 elf 文件不适合加载"bootelf"。 没有 shdr。 我看到我必须使用 hex6x 来创建应该能够加载的 bin 文件。 C:\ti\pdk_k2g_1_0_5\packages/ti\boot\sbl 就是这种情况的示例。 这显示了正在创建的多处理器启动映像以及用于启动该映像的 SBL。
    -是否可以直接从 uboot 加载此 SBL 映像? 它会运行吗?
    -使用 hex6x 创建的 DSP 映像是否会使用 uboot 中的 rproc 运行?
    DSP 启动后,它能启动 ARM 吗? 我需要查看 SBL 代码。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Chuck、

    很抱歉、我花了一段时间才回来。 您的问题对我来说有点难回答、因为您触及了一些 RTOS 区域、但我会尝试。
    我所指的内核是 Llinux 内核。 TI 在 SoC、RTOS 和 Linux 上提供了两种环境。 U-boot 位于 Linux 阵营中、但尝试运行 RTOS LedBlink 示例时不起作用。 设置不同。 您可以尝试使用 RTOS 软件包创建 SD 卡。 RTOS 中的 MLO 将被正确设置以运行 RTOS GPIO_LedBlink ARM 示例。 我认为 RTOS 示例的 mkimage 不能在 Linux 环境中工作。

    在 Linux 环境中、可通过 CCS 加载/运行的任何 DSP .xe66映像都可以在启动期间通过 Linux 内核 remoteproc 驱动程序下载。 但是、在 u-boot 中、rproc 仅支持将映像下载到 PMMC (电源管理控制器)、而不支持 DSP。 "rproc list"显示可用的远程处理器。

    RTOS MLO 没有启用以太网。 它仅执行基本初始化、电源和引脚多路复用设置。 如果映像可以在 SD 卡上、则 RTOS MLO 可能更适合、而不是通过以太网获取映像。

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

    谢谢。  

    我的目标是在开发中使用 uboot。  UBoot 具有以太网支持、可在新映像中加载以进行测试。  我们不会在项目中使用 uboot。  在这里、我们将直接从 QSPI 闪存进入 MLO。  该产品不需要以太网支持。

    我在以前的许多项目中都使用过 Linux 和 U-Boot。  对于该项目、我们"被迫"返回 TI-RTOS、我正在尝试获得一个良好的开发环境。  我发现了一系列障碍。

    第一个块: 我们在使用内部存储器时遇到冲突。  我的初始尝试崩溃、因为 uBoot 正在从内部存储器运行、并且正在通过加载新程序来覆盖它。  因此、需要首先解决这一问题。  如果这是唯一的问题...

    接下来、我们要问什么是完整和适当的图像格式。  原始 elf 文件不包含必要的系统初始化代码。  内核 uImage 所做的。  MLO 文件包含 SBL 加载程序使用的头文件。  同样、这应该能够得到解决。  

    最后、我们要了解 DSP 代码的问题。  您说 uBoot rproc 不处理 DSP。  我认为它确实显示在列表中。  但如果不是(屏幕上的名称不是很清楚)、这是另一个障碍。  事实上、TI DSP C 编译器生成的 elf 文件显然不包含"shdr"信息、uboot 需要此信息来加载 elf。

    每一项都应通过一些编程时间来解决。  此处列出的障碍意味着我们在不久的将来一直在使用 JTAG 下载。

    谢谢、我将把这个标记为"已回答"。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    更正我的回答第三句中的拼写错误:
    我们不会在发布的产品中使用 uboot。 在这里、我们将直接从 QSPI 闪存进入 MLO。 该产品不需要以太网支持。