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.

[参考译文] Linux:AM3352内核在关机期间出现严重错误

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/652998/linux-am3352-kernel-panic-during-power-off

主题中讨论的其他器件:TPS65217

工具/软件:Linux

我们器件的硬件架构基于 Beagle Bone Black。

我们使用基于4.1.18修订版的定制内核。 我们的 SDK 基于2.00.02.11。

我们遇到了 一定数量的电路板问题、即在其断电过程中会发生 KERENEL 紧急情况。 这意味着有一些"好"  板、还有一些"坏"板。

我们将 PMIC TPS65217与连接的电池配合使用。

RTC 被设计为在 外部电源(Vac)断开且 PMIC 关闭(VSYS)之前继续振荡  

因此  、在执行命令 systemctl power_off 后、我希望看到 RTC 正常工作、所有其他部分不工作。

这是断电期间的日志

     正在开始将硬件时钟同步到系统时钟...
[ OK ]停止目标蓝牙。
     正在停止 KeepTruckin BT121服务...
     正在停止蓝牙服务...
[ 确定 ]停止目标图形界面。
[ 确定 ]停止目标多用户系统。
     正在停止 LBB 蓝牙初始化...
     正在停止 KeepTruckin 电源监控服务...
     正在停止 OpenBSD Secure Shell 服务器...
     正在停止常规后台程序处理守护程序...
     正在停止自检-定期系统检查...
[ OK ]已停止自检-定期系统检查。
     正在停止登录服务...
[ 确定 ]停止目标登录提示。
     正在停止 tty1上的 Getty...
     停下      正在停止 LSB:在引导时启动 busybox udhcpd ...
     正在停止 LSB:设置 cpufreq 内核参数...
     正在停止 LSB:高级 IEEE 802.11管理守护程序...
     停止 D 总线系统信息总线。
     正在停止系统日志服务...
[ 确定 ]已停止 OpenBSD Secure Shell 服务器。
[ 确定 ]停止常规后台程序处理守护程序。
[ 确定 ]登录服务已停止。
[ 确定 ] D 总线系统信息总线已停止
[ 确定 ]已停止系统日志服务。
[ 确定 ]已在 tty1上停止 Getty。
[ 确定 ]已停止 ttyS0上的串行 Getty。
[ 确定 ]停止 KeepTruckin 电源监控服务。
[ 确定 ]已停止蓝牙服务。
[ 确定 ]停止 KeepTruckin BT121服务。
[ 确定 ]已停止 LBB 蓝牙 Init。
[ 确定 ]停止 LSB:在引导时启动总线框 udhcpd。
[ OK ] stopped LSB:设置 cpufreq 内核参数。
[ 确定 ]已停止 LSB:高级 IEEE 802.11管理守护程序。
[ 确定 ]停止的目标网络处于联机状态。
     正在停止 LSB:加载启用 cpufreq 缩放所需的内核模块...
     正在停止 LBB 固件更新程序...
[ 确定 ]已删除片 system-serial\x2dgetty.slice。
[ 确定 ]已删除片 system-Getty.slice。
     正在停止/etc/rc.local 兼容性...
[ 确定 ]已停止/etc/rc.local 兼容性。
     正在停止允许用户会话...
[ 确定 ]目标网络已停止。
[ OK ] stopped LSB:加载启用 cpufreq 缩放所需的内核模块。
[ 确定 ]已停止 LBB Firmware Updater。
[ 确定 ]已停止允许用户会话。
[ 确定 ]已开始将硬件时钟同步到系统时钟。
     正在停止 LBB 文件系统初始化...
[ 确定 ]停止目标远程文件系统。
[ 确定 ]停止目标远程文件系统(预)。
[ 确定 ]已停止 LBB 文件系统初始化。
[ 确定 ]停止目标基本系统。
[ 确定 ]停止目标层面。
[ 确定 ]已删除层用户和会话层。
[ 确定 ]停止的目标路径。
[ OK ]停止目标计时器。
[ 确定 ]目标套接字已停止。
[ 确定 ]关闭的 D-Bus 系统消息总线插座。
[ 确定 ]已关闭 Syslog 套接字。
[ 确定 ]停止目标系统初始化。
     正在停止恢复/保存当前时钟...
     正在停止更新 utmp 关于系统引导/关机...
[ 确定 ]停止目标加密卷。
     正在停止应用内核变量...
[ 确定 ]停止应用内核变量。
     正在停止加载内核模块...
[ OK ]停止加载内核模块。
     正在停止 LSB:提升网络接口....
[ 确定 ]停止目标交换。
[ 确定 ]停止恢复/保存当前时钟。
[ 确定 ]停止更新 utmp 关于系统引导/关机。
     正在停止创建易失性文件和目录...
[ 确定 ]停止创建易失性文件和目录。
[ 确定 ]已停止 LSB:提升网络接口。
     正在停止加载/保存随机种子...
[ 确定 ]停止目标本地文件系统。
     卸载/sys/kernel/debug...
