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.

[参考译文] AM62P:AM62P 内存的深度睡眠无法唤醒

Guru**** 2351680 points
Other Parts Discussed in Thread: AM62P, SK-AM62P-LP
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1505007/am62p-am62p-the-deep-sleep-of-mem-cannot-be-awakened

部件号:AM62P

工具/软件:

SDK 版本10.0.0

1、使用 EVM 板进行测试、我使用主域的 GPIO1_10作为唤醒源。 通过 mem 进入睡眠模式后、边沿触发。μ s 时无法唤醒、但冻结方法也可以将其唤醒。μ s

2、即使使用官方串行端口方法将其唤醒、mem 也无法将其唤醒、但可以冻结

#!/bin/bash -xe

# Detach kernel serial console
consoles=$(find /sys/bus/platform/devices/*.serial/ -name console)
for console in ${consoles}; do
        echo -n N > ${console}
done

# Configure PM runtime autosuspend
uarts=$(find /sys/bus/platform/devices/*.serial/power/ -type d)
for uart in $uarts; do
        echo -n 3000 > $uart/autosuspend_delay_ms
        echo -n enabled > $uart/wakeup
        echo -n auto > $uart/control
done

# Configure wake-up from suspend
uarts=$(find /sys/class/tty/tty[SO]*/power/ -type d 2>/dev/null)
for uart in $uarts; do
        echo -n enabled > $uart/wakeup
done

我。问、可能的原因是什么

