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.

[参考译文] DRA821U:DRA821U 的推荐调试工作流程:引导加载程序+ R5F 固件+ Linux 集成

Guru**** 2694635 points

Other Parts Discussed in Thread: DRA821U

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1592596/dra821u-recommended-debug-workflow-for-dra821u-bootloader-r5f-firmware-linux-integration

器件型号: DRA821U
主题: DRA821 中讨论的其他器件

您好的团队、

我们正在开始评估 DRA821U SoC 的完整调试工作流程。  
我们的目标是更好地了解如何调试引导过程、以及如何在定制板上为 R5F 内核开发和调试定制固件。 我们还提供了 J7200 EVM 套件 因此、我们的目的是开始使用在那里进行实验 板载 XDS110 调试器 然后再介绍定制硬件。  

我们已经查看了 Processor SDK LinuxProcessor SDK RTOS 中的文档、但整体流程对我们来说仍然不是很清楚。  
我们希望就以下几点提供指导:

  1. 调试引导过程 (ROM→tiboot3.bin→tispl.bin→u-boot.img→Linux)  
      -使用 CCS 和加载和调试引导加载程序组件的建议方法是什么 板载 XDS110 USB 调试器 ?  
      -是否可以单步执行 tiboot3、tispl.bin 和 U-Boot 直到 Linux 在 A72 上启动?  
  2. 在 R5F 内核上开发和调试自定义固件
      -在开发过程中加载和调试 R5F 固件的正确工作流程是什么?   
      -当 Linux 在 A72 上运行时,我们可以使用 CCS 独立加载和调试 R5F 固件吗?  
      -有没有任何推荐的方法来协调 Linux 端 Remoteproc 与 CCS 调试?
     
  3. A72 (Linux) 上的用户空间应用程序开发   
      - CCS 支持 Linux 用户空间调试?
      -如果是,什么是推荐的工作流程?  
  4. 建议的 CCS 版本
    - Linux SDK 和 RTOS SDK 的文档似乎引用了不同的 CCS 版本。  
    -对于 DRA821U 开发、您建议使用哪个 CCS 版本?  
    -我们可以使用最新的 CCS 版本吗? 我们想使用基于 VSCode 的版本。

最后、如果有涵盖上述主题(早期引导加载程序调试,R5F 固件开发和调试以及 Linux 集成)的更完整或分步指南、我们非常希望提供指向该主题的指针。

