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.

[参考译文] AM3358:Sysboot 奇怪问题 AM335x

Guru**** 2541020 points
Other Parts Discussed in Thread: UNIFLASH, AM3358

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1299841/am3358-sysboot-strange-problem-am335x

器件型号:AM3358
主题中讨论的其他器件:UNIFLASH

您好!

我们有一个基于 BBB 的定制电路板。

在开发和启动过程中、我使用的是"SYSBOOT[4:0]=01011b" config 、即:分别为 USB0 (RNDIS)、NAND、SPI0、MMC0。 我可以对板进行编程、而不会遇到任何问题。

我们现在正处于生产和原型设计过程。 我将 sysboot 引脚更改为"10010b"、即:NAND、USB0、UART0。 我已经将我的程序写入到了 NAND 中、并且使其能够成功从 NAND 中启动。

我有一些奇怪的问题几次。 我想总结一下;
我必须更改一些 u-boot 代码。 我的 nand 闪存中的已擦除 SPL 部分。 第二个启动选项是 USB0 (处理器像这样工作)、但是处理器不会再从 USB(RNDIS )打开了! 我的网络管理器中没有网络设备。

我尝试从 UART 引导。 这还不错。 U-Boot 打开后、我就可以到达 USB0 (RNDIS)并通过 TFTP 读取 zImage 和 DTB。 这意味着我的 USB 外设正常工作。

我已经将 SYSBOOT 改回我的第一个配置"01011b"。 之后、我的板可从 USB0和 NAND 引导。

当我改回第二个 SYSBOOT"10010b"时。 一切都正常。

因此、硬件还行。 代码噪声相同。 当我擦除 NAND 部分 USB0 (RNDIS)不再工作时、经过一些奇怪的测试(如上所述)后、它开始正常工作。
我在许多不同的板上遇到了此问题。 逻辑上没有解释。

