クレーム
液晶表示が消える・・・のクレームを頂きました。
初期化で直る事より、CPUチップに内蔵しているEEPROMの不良だと思います。
EEPROMは別名不揮発性メモリと呼ばれ、Higlasiでは液晶の濃さや数種のパラメータ値を格納してるのですが、今回のトラブルはその数値が揮発(消える)事より起きていると思います。EEPROMに関してはこれまでも同様のトラブルがあり、検査で発見できる様方法を改善してきたのですが・・・。
根本的な解決方法はEEPROMを使わない事ですが・・・。
もう少し考えてみます。
初期化で直る事より、CPUチップに内蔵しているEEPROMの不良だと思います。
EEPROMは別名不揮発性メモリと呼ばれ、Higlasiでは液晶の濃さや数種のパラメータ値を格納してるのですが、今回のトラブルはその数値が揮発(消える)事より起きていると思います。EEPROMに関してはこれまでも同様のトラブルがあり、検査で発見できる様方法を改善してきたのですが・・・。
根本的な解決方法はEEPROMを使わない事ですが・・・。
もう少し考えてみます。
コメント
数千個、数万個と作っていると、NVMだけでなくCPUそのものの演算器異常やポート異常による返却品も、どうしても発生します。
車載部品製造業に勤めている私にも、頭の痛い問題です。
品質保証部の軍曹からは、「10万個のうちの1個の発生率でも、顧客にしてみれば1個中1個、100%の発生率だ」とどやされます。(^^;
某エアバッグメーカーで起きたことは、全く他人事ではありません。
我々のNVM化け対策は、
・SUMやCRCを用いて起動時に異常を検出する
・異常を検出したらデフォルトのROM値で動作させる(NVM異常警告を出す)
・重要なデータは2面化し、起動時に読み出した値を比較する。
値が違う場合、SUM/CRCが正常な側のデータを使用する。
2エリアとも異常だった場合は異常警告。
2エリアとも正常だった場合(人為的に書き換えたり、ソフトのバグがあったりしない限りは滅多に起きないことですが…)は、値が妥当な範囲内であることを確認した上でどちらか1面のデータを決め打ちで使う。
ぐらいの、ごくごくオーソドックスな方法です。
でも、このオーソドックスな方法を実装するのが、意外と面倒なんですよね…
ただのバグではなく、書き込み中に電源断が発生し、データ書き込み途中でCPUが死んでしまう、というパターンです。
これを防ぐには、主電源がOFFされても、ある程度容量のあるコンデンサに溜めた電荷でCPUだけ延命させる回路と、主電源がOFFされていることをADポートで感知する必要があります。
主電源OFFを感知したら、新たなデータ書き込み要求は拒否し、今書いているエリアだけを書き切ってプログラムを動作停止します。
1エリアを書き込むのに掛かる時間だけ、コンデンサの電荷でCPU動作を賄えるかどうか、コンデンサの容量とエリアサイズを勘案する必要があります。
そうでもない(笑)程度の部品では回路を省き、データが壊れる前提でソフトを作ります。
データを2面化し、起動時に読み出して片面異常であれば、正常なほうのデータで異常面を上書き修復します。
ただし、起動時に電源電圧が不安定な特性等があれば、何らかの手段そこを検知し、そのタイミングを避けて安定動作しているときに書き込みを行いましょう。(自動車ではクランキング中のNVM書き込みは御法度です)
勿論、両方壊れたらアウトですが、電断で壊れるエリアは(並列書き込みしてない限り)1面だけなので、電断リスク対策では両面異常は考慮する必要がありません。
あと、ここではCPU内の記憶領域と書かれていたので NVM前提で書きましたが、外付けの EEPROM では、領域の始めと終わりはデータ領域に使わないほうが良いです。
Higlasiで実装済みの対策は電源投入時、EEPROMに格納されている数値をチェックし値が範囲を超えていたら初期値に戻す方法を採用しております。今回の液晶が消える現象ですが、お客様がコントラストを調整できる機能として搭載しているので、初期化チェックは不要と判断し、プログラム書き込み後3日以上経過し、問題が無い事を確認してからの出荷だったのですが、この方法ではNGって事がわかりました。
某エアバックの件、担当者は死にたい気持ちですよねきっと・・・。
僕もリーマン時代、担当製品のプログラムの不備で数千台をリコールしたことがあります。その不備で実際問題になる確率はほぼゼロだったのですが、分かった以上は・・・。
難儀な商売です。
でも、100%は無理な話で、取説に無駄な文言を・・・(笑
最近は「機能安全」ってのが流行りです。
どんどん、どんどん、作るのが面倒臭くなっていきます。。。orz