您好!
我们目前拥有一个基于 AM5728 IDK 进行定制设计的电路板。 我们希望电路板在通电时自动加电、因此我遵循了此论坛中的建议。 我还在这个论坛上发布了一些问题。
https://e2e.ti.com/support/power_management/pmu/f/200/t/555645
我们注意到、如果我们尝试关闭、则会发生内核紧急情况、我想知道 PMIC 更改是否与此更改有关。
此致、
Kevin
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.
您好!
我们目前拥有一个基于 AM5728 IDK 进行定制设计的电路板。 我们希望电路板在通电时自动加电、因此我遵循了此论坛中的建议。 我还在这个论坛上发布了一些问题。
https://e2e.ti.com/support/power_management/pmu/f/200/t/555645
我们注意到、如果我们尝试关闭、则会发生内核紧急情况、我想知道 PMIC 更改是否与此更改有关。
此致、
Kevin
Yordan、您好!
我与 Kevin 合作、当断电导致恐慌时、我们会看到以下消息:
[ 确定 ]目标声卡已停止。
正在停止保存/恢复声卡状态...
停止用户 root 的会话 C1。
[ OK ] Closed Load/Save RF kill Switch Status /dev/rfkill Watch。 正在停止 LSB:在引导时启动 busybox udhcpd ...
正在停止 LSB:自动工具...提交内核崩溃签名...
正在停止 LSB:启动 NTP 守护程序...
正在停止递延执行调度程序...
停止 D 总线系统信息总线。
正在停止 LSB:将 CPU 频率调节器设置为"按需"...
正在停止 LSB:高级 IEEE 802.11管理守护程序...
正在停止 LSB:设置 cpufreq 内核参数...
正在停止 Zabbix Agent...
正在停止 LSB:语音调度程序...
正在停止 OpenBSD Secure Shell 服务器...
正在停止 LSB:自动崩溃报告生成...
正在停止 ACPI 事件守护程序...
[ 确定 ]停止目标登录提示。
正在停止 tty1上的 Getty...
正在停止 ttyS0上的串行 Getty...
[ 确定 ]已停止延迟执行调度程序。
[ 确定 ]已停止系统日志服务。
[ 确定 ]已停止 ACPI 事件守护程序。
[ 确定 ]停止 cgroup 管理守护程序。
[ 确定 ]停止常规后台程序处理守护程序。
[ 确定 ]已停止 OpenBSD Secure Shell 服务器。
[ 确定 ]已停止 ttyS0上的串行 Getty。
[ 确定 ]已在 tty1上停止 Getty。
[ 确定 ]已停止 UID 0的 User Manager。
[ 确定 ]已停止 Zabbix Agent。
[ 确定 ]已停止保存/恢复声卡状态。
[ 确定 ]已停止用户 root 的会话 C1。
[ 确定 ]已停止用户 root 的会话 C2。
[ 确定 ]已停止用户 root 的会话 C3。
[ 确定 ]已停止 LSB:工具自动... 提交内核崩溃签名。
[ 确定 ] D 总线系统信息总线已停止
[ 确定 ]已停止 LSB:高级 IEEE 802.11管理守护程序。
[ 确定 ]已停止 LSB:语音调度程序。
[ 确定 ]已停止 LSB:启动 NTP 守护进程。
[ 确定 ]停止 LSB:将 CPU 频率调节器设置为"按需"。
[ OK ] stopped LSB:设置 cpufreq 内核参数。
[ 确定 ]停止 LSB:自动生成崩溃报告。
正在停止 LSB:加载启用 cpufreq 缩放所需的内核模块...
[ 确定 ]已停止 UID 0的 User Manager。
[ 确定 ]停止目标系统时间同步。
正在停止图4打印守护程序...
[ 确定 ]已删除根的层用户层。
正在停止登录服务...
[ 确定 ]已删除片 system-Getty.slice。
正在停止允许用户会话...
[ 确定 ]已删除片 system-serial\x2dgetty.slice。
[ 确定 ]已停止/etc/rc.local 兼容性。
[ 确定 ]停止的目标网络处于联机状态。
[ 确定 ]登录服务已停止。
[ 确定 ]图4打印守护程序已停止。
[ 确定 ]已停止允许用户会话。
[ OK ] stopped LSB:加载启用 cpufreq 缩放所需的内核模块。
正在停止分析 journald 日志并推入 zabbix 梯形程序...
[ 确定 ]停止解析 journald 日志并推入 zabbix 梯形滤波器。
[ 确定 ]目标网络已停止。
正在停止提升网络接口...
[ 确定 ]停止 LSB:在引导时启动总线框 udhcpd。
[ 确定 ]停止目标基本系统。
[ 确定 ]停止目标层面。
[ 确定 ]已删除层用户和会话层。
[ 确定 ]目标套接字已停止。
[ 确定 ]已关闭 Syslog 套接字。
[ 确定 ]已关闭 acpid 侦听套接字。
[ 确定 ]关闭的 D-Bus 系统消息总线插座。
[ 确定 ]停止的目标路径。
[ 确定 ]已停止将密码请求转发到 Wall Directory Watch。
[ 确定 ]已停止 ACPI 事件检查。
[ 确定 ]已停止向控制台目录监视发送密码请求。
[ 确定 ]停止目标远程文件系统。
[ 确定 ]停止目标远程文件系统(预)。
[ 确定 ]停止目标系统初始化。
正在停止加载/保存随机种子...
[ 确定 ]停止目标加密卷。
[ 确定 ]停止创建易失性文件和目录。
[ 确定 ]停止目标交换。
[ 确定 ]停止加载/保存随机种子。
[ 确定 ]停止提升网络接口。
[ 确定 ]停止目标本地文件系统。
卸载/run/user/0...
卸载/run/cgmanager/fs...
[ 确定 ]停止应用内核变量。
[ 确定 ]停止目标网络(预)。
[ 确定 ]卸载/run/user/0.
[ 确定 ]卸载/run/cgmanager/fs.
[ 确定 ]已达到目标卸载所有文件系统。
[ 确定 ]停止目标本地文件系统(预)。
[ 确定 ]已停止在/dev/中 创建静态设备节点。
[ 确定 ]已停止重新装载根和内核文件系统。
[ 确定 ]达到目标关闭。
[4914.198026] reboot:power down
[4914.202910]内核严重错误-未同步:尝试终止初始化! exitcode=0x00000000
[4914.202910]
[4914.226530]--[结束内核紧急状态-未同步:尝试终止初始化! exitcode=0x00000000
[4914.226530]
您好!
由于我无法重现此问题、您能否在以下函数中添加调试打印:
kernel/reboot.c:
void kernel_power_off (void)
{
kernel_shutdown_prepare (system_power_off);
IF (PM_POWER_OFF_PREPARE)
=>在此处添加调试打印。
PM_POWER_OFF_PREPARE ();
=>在此处添加调试打印
migrate_for_reboot_cpu();
=>在此处添加调试打印
syscore_shutdown (); =>跟踪原始函数(drivers/base/syscore.c) 并在其中添加调试打印。
PR_emergg ("断电\n");
kmsg_dump (kMSG_Dump_POWEREROFF);
MACHINE_POWER_OFF (); =>跟踪原始函数(arch/arm/kernel/reboot.c)并在其中添加调试打印。
}
arch/arm/kernel/reboot.c:
void machine_power_off (void)
{
=>在此处添加调试打印
LOCAL_IRQ_DISABLE();
=>在此处添加调试打印
SMP_SEND_STOP();
=>在此处添加调试打印
如果(PM_POWER_OFF)
PM_POWER_OFF ();
=>在此处添加调试打印
}
drivers/base/syscale.c:
void syscore_shutdown (void)
{
struct syscore_ops *ops;
=>在此处添加调试打印
互斥锁(&SYSCALE_OPS_LOCK);
list_for_each_entry_reverse (ops、&syscree_ops_list、node)
if (ops->shutdown){
=>在此处添加调试打印
if (initcall_debug)
PR_INFO ("PM:调用%pF\n"、ops->shutdown);
OPS->SHUTDOWN();
}
=>在此处添加调试打印
互斥锁(&SYSCALE_OPS_LOCK);
}
希望这将提供更详细的输出、并帮助我们准确跟踪内核参数。
此致、
Yordan
当退出 kernel_power_off 函数时、问题似乎就会发生。 以下是我的调试打印语句:
[ 确定 ]达到目标关闭。
[202.845679] 重新启动:在 migrate_to reboot_cpu()之前
[202.850552] SYSCALE_SHUTDOWN:在 mutex_lock 之前
[202.855101] SYSCALE_SHUTDOWN:在 ops->SHUTDOWN 之前
[202.859934] syscore_shutdown:ops->shutdown 之前
[202.864744] syscare_shutdown:ops->shutdown 之前
[202.870628] SYSCALE_SHUTDOWN:在 mutex_unlock 之前
[202.875354] 重新启动:关闭电源
[202.878439] machine_power_off:local_IRQ_disable 之前
[202.883685] MACHINE_POWER_OFF:在 SMP_SEND_STOP 之前
[202.888584] MACHINE_POWER_OFF:在 PM_POWER_OFF 之前
[202.893391] MACHINE_POWER_OFF:调用 pm_POWER_OFF
[202.898552] MACHINE_POWER_OFF:Pm_POWER_OFF 之后
[202.903274] 重新启动:退出 kernel_power_off
[202.909154] 内核严重错误-未同步:尝试终止初始化! exitcode=0x00000000
[202.909154]
[202.918334] --[结束内核紧急状态-未同步:尝试终止初始化! exitcode=0x00000000
[202.918334]
kernel_power_off 是系统断电前运行的最后一个函数吗? PMIC 何时被告知关闭组件?