有什么想法吗?

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

    尊敬的 Gokhan:

    当我擦除 NAND 部分 USB0(RNDIS )不再工作时,经过一些奇怪的测试(如上所述),它开始正常工作。

    你的意思是、当 sysboot 引脚是"10010b"时、就在擦除 NAND 后、电路板不能从 USB/RNDIS 引导、但经过一些测试、电路板开始从 USB/RNDIS 引导? 如果是、您是否在测试期间对电路板进行了下电上电?

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

    您好、Bin、

    当然、我先对电路板下电上电。
    它认为它应该更清楚。 虽然我说"在一些测试后",我的意思是我更改系统启动引脚到其他图标01100b、11000b 等。 因为当我输入这个奇怪的条件时,RNDIS 永远不会在"10010b"配置中重新访问我,直到我将引导引脚更改为其他配置。

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

    尊敬的 Gokhan:

    感谢您的澄清。 我将把您的问题转给我们的 ROM 专家以征求意见。

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

    我对你的步进有点困惑。  似乎唯一*不*有效的事情是在 NAND 擦除后、您对电路板下电上电、并且启动没有转移到第二个启动源、即 USB (当您有启动序列 NAND、USB、UART 时)。

    请注意、为了使已擦除的 NAND 无法引导、ROM 必须从 NAND 的第一个块中读取0xFFFFFFFF。  这将向 ROM 指示该 NAND 被擦除、并移动到下一个引导源。  如果是任何其他内容、ROM 将假定映像有效并尝试引导。  这可能是您看到的:ROM 在 NAND 引导中挂起且从不转到 USB 引导。

    确保从 NAND 中擦除 SPL 时、NAND 中的第一个块被全部擦除至 F。

    此致、

    詹姆斯

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

    JJD、您好!

    "ROM 在 NAND 引导中挂起"的评论是合乎逻辑的、但我应该多解释一下这个问题。 我尽量在上面解释、但我想您错过了。

    同时将 Sysboot 引脚设置为"10010b"、即:NAND、USB0、UART0。
    在我擦除 NAND 后,我正在等待 RNDIS,没有 RNDIS。
    但我的终端屏幕是"CCC"。 这意味着 UART0引导已就绪。
    我通过 X-modem 发送 SPL , u-boot.img 通过 Y-modem。 然后 U-boot 会启动。 然后我可以通过 TFTP (Uniflash)从 RNDIS 下载 zImage 和 DTB。

    那么你就会测试一下,因为如果 ROM 挂起在 NAND 中,它不能跳过 USB0(RNDIS )到 UART0对吗? 这意味着它没有挂起。
    那么、如果我们遇到 USB0 (RNDIS)问题、 如何在 UART0引导后下载 zImage?

    我很困惑。

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

    好的、是的、我误解了。  因此您描述的内容似乎是 ROM 先尝试 NAND 并失败、然后尝试 USB0和失败、然后尝试 UART0。   

    不知道为什么 USB0在此情况下会发生故障、但其他引导序列没问题。  在看到"CCCCCCCCCCCC"之前是否有长暂停(例如几秒)?  枚举超时应为3秒左右、因此应该很明显。  这至少会告诉我们 ROM 正在尝试 USB0启动、但失败了、而不仅仅是跳过它。

    在 ROM 尝试引导 USB0时是否已连接电缆并提供5V 电压(检查电路板上的 VBUS)?  您是否能够检测任何枚举尝试(不确定您是否具有路径中的 USB 逻辑分析仪功能)?    

    您是否对电路板具有 JTAG 访问权限?  如果是、您可以在每个引导场景后在0x44E10040记录 CONTROL_STATUS 寄存器的值吗?

    您能否发送所有 sysboot 信号的原理图部分?

    很长一段时间、但您可以尝试不同的 USB 电缆吗?

    此致、

    詹姆斯

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

    除了 James 要求的功能外、我还要查看原理图中的 USB0部分、从 AM335x USB0引脚到 USB 连接器。

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

    JJD、您好!

    首先、这不是电缆问题、因为如果我将另一个板连接到该 USB 电缆。 它从 USB (RNDIS)引导开始。

    在我的测试中、我等待 ROM 启动尝试~10分钟。 因此没有任何变化。 (当引导顺序 USB->NAND->UART 时、如果 nand 为空、我需要等待一段时间才能看到"CCC"。 我知道我需要等待一点)

    我有 JTAG、但我不使用您的 SDK。 作为最后一种解决方案、我可以通过 JTAG 进行检查。

    sysboot 信号与 BBB 相同;原理图部分位于此处;


    我们的问题是、这块电路板将是首个大规模生产的原型。 因此我们没有放置任何开关。
    对于 Sysboot 引脚的任何更改、我们会焊接并更换某些电阻器。 因此、新测试对我来说意味着一项凌乱的工作。

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

    尊敬的 Gokhan:

    是的、明白现在很麻烦

    还提供了原理图的 USB 部分、如 Bin 所述。

    如果您可以连接 JTAG、我们或许能够获得更多关于在 NAND 引导后 USB 引导失败原因的线索。  如果您正在等待一段时间来查看'CCCCCCCCCC'、似乎正在尝试 USB0引导。

    您碰巧有一个 USB 协议分析器吗?

    此致、

    詹姆斯

      

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

    JJD、您好;
    我之前讲过、我们的设计基于 BBB。  USB 引脚直接连接到 AM3358 soc。 我不知道您在 USB 连接处会看到什么。 没有什么特别的。  
    这是 USB 部分。

    我将尝试连接 JTAG。 (当我连接应该执行的操作、应该观察哪些寄存器时)

    我们有逻辑协议分析器。 我们可以对 USB 进行解码。 表示为类似的问题。 会怎么样? 我应该将什么视为数据包? 是否有任何特殊数据包、或者是否存在任何 USB 数据?

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

    尊敬的 Gokhan:

    原理图中的 J1和 U1是什么?

    我想看看原理图中从 AM335x USB0引脚到 USB 连接器的整个 USB0部分。

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

    U1是 PMIC TPS65217B。
    J1是连接器。
    从 SYS_5V 导出的 USB0_5V 和 USB1_5V。
    USB 数据引脚通过铁氧体并直接进入 AM335X 引脚。

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

    Gokhan、您可以用 USB 跟踪成功的 USB (RNDIS)引导与失败的引导、然后发布跟踪吗?   

    您的原理图与 BBB 不完全相同。  BBB 未连接 USB_DRVVBUS、但原理图上有一条线迹(这与什么相连?)。  另外、在您提供的原理图片段中、我无法判断 USB0_ID 是否与其他内容相连。

    我想当尝试外设模式引导时、USB 控制器/PHY 可能未处于正确的状态

    如果 JTAG 正常工作、在引导失败并通过的情况下、首先转储以下寄存器:0x44E10040

    此致、

    詹姆斯

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

    您好、James:

    新年过后回到这个话题。

    当客户尝试 Falcon 模式时 、他们会 对 NAND 存储器重新编程 几次 、并多次更改引导模式。 这表明、当 它们擦除 NAND 的其他部分时、有时会影响 SPL 部分。 因此、现在他们的卡无法从 NAND.spl 唤醒。 这可能是个问题。

     

    TI 建议说、应将4个 SPL 区域作为备用区域。 例如:

     

    是否建议将 NAND 存储器更改为 eMMC 存储器?


    1.这是配置:

    CONFIG_SPL_OS_BOOT=y 由内核设置

    CONFIG_CMD_SPL_NAND_OFS=0x005e0000
    CONFIG_SPL_PAYLOAD_args_ADDR=0x80000100

    CONFIG_SYS_NAND_SPL_kernel_offs=0x000c0000

    CONFIG_CMD_SPL_NAND_OFS=0x005e0000

    CONFIG_CMD_SPL_WRITE_SIZE=0x20000

    # CONFIG_SPL_SIZE_LIMIT=0x10000 (这导致了一个问题,因为大小)

    2.接下来、他们创建了一个 uImage 文件
    已刷写到 NAND。
    4.使用以下命令:


    NAND 读取${fdtaddr}NAN.dtb

    NAND 读取${loadaddr}NAN.zImage  (uImage 放置在该区域)
    SPL 导出 FDT ${loadaddr}-${fdtaddr}

    NAND 擦除.part NAND.flags

    NAND 写入${fdtaddr}NAN.flags

    setenv boot_os 1
    萨维恩夫


    不会发生任何情况。

    第一个问题:在 创建 uImage 时、是否应该有特殊地址? (例如:make LOADADDDR=80008000 uImage)
    第二个问题: 他们应该使用 ATAG 还是 FTD ? ( SPL 导出标签0x82000000 SPL 导出 FDT ${loadaddr}-${fdtaddr} )
    第三个问题:uboot config 参数看起来是否正常?


    谢谢!

    丹尼尔

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

    Daniel、您好!
    我随附适用于 TI AM335x GP EVM 上的 Linux SDK 7.3的 nand 闪存/引导日志、其中 u-boot 和内核二进制文件是 SDK 7.3中的默认日志、供您参考。
    - am3_7.3_nand_linux_flash.txt : NAND 闪存
    - am3_7.3_nand_linux_boot.txt : NAND 引导
    此致!
    -洪

    e2e.ti.com/.../0434.am3_5F00_7.3_5F00_nand_5F00_linux_5F00_flash.txt

    e2e.ti.com/.../8875.am3_5F00_7.3_5F00_nand_5F00_linux_5F00_boot.txt

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

    您好、Hong:

    您的答案是什么?  

    我们已经将代码闪存为 nand。
    我们就可以从 nand 引导板了。

    我们的第一个问题是 NAND 擦除和更换一个新代码后的奇怪的启动问题。 (此错误并非常规故障,在某些电路板上偶尔发生。)
    第二丹尼尔增加了我们新的猎鹰靴问题。

    您的答案与两者不匹配。  

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

    您好,Gokhan,
    我们将在节假日后赶上 e2e 积压。
    根据丹尼尔的最新文章,我认为板是从 nand 启动砖。 这就是为什么"为了便于您参考、我附加了在 TI AM335x GP EVM 上使用 Linux SDK 7.3的正常工作的闪存/引导日志"。

    回到你原来的帖子中的问题。 对于非工作用例、
    -"连接"JTAG 到运行板,其中"连接"是非插入到运行板或没有硬件重置
    -转储并检查由片上 bootrom 代码填充的跟踪矢量。

    请参阅 AM335x TRM 用于跟踪矢量地址、以及

    此致!
    -洪

    以了解跟踪矢量描述。

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

    JJD、您好!

    正如我以前告诉过你的那样,这个问题并不是毫无意识地发生的。 今天,我终于有相同的问题,我的卡。

    我的引导引脚[4:0]通过 上拉和下拉寄存器设置为"11100"。 这对我们来说是可以的。
    11100b MMC1   MMC0 UART0 USB0           。
    我的系统没有 MMC。生产技术人员应从终端看到 CCC、以了解处理器已启动。 其次、应该通过 USB-RNDIS (tftp)对 NAND 进行编程。

    问题是:我们可以看到"CCC"字符,在该网络设备出现在网络上后,没有触发 UNIFLASH RNDIS。 除了 CCC 外、我们看不到任何内容。我已连接 JTAG (Blackhawk XDS100v2)。 我已经阅读了 0x44E10040上的 CONTROL_STATUS 寄存器:值为0x0040031C 。 处理器在该阶段被占用。

    将其他卡连接到同一系统时。 由 UNIFLASH-RNDIS 编程的卡。

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

    在失败的板上、Gokhan 同样可以转储0x4030CE40-0x4030CE64处的跟踪向量。  这将为我们提供有关试图执行哪种引导模式的提示。   

    我还建议使用协议分析器。  由于这是间歇性发生的、因此可能存在一些硬件问题。  通过比较好与坏的分析器跟踪、可以了解 UNIFLASH 失败的原因

    此致、

    詹姆斯