[ 确定 ]停止加载/保存随机种子。
[ 确定 ]卸载/sys/kernel/debug.
[ 确定 ]已达到目标卸载所有文件系统。
[ 确定 ]停止目标本地文件系统(预)。
     正在停止在/dev/dev...中创建静态设备节点
[ 确定 ]已停止在/dev/中 创建静态设备节点。
     正在停止重新装载根文件系统和内核文件系统...
[ 确定 ]已停止重新装载根和内核文件系统。
[ 确定 ]达到目标关闭。
[236.298390] 重新启动:关闭电源
[241.777022] 内核严重错误-未同步:尝试终止初始化! exitcode=0x00000000
[241.777022]  
[241.786308] -[结束内核紧急状态-未同步:尝试终止初始化! exitcode=0x00000000
[241.786308]  
我将 JTAG 连接到电路板、这些是我发现的结果。
在 rtc-omap.c 中、有2个相关的断电函数: OMAP-RTC_POWER_OFF 调用 OMAP-RTC_POWER_OFF_PROGRAM。 如果我在 OMAP-RTC_POWER_OFF_PROGRAM 内的 HW 断点停止、则正常开发板也会进入内核紧急状态。 因此、可能是在设置或计数 ALARM2中断的时间。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    请查看此主题 :e2e.ti.com/.../612270 、其中的问题似乎与您的问题类似。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我遵循了该主题中的所有步骤、它解决了断电期间的内核紧急问题、但现在、除非我们按下复位按钮或完全放电所有电容器、否则电路板将无法启动。
    我并不真正理解为什么恢复 OMAP-RTC_PMIC_EXT_WAKEUP_POL 和 OMAP-RTC_PMIC_EXT_WAKEUP_EN 有助于防止内核严重错误、但确实如此。
    我需要创建用于开机和关机的解决方案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Evgeny、

    您是否还可以尝试使用"poweroff" Linux 命令而不是"systemctl power_off"?

    请注意、在保持 RTC 运行的同时关闭电路板电源被称为"仅 RTC 模式"、有关详细信息、请参阅以下指针:

    processors.wiki.ti.com/.../Linux_Core_Power_Management_User's_Guide_(v4.1)

    e2e.ti.com/.../478409

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

    你好,Pavel。

    poweroff 命令是我使用的命令。 您是否认为将 我们的器件置于仅 RTC 模式可以解决此问题? 那么、我不明白 为什么有一小部分电路板会出现此问题。

    我想弄清楚为什么在 OMAP-RTC_POWER_OFF ()中替换这一行  

    Val |= OMAP_RTC_PMIC_POWER_EN_EN|OMAP_RTC_PMIC_EXT_WAKEUP_POL|OMAP_RTC_PMIC_EXT_WAKEUP_EN; 

    到此

    Val |= OMAP_RTC_PMIC_POWER_EN_EN;
    val &=~OMAP-RTC_PMIC_EXT_WAKEUP_POL
    val &=~OMAP-RTC_PMIC_EXT_WAKEUP_EN; 

    防止内核 恐慌。

    它会禁用外部唤醒、因此我无法在不按下按钮的情况下为器件加电。

    它发生在相同的电路板上。 刷新无效。

    我还随附了.dts 文件中的 PMIOC 驱动程序部分

    /* PMIC 驱动程序*/
    /include/"tps65217.dtsi"
    
    &TPS{
    TI、PMIC 关断控制器;
    
    调节器{
    dc1_reg:电脑控制器@0{
    稳压器名称="VDD_DDR3";
    稳压器常开;
    };
    
    dcdc2_reg:电脑控制器@1{
    /* VDD_MPU 电压限制为0.95V - 1.325V、容差为+/-4%*
    稳压器名称="VDD_MPU";
    稳压器最小值微伏=<912500>;
    稳压器最大值微伏=<1378000>;
    稳压器启动;
    稳压器常开;
    };
    
    dcdc3_reg:电脑控制器@2{
    /* VDD_CORE 电压限制为0.95V - 1.1V、容差为+/-4%*
    稳压器名称="VDD_CORE";
    稳压器最小微伏=<925000>;
    稳压器最大值微伏=<1150000>;
    稳压器启动;
    稳压器常开;
    };
    
    ldo1_reg:电脑控制器@3{
    稳压器名称="VDD_1v8a";
    稳压器常开;
    };
    
    ldo2_reg:电脑控制器@4{
    稳压器名称="VDD_3v3a";
    稳压器常开;
    };
    
    ldo3_reg:电脑控制器@5{
    稳压器名称="VDD_1v8b";
    稳压器常开;
    };
    
    ldo4_reg:电脑控制器@6{
    稳压器名称="VDD_3v3b";
    稳压器常开;
    };
    
    };
    };
    

    感谢大家的帮助。  

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

    由于您有一些"好"和"坏"板、使用相同的软件、这似乎是"坏"板的硬件故障。 硬件问题似乎与 PMIC 和/或 RTC 有关。 请再次查看 AM335x 数据表、勘误表和参考设计原理图。

    另请参阅以下看起来相关的 e2e 线程:

    e2e.ti.com/.../612270
    e2e.ti.com/.../590750

    此致、
    帕维尔