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.

[参考译文] Linux/BQ27421-G1:BQ27421-G1

Guru**** 2587365 points
Other Parts Discussed in Thread: BQ27421-G1

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/592968/linux-bq27421-g1-bq27421-g1

器件型号:BQ27421-G1

工具/软件:Linux

我已尝试修改 bq27xxx_battery.c 驱动程序以检查一些寄存器值、并在需要时进行更改。  特别是、我正在尝试修改设计容量、设计能耗、端子电压和锥率。  我已经创建了一个 python 脚本、以 sluac5c 文档(bq27421-G1技术参考文档)的第3.1节为例、成功更新了这些值。  该脚本适用于我。  现在、我将尝试将该功能移植到驱动程序中、以便在加载驱动程序时、它将自行执行此类配置。  但是、我遇到了一个问题。  我写入这些寄存器的值不会持续存在。  加载驱动程序时会发生以下情况。

(1)将密封可读设计容量寄存器(3C/3D)的当前值与所需值进行比较。  如果它们不同、请继续。  我没有不同、这项任务已经完成。

(2)解封设备。  此操作成功。

(3)向设计容量寄存器(4A、4B)写入新值。  此操作成功。

(4)读取设计容量寄存器、确认其中包含步骤2中写入的值。  此操作成功

(5)密封设备。  我也可以说这是成功的。

但是、当我卸载并重新加载模块时、在重新加载的步骤1中、寄存器包含的是原始值、而不是在之前运行这些步骤期间分配的值。

芯片内是否有任何机制防止从内核空间进行 i2c 写入/密封操作?  内核空间中是否有任何内置预防措施来执行类似操作?

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Brian、

    内核空间中没有 i2c 内置写入防护、但由于某些原因、i2c 写入可能会失败。 我建议您在进行 i2c 写入时添加调试消息、并在写入失败时打印一些日志。

    BR
    Tsvetolin Shulev
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Tsvetolin:

    我找到了问题。  我没有在内核模块中写入新的校验和、我在 python 脚本中的位置。

    -Brian