谢谢!

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

    您好:

    首先、Linux SDK 不支持冻结。 它可能有效、但不在 TI 的支持范围内。

    您能解释一下如何在器件树中配置 GPIO 以启用唤醒吗?

    谢谢、

    Anshu

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

    您好:
    我们发现在 mem 下不工作、 我们计划使用仅 MCU 模式、该模式仅处于 soc 睡眠状态、但 MCU 需要正常工作。  
    该文档需要启用此接口、但我的版本没有此接口。SDK 版本10.0.0

    echo enabled > /sys/bus/platform/devices/79000000.r5f/power/wakeup

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

     10.01.10.04 (2024年12月20日) 我看到。此版本已解决此问题。

    EXT_SITMPUSW-30

    Debian:DeepSleep 在 AM62P 上不起作用

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

    您好:

    是、您可以尝试使用最新的 SDK 来查看这样是否解决了问题。

    如果没有、我可以尝试在我这边重现问题

    谢谢、

    Anshu

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

    您好:

    抱歉。我们已经从事这个项目很长时间了、并且添加了很多内容、因此无法更改 SDK 版本。 我们需要帮助确认此问题点是否存在、并为我们提供修补方法

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

    尊敬的 Anshu:

    客户将尝试在最新的 SDK 上测试此功能、如果它可以正常工作、请帮助评估反向移植补丁的可行性。 谢谢。

    此致

    Joe

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

    您好:

       我测试了 SDK 版本10.01、但测试结果仍然不满意。
    测试步骤如下:

    1、IO

    (__LW_AT__一)使用我在、μ s 以上编写的 IO 端口唤醒源驱动程序

    (__LW_AT__二)echo mem >/sys/power/state

     (三 μ s)手动为此 IO 提供边沿信号

    2、UART

    (__LW_AT__一)执行以下脚本以启用串行端口唤醒源

    (__LW_AT__二)echo mem >/sys/power/state

    (__LW_AT__三)按串行端口终端上的按钮

    #!/bin/bash -xe
    
    # Detach kernel serial console
    consoles=$(find /sys/bus/platform/devices/*.serial/ -name console)
    for console in ${consoles}; do
            echo -n N > ${console}
    done
    
    # Configure PM runtime autosuspend
    uarts=$(find /sys/bus/platform/devices/*.serial/power/ -type d)
    for uart in $uarts; do
            echo -n 3000 > $uart/autosuspend_delay_ms
            echo -n enabled > $uart/wakeup
            echo -n auto > $uart/control
    done
    
    # Configure wake-up from suspend
    uarts=$(find /sys/class/tty/tty[SO]*/power/ -type d 2>/dev/null)
    for uart in $uarts; do
            echo -n enabled > $uart/wakeup
    done

    。发现无法唤醒、但 echo freeze >/sys/power/state 命令可以唤醒

    并且没有 MCU_ONLY 接口、因此无法实施 soc 睡眠 MCU 激活策略。

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

    您好:

    我能够在 SK-AM62P-LP 上的 SDK 10.1上成功进入和退出仅 MCU 模式。

    重要说明是使用此 SYSFS 条目为 MCU 启用仅 MCU 模式、而不是启用内核命令:

    echo 100 > /sys/devices/system/cpu/cpu0/power/pm_qos_resume_latency_us

    我列出了用于进入/退出仅 MCU 模式的以下步骤:

    对于 GPIO1_10唤醒源、我添加了 dtso 覆盖图: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am62x-sk-lpm-wkup-sources.dtso?h=ti-linux-6.6.y

    有关添加器件树叠加层的详细信息、请参阅此处: https://software-dl.ti.com/processor-sdk-linux/esd/AM62PX/10_01_10_04/exports/docs/linux/How_to_Guides/Target/How_to_enable_DT_overlays_in_linux.html

    该 GPIO 名称是 WKGPIO、如器件树中所示。 只是确认、它已在中断列表中进行了检查:

    root@am62pxx-evm:~# cat /proc/interrupts | grep WKGPIO
    407:          0          0          0          0      GPIO  10 Edge    -davinci_gpio  WKGPIO
    493:          0          0          0          0   pinctrl 416 Edge      WKGPIO:wakeup

    我制作了一个快速脚本、用于进入仅 MCU 模式:

    #!/bin/bash
    
    echo -e "Kernel Version:"
    uname -a
    echo -e "\n"
    
    sleep .5
    
    echo -e "GPIO1_10 IRQ: "
    cat /proc/interrupts | grep 407:
    echo -e "\n"
    
    sleep .5
    
    echo -e "Set to MCU Only mode and suspend:"
    echo 100 > /sys/devices/system/cpu/cpu0/power/pm_qos_resume_latency_us
    echo mem > /sys/power/state
    

    为了触发唤醒、我将 GPIO1_10接地。

    以下是此脚本的日志:

    Kernel Version:
    Linux am62pxx-evm 6.6.58-ti-01497-ga7758da17c28-dirty #1 SMP PREEMPT Wed Nov 27 13:23:15 UTC 2024 aarch64 GNU/Linux
    
    
    GPIO1_10 IRQ: 
    407:          0          0          0          0      GPIO  10 Edge    -davinci_gpio  WKGPIO
    
    
    Set to MCU Only mode and suspend:
    [  508.925063] PM: suspend entry (deep)
    [  508.952093] Filesystems sync: 0.020 seconds
    [  508.969176] Freezing user space processes
    [  508.974912] Freezing user space processes completed (elapsed 0.001 seconds)
    [  508.981922] OOM killer disabled.
    [  508.985155] Freezing remaining freezable tasks
    [  508.990896] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
    [  508.998300] printk: Suspending console(s) (use no_console_suspend to debug)
    [  509.020029] ti-sci 44043000.system-controller: ti_sci_cmd_set_device_constraint: device: 179: state: 1: ret 0
    [  509.020176] ti-sci 44043000.system-controller: ti_sci_cmd_set_device_constraint: device: 178: state: 1: ret 0
    [  509.029124] omap8250 2800000.serial: PM domain pd:146 will not be powered off
    [  509.029716] ti-sci 44043000.system-controller: ti_sci_cmd_set_device_constraint: device: 117: state: 1: ret 0
    [  509.029850] ti-sci 44043000.system-controller: ti_sci_cmd_set_latency_constraint: latency: 100: state: 1: ret 0
    [  509.050768] Disabling non-boot CPUs ...
    [  509.052994] psci: CPU1 killed (polled 4 ms)
    [  509.056342] psci: CPU2 killed (polled 0 ms)
    [  509.059523] psci: CPU3 killed (polled 0 ms)
    [  509.060670] Enabling non-boot CPUs ...
    [  509.061015] Detected VIPT I-cache on CPU1
    [  509.061057] GICv3: CPU1: found redistributor 1 region 0:0x00000000018a0000
    [  509.061111] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [  509.062197] CPU1 is up
    [  509.062442] Detected VIPT I-cache on CPU2
    [  509.062472] GICv3: CPU2: found redistributor 2 region 0:0x00000000018c0000
    [  509.062510] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
    [  509.063373] CPU2 is up
    [  509.063619] Detected VIPT I-cache on CPU3
    [  509.063648] GICv3: CPU3: found redistributor 3 region 0:0x00000000018e0000
    [  509.063690] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
    [  509.064635] CPU3 is up
    [  509.065080] ti-sci 44043000.system-controller: ti_sci_resume: wakeup source: 0x80
    [  509.078379] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 19
    [  509.094561] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=POLL)
    [  509.094583] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
    [  509.108019] am65-cpsw-nuss 8000000.ethernet eth1: PHY [8000f00.mdio:01] driver [TI DP83867] (irq=POLL)
    [  509.108030] am65-cpsw-nuss 8000000.ethernet eth1: configuring for phy/rgmii-rxid link mode
    [  509.291632] OOM killer enabled.
    [  509.294774] Restarting tasks ... done.
    [  509.300613] random: crng reseeded on system resumption
    [  509.308573] platform 79000000.r5f: Core is on in resume
    [  509.313987] platform 79000000.r5f: received echo reply from 79000000.r5f
    [  509.330272] PM: suspend exit
    

    从日志中、您可以看到以下内容:

    需要注意的另一点是、使用"pm_qos_receume_delayment_us"条目、而不是启用 MCU 内核本身。 此目录为 DM 固件设置一个约束、以了解要进入哪种低功耗模式。 TISCI 文档如下所示: https://software-dl.ti.com/tisci/esd/latest/2_tisci_msgs/pm/lpm.html#tisci-msg-lpm-set-latency-constraint

    如果 GPIO 唤醒不起作用、我们来检查 RTC 信号以导致唤醒。 请参阅下面的示例脚本:

    #!/bin/bash
    
    echo -e "Kernel Version:"
    uname -a
    echo -e "\n"
    
    sleep .5
    
    echo -e "GPIO1_10 IRQ: "
    cat /proc/interrupts | grep 407:
    echo -e "\n"
    
    sleep .5
    
    echo -e "Set to MCU Only mode and suspend:"
    echo 100 > /sys/devices/system/cpu/cpu0/power/pm_qos_resume_latency_us
    #echo mem > /sys/power/state
    rtcwake -m mem -s 10
    

    这将确保在将 GPIO WAKEUP 变量引入系统之前、挂起/恢复序列能够正常工作。

    如果您希望使用串行 UART 启用唤醒功能 、确保设备树的配置与以下链接中所示完全相同: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts?h=ti-linux-6.12.y#n816

    配置器件树后、请使用下面的脚本启用 UART 唤醒源:

    #!/bin/bash
    
    echo -n N > /sys/bus/platform/devices/2800000.serial/tty/ttyS2/console
    echo -n 3000 > /sys/bus/platform/devices/2800000.serial/power/autosuspend_delay_ms
    echo -n enabled > /sys/bus/platform/devices/2800000.serial/power/wakeup
    echo -n auto > /sys/bus/platform/devices/2800000.serial/power/control
    echo -n enabled > /sys/class/tty/ttyS2/power/wakeup
    

    Linux SDK 文档中提供的原始脚本导致我的测试设置出现错误。 我在这里提供的脚本是一种权变措施、假设 ttyS2用于串行通信。

    请参阅我为进入和退出仅 MCU 模式而提供的步骤。

    此致、

    Anshu

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

    您好:

    我只是想说明一下我测试的是 SDK 10.1、但据我了解、10.0的过程应该相同。

    如果不起作用、让我们确保 RTC 唤醒工作、这应该适用于默认设备树。

    谢谢、

    Anshu1.

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

    您好:

    我再次检查了 SDK 10.0默认 Linux 映像。 我遵循了上面提到的流程、并能够进入/退出仅 MCU 模式。

    Kernel Version:
    Linux am62pxx-evm 6.6.32-ti-g6de6e418c80e-dirty #1 SMP PREEMPT Fri Jul 26 14:32:20 UTC 2024 aarch64 GNU/Linux
    
    
    GPIO1_10 IRQ: 
    408:          0          0          0          0      GPIO  10 Edge    -davinci_gpio  WKGPIO
    
    
    Set to MCU Only mode and suspend:
    [  351.869538] PM: suspend entry (deep)
    [  352.075539] Filesystems sync: 0.199 seconds
    [  352.093468] Freezing user space processes
    [  352.099094] Freezing user space processes completed (elapsed 0.001 seconds)
    [  352.106098] OOM killer disabled.
    [  352.109363] Freezing remaining freezable tasks
    [  352.115075] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
    [  352.122498] printk: Suspending console(s) (use no_console_suspend to debug)
    [  352.142981] ti-sci 44043000.system-controller: ti_sci_cmd_set_device_constraint: device: 179: state: 1: ret 0
    [  352.143128] ti-sci 44043000.system-controller: ti_sci_cmd_set_device_constraint: device: 178: state: 1: ret 0
    [  352.152126] omap8250 2800000.serial: PM domain pd:146 will not be powered off
    [  352.152658] ti-sci 44043000.system-controller: ti_sci_cmd_set_device_constraint: device: 117: state: 1: ret 0
    [  352.152759] cpu cpu3: ti_sci_suspend: sending max CPU latency=100
    [  352.152798] ti-sci 44043000.system-controller: ti_sci_cmd_set_latency_constraint: latency: 100: state: 1: ret 0
    [  352.173375] Disabling non-boot CPUs ...
    [  352.175420] psci: CPU1 killed (polled 4 ms)
    [  352.178302] psci: CPU2 killed (polled 0 ms)
    [  352.181441] psci: CPU3 killed (polled 0 ms)
    [  352.182532] Enabling non-boot CPUs ...
    [  352.182868] Detected VIPT I-cache on CPU1
    [  352.182910] GICv3: CPU1: found redistributor 1 region 0:0x00000000018a0000
    [  352.182964] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [  352.183894] CPU1 is up
    [  352.184130] Detected VIPT I-cache on CPU2
    [  352.184156] GICv3: CPU2: found redistributor 2 region 0:0x00000000018c0000
    [  352.184194] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
    [  352.184908] CPU2 is up
    [  352.185143] Detected VIPT I-cache on CPU3
    [  352.185170] GICv3: CPU3: found redistributor 3 region 0:0x00000000018e0000
    [  352.185208] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
    [  352.185938] CPU3 is up
    [  352.186363] ti-sci 44043000.system-controller: ti_sci_resume: wakeup source: 0x80
    [  352.202040] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 19
    [  352.218098] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=POLL)
    [  352.218126] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
    [  352.231673] am65-cpsw-nuss 8000000.ethernet eth1: PHY [8000f00.mdio:01] driver [TI DP83867] (irq=POLL)
    [  352.231684] am65-cpsw-nuss 8000000.ethernet eth1: configuring for phy/rgmii-rxid link mode
    [  352.420589] OOM killer enabled.
    [  352.423738] Restarting tasks ... done.
    [  352.428764] random: crng reseeded on system resumption
    [  352.434138] platform 79000000.r5f: Core is on in resume
    [  352.439478] platform 79000000.r5f: received echo reply from 79000000.r5f
    [  352.448946] PM: suspend exit
    


    此致、

    Anshu

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

    尊敬的 Anshu:

    感谢您的帮助、我将与客户核实他们的环境中缺少的内容。

    此致

    Joe

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

    尊敬的 Anshu:

    我们按照您的步骤尝试使用预编译映像、它可以正常工作。 (TI-processor-sdk-linux-am62pxx-evm-10.01.10.04/board-support/prebuilt-images)。

    但是、当我们在本地环境中使用构建映像时、它会失败。 我们只替换"tispl.bin"、它就无法正常工作。

    请检查步骤

    -1-

    创建 SD 卡并安装预编译映像、按照您的步骤、可以退出仅 MCU 模式。

    -2-

    cd ti-processor-sdk-linux-am62pxx-evm-10.01.10.04

    生成 u-boot

    cp -v ti-processor-sdk-linux-am62pxx-evm-10.01.10.04/board-support/u-boot-build/a53/ tispl.bin /media/xxx/boot/tispl.bin

    按照您分享的步骤操作、它无法正常工作、无法退出仅 MCU 模式。

    请帮助检查。 谢谢。

    此致

    Joe

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

    您好 Joe、

    是否已编译 Arm Trusted Firmware 以启用低功耗模式?

    tispl.bin 包含 ATF: https://software-dl.ti.com/processor-sdk-linux/esd/AM62PX/10_00_07_04/exports/docs/linux/Foundational_Components /U-Boot/UG-General-Info.html#image-formats

    构建 ATF 时、有一个标志可以启用低功耗模式: https://software-dl.ti.com/processor-sdk-linux/esd/AM62PX/10_00_07_04/exports/docs/linux/Foundational_Components_ATF.html

    此致、

    Anshu

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

    您好 Joe、

    如果启用此 ATF 无法解决进入/退出仅 MCU 模式的问题、则请提供有关这些问题的更多详细信息。 请包含暂停/恢复 Linux 终端日志和其他 U-Boot 更改、这些更改可能会影响 tispl 文件、因为涉及许多组件。

    此致、

    Anshu

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

    尊敬的 Anshu:

    请帮助检查我在 SDK_10.1上的实验。

    -1-

    TI-PROCESSOR-SDK-LINUX-am62pxx-evm-10.01.10.04/board-support/trusted-firmware-a-2.11+git
    Git 日志
    58b25570c (head -> Joe_debug、master)将"feat (ti):实现 DM_managed suspend"合并到集成中

    -2-

    make arch=aarch64 cross_compile="$cross_compile_64" PLAT=K3_PM_system_suspend=1 target_Board=lite spd=opteed

    BTW:(没有关于 k3_PM_system_suspend 的关键字)

    cp -v ti-processor-sdk-linux-am62pxx-evm-10.01.10.04/board-support/trusted-firmware-a-2.11+git/build/k3/lite/release/bl31.bin  

         TI-PROCESSOR-SDK-LINUX-am62pxx-evm-10.01.10.04/board-support/prebuilt-images/am62pxx-evm/ bl31.bin

    生成 u-boot_clean

    生成 u-boot

    将 SD 卡中的 tispl.bin 替换为"board-support/u-boot-build/a53/tispl.bin"

    无额外更改

    -3-

    它无法退出仅 MCU 模式。

    Root@am62pxx-EVM:~# uname -A
    Linux am62pxx-EVM 6.6.58-ti-01497-ga7758da17c28-Dirty #1 SMP PREEMT 11月27日星期三13:23:15 UTC 2024 AArch64 GNU/Linux
    root@am62pxx-EVM:~# cat /proc/interrupts | grep WKGPIO
    407:0 0 0 0 GPIO 10 Edge DaVinci GPIO WKGPIO
    493:0 0 0 pinctrl 416 Edge WKGPIO:wakeup
    root@am62pxx-EVM:~# echo 100 >/sys/devices/system/cpu/cpu0/power/pm_qos_resume_latency_us
    root@am62pxx-EVM:~# echo mem >/sys/power/state
    [98.925779] PM:暂停进入(深)
    [98.932549]文件系统同步:0.003秒
    [98.939234]冻结用户空间进程
    [ 98.944981]冻结用户空间进程已完成(经过0.001秒)
    [98.951985]杀手致残。
    [98.955215]冻结剩余的可冻结任务
    [98.960970]冻结已完成的剩余可冻结任务(经过0.001秒)
    [ 98.968376] printk:暂停控制台(使用 NO_CONSOLE_SUSPEND 进行调试)

    WKUP 日志:

    [IPC RPMSG ECHO]版本:ReL.MCUSDK.K3.10.01.00.10+(2024年11月14日14:00:57):
    [IPC RPMSG ECHO]远程内核正在等待端点13的消息...!!!
    [IPC RPMSG ECHO]远程内核在端点14等待消息...!!!
    [IPC RPMSG ECHO]下一个 MCU 模式为1
    [IPC RPMSG ECHO]收到进入仅 MCU 模式的挂起请求
    [IPC RPMSG ECHO]在此终端上按一个键、使内核从仅 MCU 模式恢复

    此致

    Joe

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

    您好 Joe、

    我正在内部检查 SDK 中的 Makefile 如何用于构建这些组件。 我会回到您的身边。

    作为测试、除了更新 OPTEE (bl32.bin)和 ATF、您能否执行相同的过程?

    您可以按照此处的构建说明进行操作: https://software-dl.ti.com/processor-sdk-linux/esd/AM62PX/10_01_10_04/exports/docs/linux/Foundational_Components_OPTEE.html

    请使用 make 命令 之间的比较 CFG_TEE_CORE_LOG_LEVEL=2。 制作 bl31和 bl32的备份副本以防它不起作用。

    谢谢、

    Anshu

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

    尊敬的 Anshu:

    我重建了 OPTEE (bl32.bin)并重新编译 tispl.bin。这是相同的问题、它无法退出仅 MCU 模式。

    请再次检查以下步骤、以便在缺少内容时重建 OPTEE。

    CD /home/cnh20399/ti/arm-toolchain
    wget -c developer.arm.com/.../arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz -O -| tar -xV -J -C $Compiler_path
    wget -c developer.arm.com/.../arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz -O -| tar -xV -J -C $Compiler_path

    导出 Compiler_path=/home/cnh20399/ti/arm-toolchain
    导出 cross_compile_64=$compiler_path/arm-gnu-toolch-11.3.rel1-x86_64-Aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-
    导出 cross_compile_32=$compiler_path/arm-gnu-toolcha-11.3.rel1-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-
    导出 cc_64="${cross_compile_64}gcc"
    导出 cc_32="${cross_compile_32}gcc"


    make cross_compile="$cross_compile_32" cross_COMPILE64="$cross_compile_64" platform=k3-am62px CFG_arm64_core=y

    cp -v /out/arm-plat-k3/core/tee-pager_v2.bin /home/cnh20399/worksource/am62p-10.1/ti-processor-sdk-linux-am62pxx-evm-10.01.10.04/board-support/prebuilt-images/am62pxx-evm/bl32.bin

    全新重建 u-boot 并复制 tispl.bin 进行测试、但无法退出仅 MCU 模式。

    此致

    Joe

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

    您好 Joe、

    您能否共享以下 u-boot 构建日志文件的输出:

    board-support/u-boot-build/a53/ti-spl.map
    board-support/u-boot-build/a53/tifsstub-fs.map

    从我这边的测试来看,似乎 TIFSSTUB 的片段在构建的映像上丢失了,而不是预构建的映像:

    以下是一个正常运行的 tispl.bin 映像:

    Image 4 (tifsstub-hs)
      Description:  TIFSSTUB
      Created:      Fri Nov 29 05:41:54 2024
      Type:         Firmware
      Compression:  uncompressed
      Data Size:    32133 Bytes = 31.38 KiB = 0.03 MiB
      Architecture: Unknown Architecture
      OS:           Unknown OS
      Load Address: 0x9ca00000
     Image 5 (tifsstub-fs)
      Description:  TIFSSTUB
      Created:      Fri Nov 29 05:41:54 2024
      Type:         Firmware
      Compression:  uncompressed
      Data Size:    30387 Bytes = 29.67 KiB = 0.03 MiB
      Architecture: Unknown Architecture
      OS:           Unknown OS
      Load Address: 0x9ca00000

    以下是一个无法正常工作的选项:

    Image 4 (tifsstub-hs)
      Description:  TIFSSTUB
      Created:      Tue Apr 29 17:28:56 2025
      Type:         Firmware
      Compression:  uncompressed
      Data Size:    1745 Bytes = 1.70 KiB = 0.00 MiB
      Architecture: Unknown Architecture
      OS:           Unknown OS
      Load Address: 0x9ca00000
     Image 5 (tifsstub-fs)
      Description:  TIFSSTUB
      Created:      Tue Apr 29 17:28:56 2025
      Type:         Firmware
      Compression:  uncompressed
      Data Size:    0 Bytes = 0.00 KiB = 0.00 MiB
      Architecture: Unknown Architecture
      OS:           Unknown OS
      Load Address: 0x9ca00000

    请注意、tifsstable-hs 在数据大小上小得多、而 tifsstable-FS 没有数据大小。

    我想基于此、在暂停序列期间、它将在 TIFS 阶段卡住、从而导致 Linux 崩溃。 因此、我认为使用构建映像的器件甚至没有暂停、而是在暂停之前卡住了。

    我仍在研究为什么会出现这种情况、但这可能是表明暂停/恢复序列在以下位置的指示器: software-dl.ti.com/.../pm_sw_arch.html

    如果您可以在您的末端确认相同的输出、这将会有所帮助。

    此致、

    Anshu

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

    尊敬的 Anshu:

    感谢你的帮助。

    在我的环境中生成 u-boot 时出现警告:

    映像"tifsstub-hs"缺少可选的外部 Blobs、但仍然工作正常:tifsstub-hs-cert.bin tifsstub-hs-enc.bin

    /binman/tifsstub-hs/tifsstub-hs-cert.bin (ti-sysfw/ti-fs-stub-firmware-am62px-hs-cert.bin):
    缺少 blob

    /binman/tifsstub-hs/tifsstub-hs-enc.bin (ti-sysfw/ti-fs-stub-firmware-am62px-hs-enc.bin):
    缺少 blob

    映像"tifsstub-fs"缺少可选的外部 Blobs、但仍然正常工作:tifsstub-fs-cert.bin tifsstub-fs-enc.bin

    /binman/tifsstub-fs/tifsstub-fs-cert.bin (ti-sysfw/ti-fs-stub-firmware-am62px-hs-cert.bin):
    缺少 blob

    /binman/tifsstub-fs/tifsstub-fs-enc.bin (ti-sysfw/ti-fs-stub-firmware-am62px-hs-enc.bin):
    缺少 blob

    我通过 http://swubn04.india.englab.ti.com/smpusdk-internal-release/10_01_10_04/am62pxx-evm/7984_10122024_131104/am62pxx-evm/deploy/ti-sysfw/下载了2个文件"ti-fs-stub-firmware-am62px-hs-cert.bin"/"ti-fs-stuble-firmware-am62px-hs-enc.bin"

    并放入

    board-support/prebuilt-images/am62pxx-evm/ti-sysfw/ti-fs-stub-firmware-am62px-hs-cert.bin
    board-support/prebuilt-images/am62pxx-evm/ti-sysfw/ti-fs-stub-firmware-am62px-hs-enc.bin

    然后、清理编译 u-boot 并替换 tispl.bin。

    它可以退出仅 MCU 模式。

    root@am62pxx-EVM:~# echo 100 >/sys/devices/system/cpu/cpu0/power/pm_qos_resume_latency_us
    root@am62pxx-EVM:~# cat /proc/interrupts | grep WKGPIO
    407:0 0 0 0 GPIO 10 Edge DaVinci GPIO WKGPIO
    493:0 0 0 pinctrl 416 Edge WKGPIO:wakeup
    root@am62pxx-EVM:~# echo mem >/sys/power/state
    [36.691098] PM:暂挂进入(深)
    [40.487843]文件系统同步:3.793秒
    [40.4944445]冻结用户空间进程
    [40.500297]已完成冻结用户空间进程(经过0.001秒)
    [40.507289]已停用杀虫剂。
    [40.510505]冻结剩余的可自由浇注任务
    [40.516265]冻结剩余的可自由储存任务已完成(经过0.001秒)
    [40.523664] printk:暂停控制台(使用 NO_CONSOLE_SUSPEND 进行调试)
    [40.538976] ti-sci 44043000.system-controller:TI_sci_cmd_set_device_constraint:设备:179:状态:1:RET 0
    [40.539123] ti-sci 44043000.system-controller:TI_sci_cmd_set_device_constraint:Device:178:State:1:RET 0
    [40.547959] omap8250 2800000.serial: PM 域 PD:146将不会关机
    [40.548545] ti-sci 44043000.system-controller:TI_sci_cmd_set_device_constraint:器件:117:状态:1:RET 0
    [40.548677] ti-sci 44043000.system-controller:TI_sci_cmd_set_delaying_constraint:delay: 100:State: 1:RET 0
    [40.569412]禁用非引导 CPU ...
    [40.571690] psci:CPU1已死亡(轮询时间为4ms)
    [40.574796] psci: CPU2已被杀(轮询时间为4毫秒)
    [40.578132] psci:CPU3被杀死(轮询0毫秒)
    [40.579735]启用非引导 CPU ...
    [40.580075]在 CPU1上检测到 VIPT I-cache
    [40.580117] GICv3:CPU1:找到重新分配器1区域0:0x00000000018a0000
    [40.580171] CPU1:已引导的辅助处理器0x0000000001 [0x410fd034]
    [40.581259] CPU1已启动
    [40.581501]在 CPU2上检测到 VIPT I 高速缓存
    [40.581527] GICv3:CPU2:找到重新分配器2区域0:0x00000000018c0000
    [40.581565] CPU2:已引导的辅助处理器0x0000000002 [0x410fd034]
    [40.582440] CPU2已启动
    [40.582689]在 CPU3上检测到 VIPT I-cache
    [40.582723] GICv3:CPU3:找到再分配器3区域0:0x00000000018e0000
    [40.582771] CPU3:已引导的辅助处理器0x0000000003 [0x410fd034]
    [40.583744] CPU3已启动
    [40.584189] ti-sci 44043000.system-controller:TI_sci_resume:唤醒源:0x80
    [40.597364] am65-cpsw-Nuss 8000000.Ethernet:设置新的 follow-id-base 19
    [ 40.613419] am65-cpsw-Nuss 8000000.Ethernet eth0:PHY [8000f00.MDIO:00]驱动程序[TI DP83867](IRQ=POLL)
    [ 40.613444] am65-cpsw-Nuss 8000000.Ethernet eth0:配置 phy/rgmii-rxid 链路模式
    [ 40.62980] am65-cpsw-Nuss 8000000.Ethernet eth1:PHY [8000f00.MDIO:01]驱动程序[TI DP83867](IRQ=POLL)
    [ 40.626993] am65-cpsw-Nuss 8000000.Ethernet eth1:配置 phy/rgmii-rxid 链路模式
    [40.809867]已启用 oom killer。
    [40.813010]重新启动任务...已完成。
    [40.820166]随机:在恢复系统时、crng 重新启动
    [40.825628]平台79000000.r5f:核心在恢复时打开
    [40.830979] platform 79000000.r5f:收到来自79000000.r5f 的回音回复
    root@am62pxx-EVM:~#[ 40.838170] PM:暂停退出

    我在这里附上了2个文件、客户将确认它是否正常工作

    e2e.ti.com/.../ti_2D00_fs_2D00_stub_2D00_firmware_2D00_am62px_2D00_hs_2D00_cert.bin

    e2e.ti.com/.../ti_2D00_fs_2D00_stub_2D00_firmware_2D00_am62px_2D00_hs_2D00_enc.bin

    此致

    Joe

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

    尊敬的 Anshu:

    我在 SDK_10.0上进行了测试、可以退出仅 MCU 模式。

    我从 http://swubn04.india.englab.ti.com/Releases/smpusdk-releases/10.00.07.04/am62pxx-evm/am62pxx-evm/deploy/ti-sysfw/下载了文件

    ti-fs-stub-firmware-am62px-hs-cert.bin

    ti-fs-stub-firmware-am62px-hs-enc.bin

    请仔细检查它是否是 AM62P_SDK_10.0版本的正确版本。 谢谢。

    e2e.ti.com/.../6232.ti_2D00_fs_2D00_stub_2D00_firmware_2D00_am62px_2D00_hs_2D00_enc.bin

    e2e.ti.com/.../1856.ti_2D00_fs_2D00_stub_2D00_firmware_2D00_am62px_2D00_hs_2D00_cert.bin

    客户将在 SDK_10.0上使用其环境尝试执行此文件。

    此致

    Joe

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

    您好 Joe、

    感谢您的确认。 将这些文件添加到预编译的映像并使用顶层 makefile 后、我还可以暂停/恢复这些文件。

    此致、

    Anshu