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.

[参考译文] PROCESSOR-SDK-J7200:使用自定义 R5F 固件时出现引导故障

Guru**** 2419530 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1528974/processor-sdk-j7200-boot-failure-with-custom-r5f-firmware

器件型号:PROCESSOR-SDK-J7200

工具/软件:

尊敬的 TI:

我有一个 J7200 评估板、希望与在 MAIN R5F 内核 Throw U-Boot 上运行的自定义固件并行引导 Linux。
我们将 Linux 和 U-Boot 与 J7200-Linux-SDK 中的 SPL 配合使用、版本为 10.01.08.01。
MAIN R5F 内核的固件使用 J7200 PROCESSOR-SDK-RTOS 版本开发  10.01.00.04。

为了通过 RemoteProc 启动固件、我将其放置在/usr/lib/firmware/customFwDir 下的根文件系统中、并创建了一个 SYM-LINK “j7200-main-R5f0_1-fw"。“。

我面临的缝隙问题是:
 * U-Boot 正在尝试启动内核,但根文件系统无法从 SD 卡挂载。

请参阅以下日志文件:

[    2.978830] 7 fixed-partitions partitions found on MTD device 47040000.spi.0
[    2.978835] Creating 7 MTD partitions on "47040000.spi.0":
[    2.978839] 0x000000000000-0x000000100000 : "ospi.tiboot3"
[    2.979633] 0x000000100000-0x000000300000 : "ospi.tispl"
[    2.980363] 0x000000300000-0x000000700000 : "ospi.u-boot"
[    2.981026] 0x000000700000-0x000000740000 : "ospi.env"
[    2.981679] 0x000000740000-0x000000780000 : "ospi.env.backup"
[    2.982334] 0x000000800000-0x000003fc0000 : "ospi.rootfs"
[    2.982974] 0x000003fc0000-0x000004000000 : "ospi.phypattern"
[    2.988181] davinci_mdio 46000f00.mdio: Configuring MDIO in manual mode
[    3.022230] davinci_mdio 46000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
[    3.024718] davinci_mdio 46000f00.mdio: phy[0]: device 46000f00.mdio:00, driver TI DP83867
[    3.024740] am65-cpsw-nuss 46000000.ethernet: initializing am65 cpsw nuss version 0x6BA02102, cpsw version 0x6BA82102 Ports: 2 quirks:00000000
[    3.024855] am65-cpsw-nuss 46000000.ethernet: initialized cpsw ale version 1.4
[    3.024858] am65-cpsw-nuss 46000000.ethernet: ALE Table size 64
[    3.025115] pps pps0: new PPS source ptp1
[    3.025283] am65-cpsw-nuss 46000000.ethernet: CPTS ver 0x4e8a010b, freq:500000000, add_val:1 pps:1
[    3.188142] am65-cpsw-nuss 46000000.ethernet: set new flow-id-base 48
[    3.192909] debugfs: Directory 'pd:49' with parent 'pm_genpd' already present!
[    3.194502] debugfs: Directory 'pd:35' with parent 'pm_genpd' already present!
[    3.194938] clk: Disabling unused clocks
[    3.208629] ALSA device list:
[    3.208634]   No soundcards found.
[    3.238092] Waiting for root device PARTUUID=cb854782-02...
[   13.282548] platform 4fb0000.mmc: deferred probe pending
[   33.250244] vdd_mmc1: disabling


与 MAIN R5F 内核上没有自定义固件的正常启动相比:

