工具/软件:Linux
我已尝试修改 bq27xxx_battery.c 驱动程序以检查一些寄存器值、并在需要时进行更改。 特别是、我正在尝试修改设计容量、设计能耗、端子电压和锥率。 我已经创建了一个 python 脚本、以 sluac5c 文档(bq27421-G1技术参考文档)的第3.1节为例、成功更新了这些值。 该脚本适用于我。 现在、我将尝试将该功能移植到驱动程序中、以便在加载驱动程序时、它将自行执行此类配置。 但是、我遇到了一个问题。 我写入这些寄存器的值不会持续存在。 加载驱动程序时会发生以下情况。
(1)将密封可读设计容量寄存器(3C/3D)的当前值与所需值进行比较。 如果它们不同、请继续。 我没有不同、这项任务已经完成。
(2)解封设备。 此操作成功。
(3)向设计容量寄存器(4A、4B)写入新值。 此操作成功。
(4)读取设计容量寄存器、确认其中包含步骤2中写入的值。 此操作成功
(5)密封设备。 我也可以说这是成功的。
但是、当我卸载并重新加载模块时、在重新加载的步骤1中、寄存器包含的是原始值、而不是在之前运行这些步骤期间分配的值。
芯片内是否有任何机制防止从内核空间进行 i2c 写入/密封操作? 内核空间中是否有任何内置预防措施来执行类似操作?
谢谢。