我正在使用运行专有固件但有一个封闭源代码库(.so 文件)的超级 I/O 芯片,其中包含可以调用以检索和设置该芯片上的某些信息的函数。目标是创建一个解决方案,该解决方案可以由“lm-sensors”中的“sensors”等程序读取,我认为这需要一个 hwmon 内核驱动程序模块。我看到的两种方法是:
- 创建一个基本的 hwmon 驱动程序和一个与该驱动程序通信并能够调用封闭源代码库中的各种函数的用户空间应用程序
- 对封闭源代码库进行逆向工程,并在 hwmon 驱动程序本身内完成所有操作
从与硬件本身交互的角度来看,第一个解决方案似乎是最可靠的,因为制造商的代码正在执行通信,但是,它具有三个单独的“移动”部分,这似乎是一个非常hacky的解决方案。但是,如果制造商更改芯片固件等,该解决方案还具有易于更新和维护的好处。
第二种解决方案需要大量的努力来实现,并且似乎是最不可靠和最容易出错的,因为逆向工程可能会错过可能在制造商代码中处理的边缘情况,但所有内容都包含在一个地方。
在这种情况下有正确的方法吗?