[    3.059535] 7 fixed-partitions partitions found on MTD device 47040000.spi.0
[    3.059541] Creating 7 MTD partitions on "47040000.spi.0":
[    3.059545] 0x000000000000-0x000000100000 : "ospi.tiboot3"
[    3.060323] 0x000000100000-0x000000300000 : "ospi.tispl"
[    3.060972] 0x000000300000-0x000000700000 : "ospi.u-boot"
[    3.061679] 0x000000700000-0x000000740000 : "ospi.env"
[    3.062331] 0x000000740000-0x000000780000 : "ospi.env.backup"
[    3.062970] 0x000000800000-0x000003fc0000 : "ospi.rootfs"
[    3.063607] 0x000003fc0000-0x000004000000 : "ospi.phypattern"
[    3.068827] davinci_mdio 46000f00.mdio: Configuring MDIO in manual mode
[    3.102920] davinci_mdio 46000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
[    3.105450] davinci_mdio 46000f00.mdio: phy[0]: device 46000f00.mdio:00, driver TI DP83867
[    3.105472] am65-cpsw-nuss 46000000.ethernet: initializing am65 cpsw nuss version 0x6BA02102, cpsw version 0x6BA82102 Ports: 2 quirks:00000000
[    3.105588] am65-cpsw-nuss 46000000.ethernet: initialized cpsw ale version 1.4
[    3.105592] am65-cpsw-nuss 46000000.ethernet: ALE Table size 64
[    3.106018] pps pps0: new PPS source ptp1
[    3.106179] am65-cpsw-nuss 46000000.ethernet: CPTS ver 0x4e8a010b, freq:500000000, add_val:1 pps:1
[    3.268920] am65-cpsw-nuss 46000000.ethernet: set new flow-id-base 48
[    3.273990] debugfs: Directory 'pd:49' with parent 'pm_genpd' already present!
[    3.275522] debugfs: Directory 'pd:35' with parent 'pm_genpd' already present!
[    3.276378] mmc1: CQHCI version 5.10
[    3.276796] clk: Disabling unused clocks
[    3.290469] ALSA device list:
[    3.290474]   No soundcards found.
[    3.317836] mmc1: SDHCI controller on 4fb0000.mmc [4fb0000.mmc] using ADMA 64-bit
[    3.329898] Waiting for root device PARTUUID=cb854782-02...
[    3.369330] mmc1: new ultra high speed SDR104 SDHC card at address aaaa
[    3.369760] mmcblk1: mmc1:aaaa SK32G 29.7 GiB
[    3.371705]  mmcblk1: p1 p2
[    3.657833] EXT4-fs (mmcblk1p2): recovery complete
[    3.659975] EXT4-fs (mmcblk1p2): mounted filesystem ed7a60d3-4216-44b9-b4b1-3944e6c1f045 r/w with ordered data mode. Quota mode: none.
[    3.660018] VFS: Mounted root (ext4 filesystem) on device 179:98.
[    3.660679] devtmpfs: mounted
[    3.662050] Freeing unused kernel memory: 2048K
[    3.662115] Run /sbin/init as init process


