6489524 ランダム
 ホーム | 日記 | プロフィール 【フォローする】 【ログイン】

ふるた技工所(てっこうしょ)

ふるた技工所(てっこうしょ)

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

キーワードサーチ

▼キーワード検索

プロフィール

Aちゃん22

Aちゃん22

フリーページ

2016.10.19
XML
カテゴリ:ソフト開発日誌
(2) なぜ 2 つも充電回路が?の続き。簡単に読めそうな所から進める。おおよそ初期設定だったり、毎回同じ値を設定している所だ。drivers/battery_v2/da9155_charger.c:da9155_charger_initialize() (以降リンク先では drivers/battery_v2 の方を見て欲しい) に VBAT_OV (VBAT overvoltage. VBAT_OV=3.6+(N×0.025) V.) の設定がある。

/* VBAT_OV: MAX(5V) */
da9155_update_reg(charger->i2c, DA9155_CONTROL_C, 0x38, DA9155_VBAT_OV_MASK);

※ 関数などのリンクは CGI と ポート 8082 のへの接続なので proxy や ファイアウオールが運用されているところではアクセスできないかもしれない。

探すとこれ以外の場所で DA9155_CONTROL_C.VBAT_OV を設定している箇所は無い。0x38==56 だ。計算すると 3.6+56*0.025=5.0 となる。電池電圧上限が 5.0V に設定されている。先の調査で充電電圧は 4.4V だと分かっている。

保護機能の一つを実質的に無効にしている。慎重さに欠けていると思う。これだけで危険と判断できない。他のアルゴリズム(回路)で保護されている可能性も有る。

もしかして何かの拍子に reset されて 強い保護が掛かる? DA9155M のデータシートを読んでも Reset 値が分からない。Reset したらどのような設定になるのか分からないデバイスで電池充電するのだろうか? SAMSUNG 向けに Reset 値をカスタマイズしてある?

da9155_charger_initialize() がどこから呼び出されるか、辿ってみる。da9155_set_charger_state(), da9155_irq_handler(), da9155_chg_set_property() だ。

da9155_set_charger_state() は呼び出し元を辿っていくと /sys/class/power_supply/SupplyDevice/ 以下の property ノード読み書きに繋がる。root 権限を持つアプリなら電池充電制御ができてしまう。他の property 実装もついでに読むとアプリが主導して電池制御を行っている(あるいは行える)ように読める。アプリが強制終了したら電池の制御はどうなるのだろう?

