生成 /sys/class/power_supply/BAT0 需要什么硬件?

生成 /sys/class/power_supply/BAT0 需要什么硬件?

我的笔记本电脑运行Arch,我可以在里面找到笔记本电脑电池的电池信息/sys/class/power_supply/BAT0。据我所知,我没有安装任何东西来提供这些信息。我希望在我的 Jetson AGX Xavier 上获得相同的信息,它由电池供电,但不知道最大能量、百分比等。我怀疑需要更多的硬件来收集这些数据。它是什么样子的,我可以自己实现吗?

答案1

那是系统文件系统,内核用来导出内容的伪或合成文件系统。它以 *nix 的方式与系统交互,就像旧的方式/proc与内核及其模块交互一样。

$ mount | grep sysfs
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)

你可以在这里阅读更多procfs 和 sysfs 有什么区别?

关于电池信息,您将需要一个可以与特定固件通信的内核模块。例如,我的 Debian 系统thinkpad_acpi加载了内核模块来实现这样的事情。关于写作我不能透露太多。根据我的阅读,某些固件可能会通过某些总线设备(例如 SMBus/I2C,可能作为键盘甚至鼠标)来与操作系统进行通信。过去,我将LM75A温度传感器直接焊接到内存 DIMM 的 SMBus 线路上,并使用 I2C 软件lm-sensors在调整内核模块和某处的设置后将其读出/proc/bus/...

顺便提一句。我想指出的是TLP项目可以tlp-stat --battery方便地报告/sys/class/power_supply/和许多其他与电源管理相关的事情。

但您首先需要一个“设备驱动程序”。如果您对内核 C 编码感到满意,您可以尝试一下。无论如何,您都将自己编写固件并构建硬件,因此至少没有什么神秘之处。我不了解 Jetson,但我认为 Linux 领域已经存在一些其他类似的自制项目。也许是为了树莓派?


我正在阅读 2013 年和 2017 年关于 ARM 上的 ACPI 的一些帖子,并想添加以下内容:

这些 ACPI/UEFI 表面上是 x86/BIOS 世界的事物和基于抽象标准的 afaics,但它们本身并不真正适用于 SoC/ARM 世界。还有一个问题是供应商固件“blob”如何与“开源工作”相适应。但不,我还没有看到针对 Raspberry 的 ACPI,尽管似乎存在一些“ACPIA”(针对 ARM 的 ACPI?)。

https://lwn.net/Articles/574439/ https://forums.raspberrypi.com/viewtopic.php?t=180001

相关内容