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.

[参考译文] AM6442:如何优化 SBL 引导流程、以在定制 AM6442 板(eMMC 引导)上实现稳定的 PCIe EP 枚举

Guru**** 2826855 points

Other Parts Discussed in Thread: AM6442

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1627035/am6442-how-to-optimize-sbl-boot-flow-for-stable-pcie-ep-enumeration-on-custom-am6442-board-emmc-boot

器件型号: AM6442

尊敬的 TI 专家:

我正在开发基于 AM6442 处理器的定制电路板、该处理器旨在作为 PCIe EP 器件运行。 它通过 PCIe 插槽连接到 Windows PC(充当根复合体)、并直接通过该 PCIe 插槽为该系统供电。
 
当前设置:
器件:定制 AM6442 电路板
SDK 版本:MCU+ SDK v11.0
引导模式: eMMC
 
问题在于总启动时间太长、无法由 PC 扫描、时间如下所示:
KPI_DATA: [BOOTLOADER PROFILE] SYSFW init                       :      12451us 
KPI_DATA: [BOOTLOADER PROFILE] System_init                      :     364879us 
KPI_DATA: [BOOTLOADER PROFILE] Drivers_open                     :      21267us 
KPI_DATA: [BOOTLOADER PROFILE] Board_driversOpen                :          0us 
KPI_DATA: [BOOTLOADER PROFILE] Sciclient Get Version            :       9987us 
KPI_DATA: [BOOTLOADER PROFILE] CPU Load                         :      61906us 
KPI_DATA: [BOOTLOADER_PROFILE] SBL Total Time Taken             :     470494us 
此持续时间显著超过了 PCIe 扫描窗口 (~120ms)。 因此、  我不打算专注于优化总体启动时间、而是优先修改   使用引导加载程序逻辑对初始化序列进行重新排序。
 
然而、由于我在这方面缺乏具体经验、我提出这一想法主要是为了核实其可行性:
我将   sbl_eMMC_am64x-evm_r5fss0-0_nortos_ti-arm-clang 工程的 example.syscfg 中定义一个额外的引导加载程序。 就像:
/**
 * Write custom configuration values to the imported modules.
 */
bootloader1.appImageOffset      = "0x800000";
bootloader1.appImageBaseAddress = "0";
bootloader1.bootMedia           = "EMMC";
bootloader1.$name               = "CONFIG_BOOTLOADER_EMMC0";
bootloader1.EMMCAppImageOffset  = "0x80000";

+bootloader2.bootMedia          = "EMMC";
+bootloader2.EMMCAppImageOffset = "0x100000";
+bootloader2.$name              = "CONFIG_BOOTLOADER_EMMC1";
 
我建议的工作流程是:
重写 sbl_eMMC_am64x-evm_r5fss0-0_nortos_ti-arm-clang 工程的 main.c 以实现:

1.配置第一阶段(例如)EMMC0以加载 仅初始化 PCIe 外设的最小应用程序、 从而确保主机快速枚举。

2.识别后,链EMMC1  式加载或跳到第二阶段(例如)执行完整的系统初始化并运行主应用程序。“

上面概述了我提议的方法;您能否确认其可行性并提供实施指导(如果可行)、或者在不建议使用此方法的情况下建议替代的快速启动策略以确保稳定的主机枚举?

非常感谢、

 

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

    尊敬的 Xue:

    我看到 System_init 在日志中花费了 364ms、因此这是导致启动时间较长的原因。 您似乎在尝试初始化 SBL 本身中的所有外设、是否有同样的原因?

    我建议在有要求时仅在 SBL 中初始化 PCI、如果不需要、其他事情可以在 R5 应用程序中初始化、而不是在 SBL 中初始化。

    此致、

    会面。

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

    尊敬的会议:

    实际上、 我没有在 SBL 中添加任何额外的外设引导选项、仅包含默认的 SBL_eMMC 驱动程序。  更确切地说、我直接使用了 SDK 中的 sbl_emmc.debug.hs_fs.tiimage 文件。

    这也是我不太理解的部分。

    我看到 System_init 在日志中占用了 364ms、因此这是由这种情况引起的。

    我尝试在 SBL 中初始化 PCIe、但之后运行应用程序时、系统会冻结。 如果我要使用 sbl_emmc 进行引导 pcie_enumerate_ep_am64x-evm_r5fss0-0_freertos_ti-arm-clang.appimage.hs_fs 并需要提前在 SBL 中初始化 PCIe、我应该执行哪些特定步骤?

    谢谢、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid=“633509" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1627035/am6442-how-to-optimize-sbl-boot-flow-for-stable-pcie-ep-enumeration-on-custom-am6442-board-emmc-boot/6274581 ]我直接使用了 SDK 中的 sbl_emmc.debug.hs_fs.tiimage 文件。

    我看到您使用的是调试二进制文件、您能尝试使用版本二进制文件并检查这样是否有所改进吗?

    我尝试在 SBL 中初始化 PCIe、但之后运行应用程序时、系统会冻结。

    您能告诉我它在什么地方卡住了吗?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我看到您正在使用调试二进制文件、您能尝试使用版本二进制文件并检查这是否提供了一些改进吗?

    性能已提高、但无法识别的问题仍未解决。

    您能告诉我它在哪一点被卡住了吗?  [/报价]

    在 SBL 之后、它将打印“ 图像加载完成、切换到应用程序... “。  

    如果应用程序正确启动、它应该打印来自 pcie_enumerate_ep 例程的信息、例如“ PCIe:检测到链路 “、但此后没有进一步的印刷信息。

    我不确定是不是因为我在 sbl_eMMC 和 pcie_enumerate_ep 例程的 syscfg 中包含了 PCIe。

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

    您好:
    感谢您的查询。 有关专家因** TI 印度**假期而离职。
    请预计响应会延迟。 感谢您的耐心和理解。

    此致、
    应用团队的一员
    ——
    *这是一个自动通知。*

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不确定是否是因为我在 sbl_eMMC 和 pcie_enumerate_ep 例程的 syscfg 中包含了 PCIe。

    如果您的应用程序在 SBL 完成后尝试重新初始化 PCI、那么它可能会导致此问题、您能否只在 pcie_enumerate_ep(不是在 SBL 中)中添加 PCIe 实例并检查这样是否解决了问题?

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

    我的实际问题是 PCI 初始化发生得太晚(现在在应用程序中启动)、导致无法识别、因此我想提前将其移至 SBL 中。 是否有其他方法可以实现快速 PCI 初始化?

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

    然后仅在 SBL 的 syscfg 中添加 PCI 实例、而不在应用中添加 PCI 实例、如果您在 SBL 中只初始化 PCI 一次、是否仍然会遇到该问题?