da9155_set_charger_state() を読んでいこう。保護がない。enable != 0 で呼び出すと、電池が満充電になった(充電終止電圧に達した)後でも構わず DA9155M の充電加速(BUCK_EN)を始めてしまう。STATUS_A に異常が示されている場合は何もせず戻るから大丈夫と思っている節がある。TJUNC_WARN=1 (ジャンクション温度 70℃ DA9155_CONTROL_E)でも強行だ。忘れてはいけない。VBAT_OV=5.0V なのだ。
if (enable){
        da9155_charger_initialize(charger);
        da9155_read_reg(charger->i2c, DA9155_STATUS_A, &status);
        if (status & 0x7E ){
                pr_info("%s: STATUS_A(0x%X)\n", __func__, status);
                return;
        }
 
        current_setting = da9155_get_charge_current(charger);
        da9155_set_charge_current(charger, 500);
        da9155_update_reg(charger->i2c, DA9155_BUCK_CONT, DA9155_BUCK_EN_MASK, DA9155_BUCK_EN_MASK);
        msleep(10);
        if (current_setting > 500)
                da9155_set_charge_current(charger, current_setting);
}
da9155_irq_handler() を読んでみよう。外部電源供給状態で EVENT_B.E_RDY == 1 になったら(充電加速できない事象が発生したら)、充電を再開するように書かれている。え?再開できない状況かもしれないのに?
if (!da9155_read_reg(charger->i2c, DA9155_EVENT_A, &event_a) &&
                !da9155_read_reg(charger->i2c, DA9155_EVENT_B, &event_b)) {
 
        if ((event_b & 0x1) && (charger->cable_type != POWER_SUPPLY_TYPE_BATTERY)) {
                dev_info(charger->dev, "%s: E_RDY Event occured", __func__);
                da9155_mode_change(charger, da9155_check_cable_type(charger->cable_type));
                da9155_charger_initialize(charger);
                da9155_set_vindrop_vbatov(charger);
        }
da9155_chg_set_property()を読んでみる。ここも、da9155_set_charger_state() で気づいたこととほぼ同様の流れになっている。
case POWER_SUPPLY_PROP_ONLINE:
        charger->cable_type = val->intval;
        if (val->intval != POWER_SUPPLY_TYPE_BATTERY) {
                da9155_mode_change(charger, da9155_check_cable_type(charger->cable_type));
                charger->prev_cable_type = charger->cable_type;
                da9155_charger_initialize(charger);
                da9155_set_vindrop_vbatov(charger);
        } else {
                da9155_mode_change(charger, DISABLE);
                charger->prev_cable_type = POWER_SUPPLY_TYPE_BATTERY;
        }
        break;
充電加速を指示されたら、どんな状況でも充電加速を始める。アプリ(Userland) のコードは .zip の中に入っているのかな... もう少し driver code を読んでみるか。
2016.10.22 追記 (4) MAX77854 の設定をアプリから変更して解決しようとした?





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2016.10.22 10:07:31
コメント(2) | コメントを書く
[ソフト開発日誌] カテゴリの最新記事


■コメント

お名前
タイトル
メッセージ
画像認証
別の画像を表示
上の画像で表示されている数字を入力して下さい。


利用規約に同意してコメントを
※コメントに関するよくある質問は、こちらをご確認ください。


Re:Galaxy note 7 の充電ドライバを読んでみる - (3) DA9155M の VBAT_OV が 5.0V 固定(10/19)   あおもん さん
面白いです。DA9155MはGalaxy S7には使われてないんですね。 (2017.02.15 16:00:04)

Re[1]:Galaxy note 7 の充電ドライバを読んでみる - (3) DA9155M の VBAT_OV が 5.0V 固定(10/19)   Aちゃん22 さん
あおもん さん こんにちは、
読んで頂きうれしく思います。そうなんですよね、Galaxy S7 のソースコードもチラ見していたのですが DA9155M を使っていない様子でした。大きな差だと思っています。
SAMSUNG の説明では殆どソフトに触れず、もっと調べても良かったのではと思いました。部品は多くの人に注目されるし、分りやすい(分ったつもりにさせる)説明が出来ます。充電ドライバ屋をしていた立場からすると、ソフトの重要性も高く製品の善し悪しや安全性に対して影響が大きい要素だと思っています。
高品質なソフトを作れなければ(そしてそれを評価出来なければ)、何時までも日本も部品屋のままだと危惧しています。 (2017.02.16 18:20:03)

カレンダー

カテゴリ

サイド自由欄

コメント新着

ご無沙汰してます@ Re[4]:ようやく転職エージェントに会うも - 3 分で終了(04/01) Aちゃん22さんへ かなり昔のことですが、…
Aちゃん22@ Re[3]:ようやく転職エージェントに会うも - 3 分で終了(04/01) ご無沙汰してますさんへ、こんにちは、 N …
ご無沙汰してます@ Re[2]:ようやく転職エージェントに会うも - 3 分で終了(04/01) Aちゃん22さんへ ご返信ありがとうござい…
Aちゃん22@ Re[1]:ようやく転職エージェントに会うも - 3 分で終了(04/01) ご無沙汰してますさん、こんにちは。 たま…
ご無沙汰してます@ Re:ようやく転職エージェントに会うも - 3 分で終了(04/01) 更新を楽しみにしてました。個人事業主に…

ニューストピックス


© Rakuten Group, Inc.