您能给我一些提示、说明哪里 可以找到我的故障?

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

    您好:

    我有几个问题,然后我可以评论

    1) 您是否使用默认固件映像创建了 SD 卡? 、在此期间、您是否遇到过此问题? 现在、创建自定义固件后、您会看到这种情况吗?

    2) 在 SD 卡的引导分区中,您将有 doprocboot=1 这意味着远程内核将在 uboot 阶段加载。 如果您要与 Linux 并行执行、则 doprocboot 必须设置为 0

    3) 您提到您更改了 MCU2_1 核心的链接并面临问题,您是否更改了其他核心并面临了问题?

    请分享您对上述问题的意见、以便我能更好地回答。

    此致

    Tarun Mukesh

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

    您好:

    关于您的问题:
    1) 我们 不使用自定义固件映像,但我也复制了预编译映像 tisdk-default-image 的行为。

    2) 行为可以被识别位 doprocboot=1 和 doprocboot=0

    3) 是的。 我已经为另一个 main-R5f 核心 0(以太网固件通常在运行)编译了自定义 R5F 固件、并更改了应加载此固件的链接、但也看到了相同的行为。

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

    您好:

    我怀疑 MCU2_0 在锁定步进模式下运行、这会禁用 MCU2_1 内核的可用性。

    您能从一开始就把完整的日志分享给我吗? 您使用的是 SPL 或 SBL 引导流程?

    此致

    Tarun Mukesh

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

    您好、Frank、

    我不认为 MCU2_0 在锁定步进模式下运行、因为在该内核上当前执行了 ti-eth-FW、如果我在 MCU2_1 上执行提供的示例 ipc_echo_test_mcu2_1_release_strip.xer5f、它可以正常工作。
    [/报价]

    好的、那么您的自定义固件是什么? 自定义固件内存映射是否与 Linux 中的内存映射匹配?

    正如我之前所说的,如果 dorprocboot 为 1,则在 uboot 阶段本身加载所有远程进程。   

    将加载更高版本的 Linux。

    要通过 RemoteProc 启动固件、我已将其放置在/usr/lib/firmware/customFwDir 下的根文件系统中、并创建了一个 sym-link “j7200-main-R5f0_1-fw"。“。

    引导后、提供“ls -l /lib/firmware 命令、该命令会指示您的内核是否正确软链接。

    此致

    Tarun Mukesh

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

    您好:

    自定义固件当前会初始化 IPC 驱动程序、并通过检查 IPC_isRemoteReady (IPC_MPU1_0) 等待 Linux vdev 准备就绪。
    更重要的是、由于 Linux 的引导问题、固件未运行。

    自定义固件的存储器映射与 MCU2_1 的 ti 示例 ipc_rtos_echo_test 相同、 应与 Linux 的存储器映射匹配。

    正如我之前说的,如果 dorprocboot 为 1 ,在 uboot 阶段本身加载所有远程进程。   [/报价]

    我已在 uboot 中检查、变量 dorprocboot 未定义。 如果我在启动前将变量定义为 1 或 0、情况就不会改变。

    启动后、提供“ls -l /lib/firmware “命令、该命令指示您的内核是否正确软链接。

    下面是我的固件映像链接:

    lrwxrwxrwx 1 root root      69 Mär  9  2018 j7200-main-r5f0_0-fw -> /usr/lib/firmware/ti-eth/j7200/app_remoteswitchcfg_server_strip.xer5f
    lrwxrwxrwx 1 root root      76 Mär  9  2018 j7200-main-r5f0_0-fw-sec -> /usr/lib/firmware/ti-eth/j7200/app_remoteswitchcfg_server_strip.xer5f.signed
    lrwxrwxrwx 1 root root      41 Jun 23 08:45 j7200-main-r5f0_1-fw -> /usr/lib/firmware/j7200/main-r5f-fw.xer5f
    lrwxrwxrwx 1 root root      71 Mär  9  2018 j7200-main-r5f0_1-fw__ -> /usr/lib/firmware/ti-ipc/j7200/ipc_echo_test_mcu2_1_release_strip.xer5f
    lrwxrwxrwx 1 root root      78 Mär  9  2018 j7200-main-r5f0_1-fw-sec__ -> /usr/lib/firmware/ti-ipc/j7200/ipc_echo_test_mcu2_1_release_strip.xer5f.signed
    lrwxrwxrwx 1 root root      71 Mär  9  2018 j7200-mcu-r5f0_1-fw -> /usr/lib/firmware/ti-ipc/j7200/ipc_echo_test_mcu1_1_release_strip.xer5f
    lrwxrwxrwx 1 root root      78 Mär  9  2018 j7200-mcu-r5f0_1-fw-sec -> /usr/lib/firmware/ti-ipc/j7200/ipc_echo_test_mcu1_1_release_strip.xer5f.signed
    drwxr-xr-x 2 root root    4096 Jun 23 08:43 j7200
    drwxr-xr-x 3 root root    4096 Mär  9  2018 ti-eth
    drwxr-xr-x 3 root root    4096 Mär  9  2018 ti-ipc

    我的自定义固件已加载并正确启动、因为我可以连接调试器并看到它正在上述等待循环中等待。

    此致
    Frank

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

    您好:

    要通过 RemoteProc 启动固件、我已将其放置在/usr/lib/firmware/customFwDir 下的根文件系统中、并创建了一个 sym-link “j7200-main-R5f0_1-fw"。“。

    j7200-main-R5f0_1-fw ->/usr/lib/firmware/j7200/main-r5f-fw.xer5f  

    这与您之前所说的内容有所偏差。 此处未显示定制 FW Dir 的路径。  

    j7200-main-R5f0_1-fw__->/usr/lib/firmware/ti-ipc/j7200/ipc_echo_test_mcu2_1_release_strip.xer5f

    如果您使用的是客户固件、则不需要此冗余。

    I have checked in uboot 且变量 dorprocboot not defined. 如果我在启动前将变量定义为 1 或 0、情况就不会改变。

    您可以在 uboot 阶段停止并 给出“printenv dorprocboot“

    您可以进一步将其设置为“setenv dorprocboot 0“以在 Linux 阶段引导。

    此致

    Tarun Mukesh

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

    非常感谢。
    设置 doproboot=0 解决了该问题。

    您能否解释一下、为什么只能在 Linux 阶段启动自定义固件、并导致 上面显示的错误?

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

    您好:

    我将离开、直至星期一。 请预计响应会延迟。

    此致  

    Tarun Mukesh  

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

    您好:

    它可能处于 uboot 阶段、您保留的固件未被检测到、否则应该已发生。 即使 Linux 加载了远程内核、也不会出现问题。

    此致

    Tarun Mukesh