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.

[参考译文] AM620-Q1:加密 M4 FW (am62-mcu-m4f0_0-fw) 是否支持在安全启动后从仅 MCU 模式唤醒 LPM?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1566053/am620-q1-does-encryption-m4-fw-am62-mcu-m4f0_0-fw-support-lpm-wakeup-from-mcu-only-mode-after-secure-boot

器件型号: AM620-Q1

工具/软件:

尊敬的专家:

这是本主题的扩展讨论。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1562565/am620-q1-how-to-signed-m4-fw-am62-mcu-m4f0_0-fw-for-hs-se-device?tisearch=e2e-sitesearch&keymatch=%252525252520user%25252525253A533255#

客户 发现 从仅 MCU 模式唤醒 LPM、该模式在安全启动后不起作用(唤醒)。

即使我们尝试 对 M4 FW 进行加密、但仍然无法正常工作。

我已经确定“无安全“软件运行良好、但问题出在安全软件上。

唤醒源可以是一些 GPIO。  

我没有调试想法、您能给我们一些调试注释吗?

谢谢你。

Gibbs  

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

    嗨、Gibbs、

    我不熟悉安全启动引导流程。 请允许我花些时间来研究一下、然后由星期四回复您。

    谢谢、

    Anshu

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

    嗨、Gibbs、

    在低功耗模式下使用安全启动不会出现任何问题。

    请回答以下问题:

    • 是使用 SPL 引导还是 SBL 引导? SBL 引导不支持低功耗模式。
    • 深度睡眠是否正常工作? 如果深度睡眠正常工作、则说明 MCU 固件存在问题。
    • 该观察是在 TI EVM 还是仅在定制硬件上进行?
    • 在主机上运行“mkimage -l tispl.bin“以进行引导二进制文件、确保 TIFS 存根存在。
    • 它是完全工作还是只是在多次迭代之后工作?

    谢谢、

    Anshu

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

    你好 Anshu

    谢谢您的答复、

    客户的反馈、我会先在这里发帖。

    我会同时进行研究/调试。

    所有回复都基于加密的 M4 FW。

    Q1/A1:您使用的是 SPL 引导还是 SBL 引导?  

    [AN] SPL

    Q2/A2:是否需要深度睡眠? 如果深度睡眠正常工作、则说明 MCU 固件存在问题。

    可以使用【应答】深度睡眠、但也不会被 GPIO 触发器唤醒。

    Q3/A3:该观察是在 TI EVM 上进行还是仅在定制硬件上进行?

    [AN] EVM 和定制都存在此问题。

    Q4/A4:在主机上为引导二进制文件运行“mkimage -l tispl.bin“以确保 TIFS 存根存在。

    【应答】

    •	Run 'mkimage -l tispl.bin' on the host machine for the boot binary to make sure the TIFS stub exists.
    o	(
    FIT description: Configuration to load ATF and SPL
    Created:         Thu Sep 11 15:41:50 2025
     Image 0 (atf)
      Description:  ARM Trusted Firmware
      Created:      Thu Sep 11 15:41:50 2025
      Type:         Firmware
      Compression:  uncompressed
      Data Size:    54692 Bytes = 53.41 KiB = 0.05 MiB
      Architecture: AArch64
      OS:           ARM Trusted Firmware
      Load Address: 0x80000000
     Image 1 (tee)
      Description:  OP-TEE
      Created:      Thu Sep 11 15:41:50 2025
      Type:         Trusted Execution Environment Image
      Compression:  uncompressed
      Data Size:    480268 Bytes = 469.01 KiB = 0.46 MiB
     Image 2 (dm)
      Description:  DM binary
      Created:      Thu Sep 11 15:41:50 2025
      Type:         Firmware
      Compression:  uncompressed
      Data Size:    194868 Bytes = 190.30 KiB = 0.19 MiB
      Architecture: Unknown Architecture
      OS:           Unknown OS
      Load Address: 0x89000000
     Image 3 (spl)
      Description:  SPL (64-bit)
      Created:      Thu Sep 11 15:41:50 2025
      Type:         Standalone Program
      Compression:  uncompressed
      Data Size:    405908 Bytes = 396.39 KiB = 0.39 MiB
      Architecture: AArch64
      Load Address: 0x80080000
      Entry Point:  0x80080000
     Image 4 (tifsstub-hs)
      Description:  TIFSSTUB
      Created:      Thu Sep 11 15:41:50 2025
      Type:         Firmware
      Compression:  uncompressed
      Data Size:    32133 Bytes = 31.38 KiB = 0.03 MiB
      Architecture: Unknown Architecture
      OS:           Unknown OS
      Load Address: 0x9dc00000
     Image 5 (tifsstub-fs)
      Description:  TIFSSTUB
      Created:      Thu Sep 11 15:41:50 2025
      Type:         Firmware
      Compression:  uncompressed
      Data Size:    30387 Bytes = 29.67 KiB = 0.03 MiB
      Architecture: Unknown Architecture
      OS:           Unknown OS
      Load Address: 0x9dc00000
     Image 6 (tifsstub-gp)
      Description:  TIFSSTUB
      Created:      Thu Sep 11 15:41:50 2025
      Type:         Firmware
      Compression:  uncompressed
      Data Size:    29643 Bytes = 28.95 KiB = 0.03 MiB
      Architecture: Unknown Architecture
      OS:           Unknown OS
      Load Address: 0x9dc00000
     Image 7 (fdt-0)
      Description:  k3-am625-sk
      Created:      Thu Sep 11 15:41:50 2025
      Type:         Flat Device Tree
      Compression:  uncompressed
      Data Size:    19168 Bytes = 18.72 KiB = 0.02 MiB
      Architecture: ARM
     Default Configuration: 'conf-0'
     Configuration 0 (conf-0)
      Description:  k3-am625-sk
      Kernel:       unavailable
      Firmware:     atf
      FDT:          fdt-0
      Loadables:    tee
                    tifsstub-hs
                    tifsstub-fs
                    tifsstub-gp
                    dm
                    spl
    )
    

    Q5:A5 :它完全或只是在多次迭代之后工作?

    【回答】它根本不起作用。

    非常感谢

    Gibbs

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

    嗨、Gibbs、

    感谢您的更新。 我最初认为在暂停序列期间出现了错误。  

    能解释一下 MCU 固件的功能吗? 是否对默认代码进行了任何更改?

    此外、请分享失败的暂停/恢复测试的 Linux 和 MCU 日志。

    谢谢、

    Anshu

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

    嗨、Gibbs、

    我本周就不在办公室了。 我 在下周晚些时候回到办公室后会再看这件事。

    谢谢、

    Anshu

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

    嗨、Gibbs、

    首先、我们不支持同时使用不同的 SDK 版本。 这不是软件开发团队已经过测试和验证的用例。 因此、我们不知道预期的行为。

    它完全可以协同工作、但没有经过 TI 测试。

    其次、Linux SDK 10.1 和 11.1 使用不同的内核版本:分别为 6.6 和 6.12。 内核更改是一项重大更改、包括整个 Linux 社区的更改。

     https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/10_01_10_04/exports/docs/devices/AM62X/linux/Release_Specific_Release_Notes.html#release-10-01-10-04

    https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/11_01_05_03/exports/docs/devices/AM62X/linux/Release_Specific_Release_Notes.html#release-11-01-05-03

    第三、对于安全启动、什么是加载 MCU 内核和固件? 是使用引导加载程序还是 Linux 执行此操作?

    此致、

    Anshu

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

    嗨、Anshu

    很抱歉、因为我的个人休假超过 12 天、所以答复迟来了。

    首先澄清以下内容、

    我认为客户最初使用“Linux SDK 10.01 + MCU 10.00“进行带唤醒触发的安全启动、但他们发现唤醒失败。

    他们尝试使用不同的软件 SDK 组合来帮助我们分析问题。

    根据之前的日志、我认为 引导加载程序中已加载 MCU 固件

    他们只发现  “Linux SDK 11.01 + MCU 11.00“和  “Linux SDK 11.01 + MCU 10.00“ 安全启动(唤醒触发成功)。

    您是否可以提供 “标准测试步骤“、其中包括带唤醒触发器的安全启动?

    谢谢你。

    Gibbs

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

    嗨、Gibbs、

    您能否确认 SoC 已转换为 HS-SE? 并非您提供的所有引导日志都显示 HS-SE。

    请参阅此处的器件类型: software-dl.ti.com/.../、Foundational_Components_Migration_Guide

    此致、

    Anshu

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

    嗨、Gibbs、

    根据先前的日志、我认为 MCU FW 会在引导加载程序中加载

    如果 MCU 固件由引导加载程序加载、则低功耗模式将不起作用、因为它需要 Linux 来启动远程内核。

    此致、

    Anshu

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

    尊敬的专家:

     1.    在我们的测试中、MCU 固件由内核模块加载。  请查看我日志的简短摘录。

    [   10.676108] remoteproc remoteproc0: 5000000.m4fss is available
    [   10.689092] platform 78000000.r5f: R5F core may have been powered on by a different host, programmed state (0) != actual state (1)
    [   10.701538] platform 78000000.r5f: configured R5F for IPC-only mode
    [   10.702036] remoteproc remoteproc0: powering up 5000000.m4fss
    [   10.704129] m_can_platform 4e18000.can: m_can device registered (irq=0, version=32)
    [   10.708609] platform 78000000.r5f: assigned reserved memory node r5f-dma-memory@9da00000
    [   10.713941] remoteproc remoteproc0: Booting fw image am62-mcu-m4f0_0-fw, size 483756
    [   10.723289] remoteproc remoteproc1: 78000000.r5f is available
    [   10.744005] remoteproc remoteproc1: attaching to 78000000.r5f
    [   10.750764] rproc-virtio rproc-virtio.4.auto: assigned reserved memory node r5f-dma-memory@9da00000
    [   10.761986] rproc-virtio rproc-virtio.5.auto: assigned reserved memory node m4f-dma-memory@9cb00000
    [   10.773030] virtio_rpmsg_bus virtio1: rpmsg host is online
    [   10.774202] virtio_rpmsg_bus virtio1: creating channel ti.ipc4.ping-pong addr 0xd
    [   10.777486] virtio_rpmsg_bus virtio0: rpmsg host is online
    [   10.777543] rproc-virtio rproc-virtio.4.auto: registered virtio0 (type 7)
    [   10.777553] remoteproc remoteproc1: remote processor 78000000.r5f is now attached
    [   10.788696] rproc-virtio rproc-virtio.5.auto: registered virtio1 (type 7)
    [   10.792107] virtio_rpmsg_bus virtio1: creating channel rpmsg_chrdev addr 0xe
    [   10.798751] remoteproc remoteproc0: remote processor 5000000.m4fss is now up

     2.我们确认 SOC 已转换为 HS-SE,请看一下我的日志中的简短摘录。

    如果未转换、它将显示“ SoC:  AM62X SR1.0 HS-SOC FS

    U-Boot 2025.01-00527-gd2a72467939e (Jul 01 2025 - 21:23:47 +0000)
    
    SoC:   AM62X SR1.0 HS-SE
    Model: Texas Instruments AM62x LP SK
    DRAM:  2 GiB
    Core:  89 devices, 32 uclasses, devicetree: separate
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from nowhere... OK
    In:    serial
    Out:   serial

      顺便说一句,我们也通过引导 加载程序测试方式,它的操作就像你所说的“如果 MCU 固件由引导加载程序加载,那么低功耗模式将不起作用“。  

    BR

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

    您好:

    如果 Linux 正在启动 MCU FW、则这应该可以。

    如果加密的 MCU 固件能够与 Linux 内核正确通信、还需要考虑另一个问题。 运行 rpmsg userpsace 命令的结果是什么?

    https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/latest/exports/docs/linux/Foundational_Components_ ipc62x.html#rpmsg-examples

    此致、

    Anshu

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

    尊敬的先生:

     “如果 Linux 正在启动 MCU FW、则这样应该可以。“   

    但这不是正常的 在版本中 SDK10 相同的测试,相同的条件,只有 SDK 版本刚刚被更改。

    我们希望解决启用安全启动导致设备在休眠后无法唤醒的问题。

    此外、加密的 MCU 固件无法使用 Linux 进行引导;只能通过引导加载程序进行引导。 但是、您还提到引导加载程序不支持 LPM。 因此、请记住、 我们使用 非粘结 MCU 并通过 Linux 引导它。  

    如果 SDK10 可以正常使用、请提供准确且详细的指导文档或手册、我将非常感激

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

    嗨、Anshu

    请查看该主题、我们进行了一些讨论。

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1574119/am620-q1-concept-clarification-for-encryption-signed-m4-firmware-boot-loads/6064006?tisearch=e2e-sitesearch&keymatch=%25252525252520user%2525252525253A533255#

    您能帮我们仔细检查一下吗?

    我们可以得出结论、这个线程是“加密“MCU FW 仅支持由引导加载程序加载、因此我们不使用 Linux 进行 “加密“MCU FW 引导(加载)。

    我们发现   MCU LPM 中“加密的“MCU 固件存在唤醒问题、似乎只会在 SDK 10.0 中发生唤醒问题。 (&11.0)、包括 Linux&MCU SDK

    如果它适用于“加密“MCU  固件、则无论您使用何种 SDK 版本、任何内容都没有问题。  

    因此、我们需要知道 SDK 10.x/11.1 之间关于 LPM、加密 MCU 固件等的区别

    您能给我们一些评论吗?

    嗨、 Xiao-an。

    这是一个双重检查。

    据我所知、如果我们使用 SDK11.x、一切都好、不是吗?

    谢谢你。

    Gibbs

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

    嗨、Gibbs:
      > 据我所知、如果我们使用 SDK11.x、一切都正常、不是吗?

    不是 SDK 11.00.09.04、只有 SDK 11.01.05.03 可以正常。  

    BR

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

    嗨、Gibbs、

    我需要进一步研究这一点。 请留出一些时间进行回复。

    谢谢、

    Anshu

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

    嗨、Gibbs、

    我们能够在 AM62x HS-SE 器件上的 SDK 11.1 上进入和退出仅 MCU 模式:

    U-Boot SPL 2025.01-00527-gd2a72467939e (Jul 01 2025 - 21:23:47 +0000)
    SYSFW ABI: 4.0 (firmware rev 0x000b '11.1.2--v11.01.02 (Fancy Rat)')
    Changed A53 CPU frequency to 1250000000Hz (T grade) in DT
    SPL initial stack usage: 13392 bytes
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    Authentication passed
    Authentication passed
    Authentication passed
    Starting ATF on ARM64 core...
    
    NOTICE:  BL31: v2.13.0(release):v2.13.0-240-gd90bb650fe-dirty
    NOTICE:  BL31: Built : 21:37:18, Jun 23 2025
    
    U-Boot SPL 2025.01-00527-gd2a72467939e (Jul 01 2025 - 21:23:47 +0000)
    SYSFW ABI: 4.0 (firmware rev 0x000b '11.1.2--v11.01.02 (Fancy Rat)')
    SPL initial stack usage: 2032 bytes
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    
    
    U-Boot 2025.01-00527-gd2a72467939e (Jul 01 2025 - 21:23:47 +0000)
    
    SoC:   AM62X SR1.0 HS-SE
    Model: Texas Instruments AM625 SK
    DRAM:  2 GiB
    Core:  83 devices, 32 uclasses, devicetree: separate
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from nowhere... OK
    In:    serial
    Out:   serial
    Err:   serial
    Net:   eth0: ethernet@8000000port@1
    
    Hit any key to stop autoboot:  0 
    ...
    root@am62xx-evm:~# uname -a
    Linux am62xx-evm 6.12.35-ti-00915-ge3e551586dfa #1 SMP PREEMPT Tue Jul  1 21:17:52 UTC 2025 aarch64 GNU/Linux
    root@am62xx-evm:~# echo 100000 > /sys/devices/system/cpu/cpu0/power/pm_qos_resume_latency_us
    root@am62xx-evm:~# rtcwake -m mem -s 10
    rtcwake: assuming RTC uses UTC ...
    rtcwake: wakeup from "mem" using /dev/rtc0 at Thu Jan  1 00:23:34 1970
    [ 1364.861432] PM: suspend entry (deep)
    [ 1364.865200] Filesystems sync: 0.000 seconds
    [ 1364.883042] Freezing user space processes
    [ 1364.889265] Freezing user space processes completed (elapsed 0.002 seconds)
    [ 1364.896270] OOM killer disabled.
    [ 1364.899505] Freezing remaining freezable tasks
    [ 1364.905171] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
    [ 1364.912583] printk: Suspending console(s) (use no_console_suspend to debug)
    [ 1364.961580] Disabling non-boot CPUs ...
    [ 1364.964371] psci: CPU3 killed (polled 0 ms)
    [ 1364.968795] psci: CPU2 killed (polled 0 ms)
    [ 1364.972206] psci: CPU1 killed (polled 0 ms)
    [ 1364.973848] Enabling non-boot CPUs ...
    [ 1364.974281] Detected VIPT I-cache on CPU1
    [ 1364.974335] GICv3: CPU1: found redistributor 1 region 0:0x00000000018a0000
    [ 1364.974398] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [ 1364.975723] CPU1 is up
    [ 1364.976007] Detected VIPT I-cache on CPU2
    [ 1364.976044] GICv3: CPU2: found redistributor 2 region 0:0x00000000018c0000
    [ 1364.976094] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
    [ 1364.977275] CPU2 is up
    [ 1364.977585] Detected VIPT I-cache on CPU3
    [ 1364.977625] GICv3: CPU3: found redistributor 3 region 0:0x00000000018e0000
    [ 1364.977682] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
    [ 1364.979084] CPU3 is up
    [ 1364.979809] ti-sci 44043000.system-controller: ti_sci: wakeup source:0x50, pin:0xff, mode:0x1
    [ 1365.002969] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 19
    [ 1365.012980] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=POLL)
    [ 1365.013008] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
    [ 1365.019777] am65-cpsw-nuss 8000000.ethernet eth1: PHY [8000f00.mdio:01] driver [TI DP83867] (irq=POLL)
    [ 1365.019790] am65-cpsw-nuss 8000000.ethernet eth1: configuring for phy/rgmii-rxid link mode
    [ 1365.158354] OOM killer enabled.
    [ 1365.161500] Restarting tasks ... done.
    [ 1365.166489] random: crng reseeded on system resumption
    [ 1365.171910] k3-m4-rproc 5000000.m4fss: Core is on in resume
    [ 1365.177636] k3-m4-rproc 5000000.m4fss: received echo reply from 5000000.m4fss
    [ 1365.178764] PM: suspend exit
    root@am62xx-evm:~# 
    


    您能解释一下 MCU 固件是加密的还是刚刚签名的吗?

    谢谢、
    Anshu

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

    嗨、Gibbs & Anshu:

     抱歉漏掉了这条消息“如果它适用于“加密“MCU  固件、无论您使用何种 SDK 版本、一切都正常

     它应该是“如果它工作 非安全启动器件 (如果我们不将器件更改为 HS-SE 模式)、无论您使用什么 SDK 版本、都没有任何问题。  

    也许我应该澄清一些误导我们的东西, 让我解释为什么  加密 MCU 固件 来这里。 首先、我们并不关心 MCU 是否加密。  我们使用非加密的 MCU FW 进行测试、然后发现此问题。

    >客户 发现 LPM 从仅 MCU 模式唤醒、在安全启动后无法工作(唤醒)。

    然后、我们遵循 Gibbs 的建议、使用加密 MCU 来尝试(也许对 MCU 加密可以解决问题)、但我们发现它甚至无法从 Linux 启动。  更不用说重现问题了。 我们尝试通过 uboot 成功启动加密的 MCU、但 从仅 MCU 模式唤醒仍然无法正常工作  噪声水平 。   

    因此、MCU 是否加密无关紧要。  

    之后,我们发现“LPM 从仅 MCU 模式唤醒, 这不工作(唤醒)后安全启动“,这个问题只 会发生 在 SDK  11.01.05.03.  是的、它仅在 SDK 11.01.05.03 中工作、因此我们想知道在 SDK 10 到 SDK 11.1 之间做了哪些更改。

    我们关心 SDK10/SDK11.0 和 SDK 11.1 之间有何差异、从而确保“ 安全启动后 LPM 唤醒“功能正常工作。

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

    嗨、Anshu

    感谢您的答复。

    这就是概念说明。

    据我所知,任何软件(例如: bootloader / M4 fw )都 在 SE 设备上运行,此固件必须通过 x.509 认证“签名“ 并使用私钥“加密“ M4 FW 二进制代码,不是吗?

    之前发布的相关引用。

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1574119/am620-q1-concept-clarification-for-encryption-signed-m4-firmware-boot-loads/6064006?tisearch=e2e-sitesearch&keymatch=%25252525252520user%2525252525253A533255

    如果我的概念有误、请纠正我。

    非常感谢

    Gibbs

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

    嗨、Gibbs、

    对于 HS-SE 器件、只需要对 tiboot3.bin 文件签名。 其他软件组件是获得签名的可选组件。

    对于 LPM、内核需要加载 M4F 及其固件、但 TISCI 驱动程序不会对固件进行身份验证、因此只有无符号的 M4F 固件能够使用 LPM。

    谢谢、

    Anshu

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

    嗨、Gibbs、

    如需更多信息、请访问以下 SDK 链接: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/latest/exports/docs/linux/Foundational_Components_Migration_Guide sdk.html#PROCESSOR-sdk

    谢谢、

    Anshu

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

    嗨、 Xiao-an

    我们关心 SDK10/SDK11.0 和 SDK 11 之间的区别。

    SDK 版本之间的内核、DM 固件、TIFS 和 ARM 可信固件之间存在许多变化。 一些 TI 相关的 IT 部门和其他部门受 Linux 社区的影响。  

    谢谢、

    Anshu

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

    尊敬的专家:

    是的、不同的 SDK 之间有太多变化。 但是、我们已经基于 SDK10 进行了一年多的开发、并进行了许多修改和测试。 因此、我们希望您帮助我们确定导致此问题的模块、以便我们可以在 SDK10 上解决此问题。

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

    嗨、Anshu

    非常感谢您的答复、

    因为这一线程的讨论从两个月前开始就被拖 得太久了、我相信我们两人可能会有一些误解。 (可能是我向客户购买了错误的调试方向)、因此我可以通过简单的结论来确保正确的调试方向、

    1.如果我们要实现“MCU LPM“和“A53 从 MCU LPM“唤醒、不得 签署 M4F 固件。 这是因为 Linux TISCI 驱动程序不支持对固件进行身份验证。

    2.如果客户想实现也包括 MCU LPM 的“安全启动“,请不要 签署 M4F 固件。  安全启动完成后、未签名的 M4F 固件也应该可以使用

    3.安全启动后, 未签名的 M4F 固件可以通过 GPIO 触发器或 IPCMsg (SOC_triggerMcuLpmWakeup()) 唤醒 A53 (Linux)。

    因此、即使基于 SDK 10.0/SDK11.0 或 SDK11.1、所有测试假设也都应在“安全启动“下以及“未签名的  M4F 固件“下、并且 Linux 内核应该加载 M4F 固件、不是吗?

     

    如果有什么问题、请纠正我。

    谢谢您、

    Gibbs

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

    嗨、 Xiao-an

    因此、我们希望您帮助我们确定导致此问题的模块、以便我们可以在 SDK10 上解决此问题。

    这是一个很大的任务,需要很多时间,我现在无法提供。 您能解释一下这方面的要求吗? 是否无法更新到 SDK 11.1?

    因此、即使基于 SDK 10.0/SDK11.0 或 SDK11.1、所有测试假设也应处于“安全启动“下以及“未签名的  M4F 固件“、并且 Linux 内核应加载 M4F 固件、不是吗?

    这是我的理解、是的。

    谢谢、

    Anshu

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

    嗨、Gibbs、

    我能够通过 SDK 10.1 使用仅 MCU 模式、但更新了 tiboot3.bin 以使用 SDK 11.0 的 TIFS 二进制和残桩。 请查看以下日志:

    U-Boot SPL 2024.04-dirty (Nov 13 2025 - 17:21:47 -0600)
    SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.7--v11.00.07 (Fancy Rat)')
    SPL initial stack usage: 13392 bytes
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    Authentication passed
    Authentication passed
    Authentication passed
    Starting ATF on ARM64 core...
    
    NOTICE:  BL31: v2.11.0(release):v2.11.0-906-g58b25570c9-dirty
    NOTICE:  BL31: Built : 04:20:32, Nov  1 2024
    
    U-Boot SPL 2024.04-dirty (Nov 13 2025 - 17:21:58 -0600)
    SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.7--v11.00.07 (Fancy Rat)')
    SPL initial stack usage: 1904 bytes
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    
    
    U-Boot 2024.04-dirty (Nov 13 2025 - 17:21:58 -0600)
    
    SoC:   AM62X SR1.0 HS-SE
    Model: Texas Instruments AM625 SK
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed -121
    DRAM:  2 GiB
    Core:  81 devices, 31 uclasses, devicetree: separate
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from nowhere... OK
    In:    serial
    Out:   serial
    Err:   serial
    EEPROM not available at 0x50, trying to read at 0x51
    Net:   eth0: ethernet@8000000port@1
    Hit any key to stop autoboot:  0 
    
    ...
    
    root@am62xx-evm:~# uname -a
    Linux am62xx-evm 6.6.58-ti-01497-ga7758da17c28-dirty #1 SMP PREEMPT Wed Nov 27 13:23:15 UTC 2024 aarch64 GNU/Linux
    root@am62xx-evm:~# echo 100 > /sys/devices/system/cpu/cpu0/power/pm_qos_resume_latency_us
    root@am62xx-evm:~# rtcwake -m mem -s 10
    rtcwake: wakeup from "mem" using /dev/rtc0 at Thu Jan  1 00:03:45 1970
    [  182.851913] PM: suspend entry (deep)
    [  182.855669] Filesystems sync: 0.000 seconds
    [  182.873415] Freezing user space processes
    [  182.879304] Freezing user space processes completed (elapsed 0.001 seconds)
    [  182.886307] OOM killer disabled.
    [  182.889525] Freezing remaining freezable tasks
    [  182.895404] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
    [  182.902813] printk: Suspending console(s) (use no_console_suspend to debug)
    [  182.955587] ti-sci 44043000.system-controller: ti_sci_cmd_set_device_constraint: device: 179: state: 1: ret 0
    [  182.966071] ti-sci 44043000.system-controller: ti_sci_cmd_set_device_constraint: device: 178: state: 1: ret 0
    [  184.740811] ti-sci 44043000.system-controller: ti_sci_cmd_set_device_constraint: device: 117: state: 1: ret 0
    [  184.744460] ti-sci 44043000.system-controller: ti_sci_cmd_set_latency_constraint: latency: 100: state: 1: ret 0
    [  185.773097] Disabling non-boot CPUs ...
    [  185.775514] psci: CPU1 killed (polled 0 ms)
    [  185.778353] psci: CPU2 killed (polled 4 ms)
    [  185.781811] psci: CPU3 killed (polled 0 ms)
    [  185.783099] Enabling non-boot CPUs ...
    [  185.803514] Detected VIPT I-cache on CPU1
    [  185.803566] GICv3: CPU1: found redistributor 1 region 0:0x00000000018a0000
    [  185.803628] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [  185.804831] CPU1 is up
    [  185.825091] Detected VIPT I-cache on CPU2
    [  185.825123] GICv3: CPU2: found redistributor 2 region 0:0x00000000018c0000
    [  185.825167] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
    [  185.826221] CPU2 is up
    [  185.846533] Detected VIPT I-cache on CPU3
    [  185.846569] GICv3: CPU3: found redistributor 3 region 0:0x00000000018e0000
    [  185.846620] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
    [  185.847642] CPU3 is up
    [  185.850485] ti-sci 44043000.system-controller: ti_sci_resume: wakeup source: 0x50
    [  188.695130] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 19
    [  189.102558] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=POLL)
    [  189.102581] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
    [  189.109255] am65-cpsw-nuss 8000000.ethernet eth1: PHY [8000f00.mdio:01] driver [TI DP83867] (irq=POLL)
    [  189.109265] am65-cpsw-nuss 8000000.ethernet eth1: configuring for phy/rgmii-rxid link mode
    [  189.322362] OOM killer enabled.
    [  189.325499] Restarting tasks ... done.
    [  189.331248] random: crng reseeded on system resumption
    [  189.505714] k3-m4-rproc 5000000.m4fss: Core is on in resume
    [  189.511377] k3-m4-rproc 5000000.m4fss: received echo reply from 5000000.m4fss
    [  189.530672] PM: suspend exit
    root@am62xx-evm:~#

    我附上了我使用的确切 TIFS 二进制文件和残桩: /cfs-file/__key/communityserver-discussions-components-files/791/tifs_5F00_11.0.zip

    您需要添加这些文件并重新编译 tiboot3.bin:  https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/10_01_10_04/exports/docs/linux/Foundational_Components /U-Boot/UG-General-Info.html

    您可以尝试设置吗?

    谢谢、

    Anshu

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

    嗨、Anshu

    这是一个更新、

    我也感谢 小安的帮助,为患者的测试。

    以下是用于主线开发的客户 SDK 版本。

    * Linux SDK:10.01.10.04  

    • 内核 6.6.58

    • U-Boot 2024.04

    • 工具链 GCC 13.3

    • ATF 2.11+

    • OPTEE 4.4.0

    • 图形 DDK 24.1.

    • TIFS 固件 v10.01.08

    • DM 固件 10.01.00.10

    • Yocto scarthgap 5.0

    * MCU SDK:10.00.00.14   

    他们还测试另一个 SDK 版本。

    * Linux SDK: 11.01.05.03

    • 内核 6.12.35

    • U-Boot 2025.01

    • 工具链 GCC 13.4

    • ATF 2.13+

    • OPTEE 4.6.0

    • 图形 DDK 24.2.

    • TIFS Firmware/SYSFW v11.01.02 (有关更多信息,请单击链接)

    • DM 固件 11.01.00.05

    • Yocto scarthgap 5.0

    如果我们基于 (Linux SDK 10.01.10.04)+(MCU SDK:10.00.00.14) 软件组合、并且仅替换 来自 (Linux SDK: 11.01.05.03) 的 tiboot3.bin 和 tispl.bin、则 问题似乎已解决。 因此、我们怀疑 SYSFW 或 DM 存在问题。  

    客户使用 Yocto 构建和 Linux SDK 10.01、 还显示 TI_SYSFW_VERSION =“10.01.08"(“(source/meta-ti/meta-ti-BSP/食谱-BSP/ti-linux-fw/ti-linux-fw.inc)

    结论告诉我们、如果您要解决相关问题、如下所示的 SW 组合应该是可行的。

    Linux SDK:10.01.10.04 + MCU SDK:10.00.00.14 + Linux SDK: 11.01.05.03 (tiboo3.bin / tispl.bin)

    我看到您还提供了 Linux SDK11 中的 TIFS?  您的 SYSFW 版本是否为“11.00.07"?“?

    基于您的 TIFS、测试来自客户的反馈、它也可以工作。

    因此、仍然存在的问题是:

    (1) 从 SDK11 替换 TIFS 是否有任何副作用?  (tiboot3.bin 和 tispl.bin)

    (2) 或者我们是否有任何记录跟踪来告诉我们每个版本的 TIFS 之间有什么不同?

    谢谢你。

    Gibbs

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

    嗨、Gibbs、

    我看到您提供了也来自 Linux SDK11 的 TIFS?  您的 SYSFW 版本是否为“11.00.07"?“?

    在我运行的测试中、SYSFW 二进制文件没有从 10.1 更改、只有 TIFS 版本发生变化。

    您可以参考问题跟踪器: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/11_00_09_04/exports/docs/devices/AM62X/linux/、Release_Specific_Release_Notes、html#issues-tracker

    或 TIFS Git 页面更改为 11.00.07: https://git.ti.com/cgit/processor-firmware/ti-linux-firmware/

    此致、

    Anshu

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

    谢谢、Anshu

    这只是一份备忘录、帮助有相关问题的任何人快速了解什么 (+WHERE) 的 TIFS。

    参考

    https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/10_00_07_04/exports/docs/linux/Foundational_Components /U-Boot/UG-General-Info.html?highlight=tiboot3.

    REF、

    https://docs.u-boot.org/en/v2024.10/board/ti/am62x_sk.html

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

    感谢 Gibbs 的注释。 该线程现在将保持打开状态。

    谢谢、

    Anshu