我的笔记本电脑运行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