非常感谢您的支持。

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

    您好、  

    我们正在查看请求、并在一天结束时向您回复适当的详细信息。  

    此致、  

    Sudheer

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

    您好、
    您能否提供一些有关您要使用的引导流和引导介质以及您打算加载哪些固件的信息?

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

    您好、

    目前、对于我们的生产系统、我们计划使用 标准 Linux 引导流程

    • tiboot3.bin (在 MCU R5F 上运行)

    • tispl.bin (SPL 在 A72 上运行)

    • u-boot.img
    • 来自 eMMC 的 Linux 内核+ rootfs

    出于开发/调试目的、我们还希望能够使用其他引导介质、例如:

    • UART 引导  

    • DFU 引导  

    定制电路板上的主引导介质将是:

    • eMMC(boot0 分区) →tiboot3 / tispl / u-boot

    • eMMC(用户区域) →rootfs

    我们希望开发和调试 在 R5F 内核上运行的自定义固件

    • MCU R5F0_0/R5F0_1  

    • 主 R5F 内核

    我们计划在通过 Remoteproc 引导 Linux 后、将此 R5 固件加载到我们的生产系统中。 我们要加载的固件的信息、将与使用 R5 外设与外部传感器和信号交互有关、然后将其与运行 Linux 的 a72 进行通信。

    目前、我们希望:

    • 在开发过程中手动加载这些固件。

    • 使用 CCS 和 XDS110 调试器交互对其进行调试。

    • 了解 Linux 运行后 CCS 调试如何与 Linux Remoteproc 进行交互。

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

    您好、

    注意:我们尚未尝试使用 NOBOOT 模式引导此映像

    1.启动过程调试

    因此、对于调试引导链 (ROM→tiboot3.bin→tispl.bin→u-boot.img→Linux)、以下是您实际可以做的事情:

    您可以在 u-boot 阶段使用 CCS 开始调试(ROM 阶段除外)。

    对于 tiboot3.bin、tispl.bin 和 u-boot.img 调试、您可以通过在这些文件流程的开始放在以下代码片段来修改和构建这些文件。 这样、内核将达到这一点并等待您加载符号并将变量更改为 0。 之后、您可以单步调试。

    Volatile int DEBUG_HALT = 1;
    while (debug_halt){

    }

    以及加载符号、您还需要给出偏移量、

    CONFIG_SPL_TEXT_BASE:A72 SPL 基址
    config_text_base:u-boot 基址

    您可以在以下文件中找到偏移量、
    {PSDKL_PATH}/board-support/ti-u-boot-2025.01 + git/build/a72/.config


    2. R5F 固件开发和调试

    这得到了很好的支持、根据您尝试执行的操作、有两种主要场景:

    场景 A:在没有 HLOS (A72 上没有 Linux) 链路的情况下进行 R5F 调试

    如果您只是在 R5F 上运行裸机或 RTOS:

    -将 EVM 置于 NOBOOT 模式
    -通过 CCS 运行 launch.js 脚本 — 这将初始化 DMSC 并加载系统固件 (TIFS)。 您可以在以下位置找到此脚本:
    ${PSDK_RTOS_PATH}/pdk_j7200_{version}/packages/ti/drv/sciclient/tools/ccsLoadDmsc/j7200/launch.js
    -直接通过 CCS 加载 R5F 固件二进制文件(.out 文件)
    -开始调试

    场景 B:在 Linux 在 A72(NOBOOT 模式除外) 链路上运行时调试 R5F

    -使用所需的引导模式正常引导 EVM
    -在不使用 GEL 文件的情况下创建 CCS 目标配置
    -将 CCS 连接到您需要的任何 R5F 内核(MCU1_0、MCU2_0、MCU2_1 等)。
    -使用“Load Symbols“选项(而非“Load Program“)从 R5F 固件加载符号
    -设置断点并开始调试

    有关 Remoteproc 的重要说明:在 SPL 引导流程中、当 Uboot 引导时、它通常使用 Remoteproc 从/lib/firmware/.加载 R5F 固件 这里的关键是从加载的 Remoteproc 所加载的相同二进制文件中加载符号。 这样、您只需连接到调试、而不是尝试加载不同的映像。
    如果您要在 R5F 内核上加载任何自定义固件(mcur5f_0_0 除外)、可以在/lib/firmware 和自定义固件之间创建软链接


    3. Linux 用户空间调试

    - CCS 不支持此功能。

    4. CCS 版本建议

    此 SDK 版本的正式测试和验证版本为:
    - CCS v11.0.0.00012
    -下载: software-dl.ti.com/.../ccs_downloads.html

    这是 CCS v11 经典版本(在完整 VSCode 转换之前)。 CCS v12.x 也应该可以正常工作,但因为这个特定的 SDK 是根据 v11.0 进行验证的。

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

    尊敬的 Vinit:  

    感谢您的快速响应和说明。

    我已经测试了您描述的一些内容、尤其是两个 R5F 调试场景。 我现在有几个后续问题和意见:

    2. R5F 固件开发和调试

    场景 A (NOBOOT + CCS + Launch.js)

    我按照您在 链接中描述的步骤和指南进行了操作。

    我能够连接到 MAIN_Cortex_R5_0_0 并成功调试基本main.c应用程序:

    “Debug"视“视图:

    到目前为止、一切都正常。

    问题:无法调试其他 R5F 内核 。  问题是我无法在任何其他 不是的 R5F 内核上连接或调试相同的代码 MAIN_R5_0_1 而不是在任何 R5F 上运行 内核。  系统 MAIN_R5_0_0 典型工作原理。  是否是中的该预期行为 NOBOOT 模式 ?  使用初始化 DMSC 后、在 MAIN_R5_0_1(或其他 R5F)上加载和调试代码的过程是否应该与 MAIN_R5_0_0 相同launch.js

    在 NOBOOT 下可以使用其他 R5 内核之前、是否缺少一些额外的初始化步骤?

    达到这一点后、我还想问是否必须使用一些特定配置创建 CCS 中的流程。 当创建新的道具时,我只是表示它将是 DRA821 和一个 proyect Cortex R [Arm] 如此图所示:



    对于调试任何 MAIN_R5 内核、这是否正确?  我是否需要为 MCU 设置不同的工程?

    场景 B (Linux + Remoteproc + CCS)

    我用另一个最小的代码创建了一个新的 CCS 工程main.c(没有 printf,以使其简单)。

    我编译了工程并将生成的.out文件复制到/lib/firmware目标 rootfs 上。

    我引导了 EVM 并将文件系统保存在“targetNFS"中“中、然后将.out 文件保存到其中 /lib/firmware 然后我创建了所需的符号链接并尝试开始执行 远程处理 、但我收到了以下错误:

    你知道什么可能导致这种情况吗?

    对于.out DRA821 上的 Remoteproc 使用的文件格式是否有任何特殊要求?

    相关问题  1.启动过程调试  你能提供一个.patch 在 wich 文件中看到我们必须应用 你提到的片段吗?

    PS:为什么我们可以加载自定义固件(mcu_r5f_0_0 除外)? 您指的是 DMSC/M3?

    如果要在 R5F 内核上加载任何自定义固件(mcur5f_0_0 除外)

    再次感谢您的帮助。

    此致。

    Santi

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

    尊敬的 Santi:

    [报价 userid=“656660" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1592596/dra821u-recommended-debug-workflow-for-dra821u-bootloader-r5f-firmware-linux-integration/6139431

    场景 A (NOBOOT + CCS + Launch.js)

    [/报价]

    只是为了确保我们在同一个页面上、

    您需要 为不同的内核创建不同的应用 二进制文件、不能将所用的应用二进制文件用于 MAIN_R5_0_0  其他内核也是如此、其他内核也是如此。

    此外、请确保每个内核的存储器映射应不同、并且不应与其他内核重叠。

    相关问题  MAIN_R5_0_1  内核和其他内核、  由于内核处于锁定步长、因此无法连接到调试器。  我们创建了自定义 GEL 文件以在拆分模式下配置内核、  有关更多详细信息、请参阅常见问题解答。

    [报价 userid=“656660" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1592596/dra821u-recommended-debug-workflow-for-dra821u-bootloader-r5f-firmware-linux-integration/6139431

    场景 B (Linux + Remoteproc + CCS)

    [/报价]

    默认情况下、这些远程处理程序由 U-boot 加载、而不是由 Linux 加载、因此 Linux 无法启动远程内核。

    有两种方法可以处理此问题、

    1) 您重新启动 SOC ,因为您已经创建了 softlink ,它将直接加载 remoteproc 与您更新的固件。

    2) 您可以通过插入 SD 卡在主机上启动软链接,然后它将只在第一次启动时工作。

    建议提供绝对路径 (usr/lib/firmware/...) 创建软链接、而不是来自/lib/firmware.的相对路径 因此、您需要将自定义固件复制到/usr/lib/firmware 目录中。

    [quote userid=“656660" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1592596/dra821u-recommended-debug-workflow-for-dra821u-bootloader-r5f-firmware-linux-integration/6139431 引导过程调试 

    对于 tiboot3.bin image、您可以将代码片段放在文件{PSDKL_PATH}/board-support/ti-u-boot-2025.01 +git/arch/arm/mach-k3/j721e/j721e_init.c 中 board_init_f() 函数的开头

    对于 tispl.bin image、您可以将代码片段放在文件{PSDKL_PATH}/board-support/ti-u-boot-2025.01 +git/arch/arm/mach-k3/j721e/j721e_init.c 中的 board_init_f() 函数的开头(与之前的文件相同!)

    对于 u-boot 映像、您可以将代码片段放在文件{PSDKL_PATH}/board-support/ti-u-boot-2025.01 + git/common/board_f.c 中 board_init_f() 函数的开头

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

    尊敬的 Vinit:

    抱歉、我不小心点击了“This resolved my issue(此问题已解决)“按钮—此主题尚未完全解决。

    各个内核具有单独的应用二进制文件

    您需要 为不同的内核创建不同的应用二 进制文件、不能使用用于的应用二进制文件 MAIN_R5_0_0  对于任何其他内核、同样适用于其他内核。

    如何正确处理 CCS 工程中的核心选择?

    • 在 CCS 中创建新工程时、我只选择 DRA821 + Cortex-R 作为目标。

    • 我是否需要为每个内核创建一个单独的工程(MAIN_R5_0_0、MAIN_R5_0_1、MCU_R5F 等)、也可以在工程设置/链接器命令文件的某处进行控制?

    内存映射

    另外、请确保每个内核的内存映射应该不同、并且不会与其他内核重叠。

    如何在 CCS 工程中查看或管理它? 它也与前面的问题有关? 在编译时选择了 R5 内核时、CCS 是否会为我自动执行此操作?

    锁步与分离模式/GEL

    默认情况下、这些远程处理程序由 U-boot 加载、而不是由 Linux 加载、因此 Linux 无法启动远程内核。

    是否有办法禁止 U-Boot 加载 R5F 固件、以便 Linux (remoteproc) 可以完全控制启动/停止/加载固件?

    更改软链接后出现问题

    1) 您重新启动 SOC、因为您已经创建了软链接、它将直接加载 remoteproc 与更新的固件。

    我尝试了此方法:创建到自定义固件的软链接后、我重新启动了 SoC、之后我不再能够将调试器连接到任何内核。 CCS 在尝试连接时报告以下错误:

    在这里您可以看到复位后的软链接:

    如果我恢复默认软链接并再次重新启动、则可以使用调试器连接到内核、而不会出现任何问题。
    这里可能会发生什么情况? 我的自定义固件映像是否缺少 Remoteproc/U-Boot 所期望的内容?

    2) 您可以通过插入 SD 卡在主机上启动软链接、然后它将仅在首次启动时工作。

    在我的例子中、我使用的是 targetNFS 根文件系统、这对于快速迭代(复制新的.out 文件,更新链接等)非常方便。 如果可能、我希望保留此基于 NFS 的工作流程。

    申请示例/分步流程

    我对整个工作流程还是有点困惑。 您能否确认是否有任何 CCS 示例工程(例如简单的 hello_world)在两种场景(NOBOOT + CCS 和 Linux + remoteproc + CCS 连接)中开始测试和调试 R5 内核?

    我在 Linux SDK 或 RTOS SDK 中都找不到此类示例。 我缺少一份分步指南、其中介绍了:

    • 如何在 DRA821 上为 R5F 创建 CCS 工程、

    • 正确选择目标内核、

    • 如何配置存储器映射、

    • 以及如何将其与 Remoteproc 和 U-Boot 集成以用于调试。

    任何指针或示例项目都会非常有用。

    再次感谢您的支持、
    Santi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否有办法禁止 U-Boot 加载 R5F 固件、以便 Linux (remoteproc) 可以完全控制启动/停止/加载这些固件?

    在 SD 卡中、引导分区中将有一个名为 uEnv.txt 的文件。

    将有一个名为 dorprocboot 的变量、将其设置为 0。

    如下所示、

    #设置正确的 U-Boot 环境变量

    dorprocboot=0

    现在、U-boot 不会加载固件、这些固件将由 Linux 加载。

    这可能会解决您在创建软链接后出现的 CCS 错误问题。

    如果有任何问题、请尝试 此操作并更新我。

    同时、我正在处理您所面临的其他问题。

    感谢您的耐心。

    -vinit

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [quote userid=“656660" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1592596/dra821u-recommended-debug-workflow-for-dra821u-bootloader-r5f-firmware-linux-integration/6143454 通过使用 GEL 将主 R5 集群设置为拆分模式后、是否应执行的调试程序进行确认 MAIN_R5_0_1 完全与相同 MAIN_R5_0_0? [/报价]

    是的、也是一样的。

    [报价 userid=“656660" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1592596/dra821u-recommended-debug-workflow-for-dra821u-bootloader-r5f-firmware-linux-integration/6143454

    如何正确处理 CCS 工程中的核心选择?

    • 在 CCS 中创建新工程时、我只选择 DRA821 + Cortex-R 作为目标。

    • 我是否需要为每个内核创建一个单独的工程(MAIN_R5_0_0、MAIN_R5_0_1、MCU_R5F 等)、也可以在工程设置/链接器命令文件的某处进行控制?

    [/报价]

    我会要求您在主机本身的 SDK 中构建示例/自定义固件、而不是为其创建 CCS 工程、然后使用一些引导介质加载工程。 对于您来说很容易、因为您只需要浏览解析、而且您可能不会收到这些链接器错误。  

    在 buiding 时,您应该使用选项 build_profile=debug ,这样您就可以在不进行任何编译优化的情况下获得流畅的调试体验。

    如果我获得任何有关使用 CCS 工程的具体信息、我会与您分享该信息。

    下面是 CCS 使用指南、

    https://software-dl.ti.com/ccs/esd/documents/users_guide_12.4.0/index_getting-started.html

    希望它有所帮助。

    - Vinit

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

    尊敬的 Vinit:

    感谢您的建议

    [quote userid=“676263" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1592596/dra821u-recommended-debug-workflow-for-dra821u-bootloader-r5f-firmware-linux-integration/6145384

    在您的 SD 卡中、引导分区中将有一个文件名 uEnv.txt。

    将有一个名为 dorprocboot 的变量、将其设置为 0。

    如下所示、

    #设置正确的 U-Boot 环境变量

    dorprocboot=0

    现在、U-boot 不会加载固件、这些固件将由 Linux 加载。

    这可能会解决您在创建软链接后出现的 CCS 错误问题。

    [/报价]

    您可以在这里看到、所有引导日志在引导时配置 dorprocboot=0、也尝试启动 remoteproc、但仍然无法正常工作。 使用软链接重新引导后、远程内核似乎处于“脱机“状态... (我放入.txt 文件、因为不要让我放入“插入代码“格式)

    e2e.ti.com/.../boot_5F00_and_5F00_remoteproc_5F00_logs.txt

    Im 还附加了用于生成该.out 文件的 CCS 工程:

    e2e.ti.com/.../hello_5F00_r5_5F00_HLOS_5F00_j7200.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [quote userid=“676263" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1592596/dra821u-recommended-debug-workflow-for-dra821u-bootloader-r5f-firmware-linux-integration/6145479

    我会要求您在主机本身的 SDK 中构建示例/自定义固件、而不是为其创建 CCS 工程、然后使用一些引导介质加载工程。 对于您来说很容易、因为您只需要浏览解析、而且您可能不会收到这些链接器错误。  

    在 buiding 时,您应该使用选项 build_profile=debug ,这样您就可以在不进行任何编译优化的情况下获得流畅的调试体验。

    [/报价]

    您能否请为我们提供相关文档、以便使用我们自己的定制 R5F 固件执行此操作? 我们应该在 SDK_Linux 或 SDK_RTOS 中执行 SOC 吗?

    我们想先介绍一个在其中一个 R5F 内核上运行的非常简单的 hello_world 应用、该应用会在控制台打印计数器并以某种方式与 Linux 进行通信。 理想情况下、我们希望能够在 Linux 在 A72 上运行时调试该固件。

    稍后、我们的目标是扩展该范围、以便开始直接使用 UART、GPIO 等外设以及 R5F 固件中的其他外设。

    请提供任何指导或参考正确的手册或示例。

    谢谢

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

    尊敬的 Santi:

    那是一个很好的机会,也是一个很好的机会。 我现在就来了。

    - Vinit

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

    尊敬的 Vinit:

    有什么关于这个的消息吗?

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

    尊敬的 Santi:

    似乎此查询已从您这边标记为“已解决“。

    不用担心,我已经准备好了解决方案。

    我相信您已经修改了 SD 卡 — 引导分区中的 uEnv.txt 文件。


    除此之外、您之前还提到过要将自定义固件放在 MAIN_R5_0_1(即 MCU2_0)上、但要停止和启动 R5F_MCU0_1(即 mcu1_0)。 这没有问题、但您创建的软链接来自 j7200-main-R5f0_0-fw.mine、该链接不正确。 您应该已经从 j7200-main-R5f0_0-fw 创建了软链接。 此外、在执行停止和启动时使用的 Remoteproc 编号需要确保 Remoteproc 编号与内核的固件名称匹配。 此 Remoteproc 编号是动态的、因此每次 Linux 启动时都需要对其进行验证。 下面是内核到固件名称的映射。

    枚举 ID ->设备名称  
    R5F_MCU0_0 -> 41000000.r5f
    R5F_MCU0_1 -> 41400000.r5f
    R5F_MAIN0_0 -> 5c00000.r5f  
    R5F_MAIN0_1 -> 5d00000.r5f
    R5F_MAIN1_0 -> 5e00000.r5f  
    R5F_MAIN1_1 -> 5f00000.r5f  
    DSP_C66_0 -> 4d80800000.dsp  
    DSP_C66_1 -> 4d818000.dsp  
    DSP_C71_0 -> 64800000.dsp
    DSP_C71_1 -> 65800000.dsp  

    除此之外,它似乎你正在从 mcu_r5f0_1 和 main_r5f0_0 建立 softlink 到同一.out 文件。 正如我之前所说、两个内核都需要特定于内核的固件。

    此外、还讨论自定义固件。 因此、我们首先了解一下对于每个内核的固件、Linux 具有指定的存储器空间、该存储器空间已在链接器文件(.lds 文件)中定义。 因此、每当您进行任何自定义固件时、都需要遵循该固件。

    因此,当您创建自定义固件时,您必须确保存储器空间不会与任何其他内核重叠,为此,您需要为每个内核使用不同的.lds 文件,并具有专用存储器映射。 您可以使用 SDK 中已经存在的示例(即 IPC 示例)、根据需要对其进行修改、并使用带有 SOC 和内核标志的 makefile(而不是使用 CCS 工程)构建这些示例。

    如果您想了解有关如何使用 CLI 从 SDK 构建示例的更多详细信息、可以浏览 SDK 文档、如果需要、您可以为该主题创建新的查询、因为该线程仅用于调试目的。

    -vinit

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

    尊敬的 Vinit  

    似乎此查询被标记为“已解决“。

    首先、再次对意外点击“已解决“表示抱歉

    正如我之前在.txt 文件中附加的日志中所示、您可以在引导期间在 U-Boot 中正确设置环境变量。

    除此之外、您之前提到过要将自定义固件放在 MAIN_R5_0_1(即 MCU2_0)上、但要停止并启动 R5F_MCU0_1(即 mcu1_0)。 这没有问题、但您创建的软链接来自 j7200-main-R5f0_0-fw.mine、该链接不正确。 您应该已经从 j7200-main-R5f0_0-fw 创建了软链接。 此外、在执行停止和启动时使用的 Remoteproc 编号需要确保 Remoteproc 编号与内核的固件名称匹配。 此 Remoteproc 编号是动态的、因此每次 Linux 启动时都需要对其进行验证。 下面是固件名称的映射核心。

    我懂了。 是的、我在不同的内核上进行了测试。

    来自 链接 引用 我知道每个内核都有 自己的专用存储器区域、以及 自己的 RPMsg DMA 通道、 因此必须使用 不同的固件二进制文件。  这一点现在已经很清楚了。

    关于 Remoteproc 编号。 即使多次重置后,我也始终看到相同的映射(例如,remoteproc1总是对应于j7200-mcu-r5f0_1-fw,并41400000.r5f显示在“名称“字段中)。

    与此链接器文件的.lds 文件相关:

    • 它们是否包含在 RTOS SDK 中的某个位置? 在哪个目录中?

    • 在构建将由 Remoteproc 加载的固件时、我是否始终需要使用这些链接器文件?

    • .lds每个内核是否有特定的内容?

    • 是否有不同的链接器文件取决于是否使用 IPC?

    • 使用 PDK makefile 进行编译时CORE=<core>、是否会自动选择正确的链接器文件?

    与构建 IPC 示例相关、我尝试构建您参考的 IPC 示例、遵循了  RTOS SDK 入门指南和  PDK 中的入门指南。

    然后我尝试构建该示例 IPC_RTOS_ECHO_TEST_FreeRTOS 、我假设它对应于名为的 EVM 文件系统中包含的固件  ipc_echo_test_mcu1_1_release_strip.xer5f  (我不知道姓名为何不同。)

    然后我尝试编译示例  IPC_RTOS_ECHO_TEST_FreeRTOS 我希望与 EVM 中的“ ipc_echo_test_mcu1_1_release_strip.xer5f “(我不知道为什么他们有不同的名字)。  

    我运行了以下命令:

    ~/ti-processor-sdk-rtos-j7200-evm-11_01_00_02/pdk_j7200_11_01_00_17/packages/ti/build$ make -s ipc_rtos_echo_test_freertos BOARD=j7200_evm CORE=mcu1_1
    

    但我得到这个错误:

    /home/ubun/ti-processor-sdk-rtos-j7200-evm-11_01_00_02/pdk_j7200_11_01_00_17/packages/ti/build/makerules/common.mk:365: *** gcc-arm compiler not found. Please refer user guide to download the same. Stop.
    make: *** [makefile:328: ipc_rtos_echo_test_freertos] Error 2

    我应该如何解决此问题?

    再次感谢您的支持、

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

    您好、Santi、

    [报价 userid=“656660" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1592596/dra821u-recommended-debug-workflow-for-dra821u-bootloader-r5f-firmware-linux-integration/6154536

    正如我之前在.txt 文件中附加的日志中所示、您可以在引导期间在 U-Boot 中正确设置环境变量。

    [/报价]

    如果要在引导期间设置变量、则还应在末尾执行 saveenv 以保存用于引导的变量值。  如果您直接在引导分区中修改了 uEnv.txt、则它是持久的、您不需要 saveenv。 很好!

    关于编译器错误、您需要安装这些工具(gcc arm 编译器)、然后将变量“tools_install_path"设置“设置到已安装工具的目录、变量将位于 /pdk_SOC_ /packages/ti/build/Rules.make

    关于 remoteproc 编号。 即使多次重置后,我也始终看到相同的映射(例如,remoteproc1总是对应于j7200-mcu-r5f0_1-fw,并41400000.r5f显示在“名称“字段中)。

    如果这是你的情况,那么它是好的,但我仍然建议每次检查一次。

    [报价 userid=“656660" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1592596/dra821u-recommended-debug-workflow-for-dra821u-bootloader-r5f-firmware-linux-integration/6154536
    • 它们是否包含在 RTOS SDK 中的某个位置? 在哪个目录中?

    • 在构建将由 Remoteproc 加载的固件时、我是否始终需要使用这些链接器文件?

    • .lds每个内核是否有特定的内容?

    • 是否有不同的链接器文件取决于是否使用 IPC?

    • 使用 PDK makefile 进行编译时CORE=<core>、是否会自动选择正确的链接器文件?

    [/报价]

    因此、让我们了解一下 IPC 示例、您可以在 IPC 目录中找到每个内核的.lds 文件、因为您已经知道每个内核都有自己的存储器映射。

    如果为自定义固件修改现有的示例(如 IPC)、那么无需担心.lds 文件、因为 makefile 会自动处理该文件、只需修改 c 文件、然后编译示例。

    我建议在编译时也使用标志 disable_recurse_DEPS=no。

    感谢您耐心等待。

    我需要针对构建相关问题创建单独的查询、因为该线程应仅限于调试流程。

    - Vinit

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

    尊敬的 Vinit:

    关于编译器错误、您需要安装这些工具 (gcc arm compiler)

    这是否记录在某个地方? 我在文档中找不到任何明确的参考资料。

    我认为此信息应在下  2.1.2. 软件依赖关系(未包含在 SDK 中) 、但我在其中找不到任何提及所需 GCC ARM 编译器的内容。 应安装哪个确切的 ARM GCC 版本? 此 RTOS SDK 是否有官方或推荐版本?  您能否提供相关的参考资料或文档链接?

    我找到了此脚本“ setup_psdk_rtos.sh “ti-processor-sdk-rtos-j7200-evm-11_01_00_02/sdk_builder/scripts"下“下的所需文件。 是否应该使用此脚本正确设置 RTOS SDK 环境? 我尝试运行它、但它似乎需要一个 rootfs 映像或一些额外的输入、 这是我不理解的、我不能完全确定它是如何使用的。 是否还记录了这些步骤? 我找不到相关信息。

    如果您为自定义固件修改现有的示例(如 IPC)、那么您无需担心.lds 文件、因为 makefile 会自动处理该文件、您只需修改 c 文件、然后构建示例。

    我懂了。 但是、我们也希望能够创建 从头开始定制 R5 工程 、并非总是基于修改现有示例。

    从我看到的来看、示例工程包括许多适用于多个 SoC 和配置的构建逻辑、因此用作起点有点复杂。

    是否有任何用于创建最小定制 R5 工程(链接器文件,存储器映射,makefile 等)的参考或指导原则?

    是否有名为“hello world“的裸机或 RTOS 示例可用作准确的起点?

    如能提供任何指导、将不胜感激。

    我会要求为与构建相关的问题创建单独的查询、因为此线程应仅限于调试流程。

    您建议针对与构建相关的问题创建一个单独的线程、这是合理的。  但是、由于当前构建/工具链问题、我无法完全测试 Linux 在 A72 上运行时的调试工作流程 信号。  我的理解是remoteproc、加载并运行 R5 固件后:

    1. 启动 CCS 目标配置

    2. 连接到所需的 R5 内核

    3. 仅加载符号

    4. 然后调试正在运行的固件

    遗憾的是、由于上述问题、我尚未成功完成此流程。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我找到了这个脚本“ setup_psdk_rtos.sh “ti-processor-sdk-rtos-j7200-evm-11_01_00_02/sdk_builder/scripts"下“下的所需文件。 是否应该使用此脚本正确设置 RTOS SDK 环境? 我尝试运行它、但它似乎需要一个 rootfs 映像或一些额外的输入、 这是我不理解的、我不能完全确定它是如何使用的。 是否还记录了这些步骤? 我找不到任何相关信息。

    虽然在设置 RTOS SDK 的过程中必须运行脚本、

    请访问以下链接

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/latest/exports/docs/vision_apps/docs/user_guide/ENVIRONMENT_SETUP.html

    关于错误、请分享您遇到的错误。

    [报价 userid=“656660" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1592596/dra821u-recommended-debug-workflow-for-dra821u-bootloader-r5f-firmware-linux-integration/6155986

    remoteproc加载和运行 R5 固件:

    1. 启动 CCS 目标配置

    2. 连接到所需的 R5 内核

    3. 仅加载符号

    [/报价]

    是的、您完全理解。

    是否有任何用于创建最小自定义 R5 工程(链接器文件,内存映射,makefile 等)的参考或指导原则?

    不是我知道的,如果找到任何我会立即与你分享.

    关于 GCC 编译器问题、我们将尝试运行 setup_psdk_rtos.sh 并查看该错误是否仍然存在。 对于这个共享,你在运行脚本时遇到的错误。

    -vinit

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

    尊敬的 Vinit:

    感谢您的澄清。

    I 但在设置 RTOS SDK 时、您必须运行脚本、

    我以前没有运行该脚本、主要是因为我不知道它是 RTOS SDK 设置中必需的。

    这一步似乎没有被提及 在中 使用入门 指南 RTOS SDK 因此我假设在解压 SDK 后环境已经准备就绪。  此文档是否已过时? 或者我缺少正确的参考资料吗?  我也找不到您在此版本的 RTOS SDK 文档中链接的参考文献。

    我将按照您的建议运行设置脚本以正确配置 RTOS SDK 环境。 在我尝试过此操作后、我将更新该线程、(有望)成功构建示例。

    再次感谢您的支持。

    此致、
    Santi

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

    尊敬的 Santi:

    [报价 userid=“656660" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1592596/dra821u-recommended-debug-workflow-for-dra821u-bootloader-r5f-firmware-linux-integration/6156143 这一步似乎没有被提及 在中 使用入门 指南 RTOS SDK 我们正在使用、

    哦、我可以看到。

    我将按照您的建议运行设置脚本以正确配置 RTOS SDK 环境。 我将在尝试此操作后更新该线程、并(有望)成功构建示例。

    是的、您可以随时询问是否遇到任何错误、还可以提供错误日志。

    - Vinit

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

    如果需要、在运行该脚本后、需要设置这些已安装工具的路径、以便 makefile 可以使用这些工具。

    为此、

    In file /pdk_*/packages/ti/build/Rules.make

    需要设置 变量 tools_install_path ?= 、

    路径很可能是 /home/ /ti  

    - Vinit

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是预期的设置流程吗? 或者这些元件是否已经存在 提供或记录为先决条件 访问?

    该 SDK tar 包缺少运行此脚本所需的这些 tar 文件。  

    您遵循的步骤是正确的。

    关于此误差、我假设 uEnv.txt 的变量已经设置为 0、如前所述。

    此外,不要使用 ipc_rtos_echo_test_freertos,而是使用 ipc_echo_test_freertos. 以便与 Linux 中的 IPC 相关内容进行通信。

    除了使用调试配置文件、我们还通过发布构建配置文件固件进行了验证、而不是使用 RELEASE。 不用担心、您仍然能够进行调试、只是它将进行一些编译器优化。

    如果仍然不起作用、请尝试为不同于 mcu1_0 和 mcu1_1 的内核构建 ipc_echo_test_freertos. 由于默认情况下、这两个系统可能处于锁步模式、因此您会收到该错误。

    如果你想让这两个在拆分模式而不是锁步模式,你可以参考这个 常见问题解答 .

    目前、如果发生此错误、只需选择不同的内核、至少确保满足您的调试目的。

    请告诉我会发生什么情况。

    此致。

    - Vinit

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

    尊敬的 Vinit:

    [quote userid=“676263" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1592596/dra821u-recommended-debug-workflow-for-dra821u-bootloader-r5f-firmware-linux-integration/6159827

    该 SDK tar 包缺少运行此脚本所需的这些 tar 文件。  

    您遵循的步骤是正确的。

    [/报价]

    感谢您的确认。 在这种情况下、设置过程不是很直观、RTOS SDK 文档似乎已经过时或不完整。 如果我缺少任何描述这些附加依赖项的官方参考资料、敬请告知。

    [quote userid=“676263" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1592596/dra821u-recommended-debug-workflow-for-dra821u-bootloader-r5f-firmware-linux-integration/6159827

    此外,不要使用 ipc_rtos_echo_test_freertos,而是使用 ipc_echo_test_freertos. 以便与 Linux 中的 IPC 相关内容进行通信。

    除了使用调试配置文件、我们还通过发布构建配置文件固件进行了验证、而不是使用 RELEASE。 不用担心、您仍然能够进行调试、只是它将进行一些编译器优化

    [/报价]

    我遵循了您的建议并成功构建并执行了ipc_echo_test_freertos固件、如下面的屏幕截图所示:

    确认固件正在通过 Remoteproc 运行后、我尝试连接 CCS 以使用以下步骤对其进行调试:

    启动 CCS 目标配置 而不包含 GEL 文件
    2.连接到正确的模芯 ( MCU_Cortex_R5_1 )

    连接后、中显示了 R5F 内核 已暂停 状态。

    3.加载符号:

    在此步骤中、我选择了此路径中 Remoteproc 加载的相同二进制文件  “/home/ubun/ti-processor-sdk-rtos-j7200-evm-11_01_00_02/pdk_j7200_11_01_00_17/packages/ti/binary/ipc_echo_test_freertos/bin/j7200_evm/ipc_echo_test_freertos_mcu1_1_release.xer5f “

    代码偏移 数据偏移 字段留空。

    数值 好的 、我收到以下错误:

    我在这里是否缺少任何必需的步骤?

    再次感谢您的帮助。

    此致、
    Santi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在这种情况下、设置过程不是很直观、RTOS SDK 文档似乎已经过时或不完整。

    是的、谢谢您、我们已经提出了更新文档的请求。

    南 现在可以看到固件工作正常。

    请记住、正如我之前提到的、您需要在 IPC 示例的开头放置调试 while 循环、以便在 while 循环中被阻止、并有时间连接 CCS 、然后您可以在代码中放置断点并将变量更改为 0、这样您的代码将一直运行、直到达到断点。

    此外、现在我们知道问题与使用 IPC_RTOS_ECHO_TEST_FreeRTOS 有关、您已将其更改为 IPC_ECHO_TEST_FreeRTOS、现在可以使用 debug build_profile 来构建固件二进制文件并使用该二进制文件、从而在 CCS 中获取所有调试信息。

    此致

    - Vinit