ファームウェアが実稼働環境で一意に識別されることは実用的ですか


12

大規模製造で利用可能なシステムがあり、一意のシリアル番号をファームウェアにプログラムしたり、PCBごとに空きメモリスペースをプログラムしたりできますか?

私のことを見つけたFDAは、医療グレードのデバイスのためにそれを強制開始することを決定しましたが、これは達成することは容易であるか、それはあなた自身の製造プロセスの開発が必要となるものですか?


7
どのようなシステムがありますか?多くのCPU(およびハイエンドMCU)には、一意の値で事前にプログラムされた何らかのIDレジスタが既にあります。
ドミトリーグリゴリエフ

4
あなたのMCUがすでに一意の識別子がありません。最初のチェック
Jeroen3

回答:


14

ほとんどのプロダクションプログラマは、プログラムされたメモリに一意のシリアル番号を挿入することができます。このプロセスは通常、シリアル化と呼ばます。これは、古いDatamanプログラマーによるSerialization画面の一部です。

Datamanプログラマーからのシリアル化表示


serializationは可能ですが、値の範囲が単語の境界を越える場合は特に注意が必要です。プログラミングを外部委託する場合、さらにトリッキーになります-よく知られているベンダーがこの問題を1回ではなく2回続けて間違っていた場合、問題の部分のプログラマーが複数バイトをシリアル化できないことを最終的に認めました。上位バイトの各値に対して一意のファイルを送信することになり、それぞれが下位をシリアル化する一意の256個のプログラミングジョブを実行しました。次の設計では、カスタムプログラマを作成しました。
クリスストラットン

14

ソフトウェアのみのソリューションについて質問しているかもしれませんが、ボードに安価なICを追加できる場合は、「シリコンシリアル番号」チップを使用できます。

これらは小さなROMチップで、各デバイスには一意の2進数が含まれています。例は、48ビットの一意の番号を持つマキシムのDS2401(1線バス)およびDS28CM00(I2C)です。

番号は、その製造業者によってその部品番号で作られたすべてのICの中で一意です。もちろん、世界中のすべての人が作ったすべてのSSNチップの中でユニークなわけではありません。しかし、彼らはあなたのボード用のデバイスを選択することを非常に簡単にし、これまでに作られた各ボードがそれから異なるユニークな番号を読み取ることを知っています。


1
これは、おそらく私が今まで見た中で最高のベンダーロックインアプローチです。
基本的な

「世界中のすべての人が作ったすべてのSSNチップの中でユニークではないことは明らかです」なぜこれが「明白」なのでしょうか?イーサネットMACアドレスなど、グローバルに一意であることを目的としたその他の識別子は、プレフィックス割り当てを使用してそれを実現します。ベンダーはプレフィックスを使用して、残りのビット/桁を選択します。
ベンフォークト

1
@BenVoigt MACアドレスはグローバルに一意ではありません。ただ地域的にユニークです。アジアに来て、MACアドレスを持つデバイスを購入すると、ヨーロッパのデバイスと競合する可能性があります。多くのデバイスでは、MACアドレスを変更して、所有しているデバイスと故意に衝突させることさえできます。
スリーブマン

こんにちは@BenVoigt、多くのSSN ICファミリが存在し、多くのプロセッサ/ MCUには一意のIDがあり、それらはICファミリにのみ一意です。いくつのグローバルに一意のIC番号付けスキームをリストできますか?(IMEIのような製品番号ではありません)
TonyM

5

はい、確かに、前述のとおり、MACアドレスは明らかなものであり、通常、Macが別の部分である場合はその隣のフラッシュ/ EEPROM、または他の場所のフラッシュ/ EEPROMにあります。重要な製品データ(ボードシリアル番号など)は、別のeepromまたはフラッシュ、または他のファームウェアの格納に使用される同じデバイスに配置できます。

システム設計の一環として、ファームウェアのフィールドアップグレードが可能な状況などがある場合、ファームウェアフラッシュを消去して再プログラムするときにVPDデータを消去したくないので、書き込み保護機能を使用してそれを解決する必要がありますフラッシュデバイスの(VPDをオンバンク/エリアに置き、そのエリアをロックする)、書き込み保護ピンおよび/またはVPDをmfgでプログラムできるようにする他のソリューションを解放する方法を必ずしも公開/文書化する必要はありませんそれ以外の場合はロックしておきます(必要に応じてプルダウン/アップし、ICT中またはその周辺でプログラムすると、フィクスチャがそれを他の方法でプルできます)。

おそらくあなたが考えるよりも一般的です、医療はこれを行う人々の非常に小さなサブセットです。テレビのリモコンではなく、おそらくマウスやキーボード、そして間違いなく携帯電話などです。

ボード上でステッカーも使用されている場合は、バーコードが付いていることがあります。これにより、治具またはオペレーターの製造中にバーコード、アセンブリrevなどをスキャンし、そのボードのVPDに追加できます。


フィールドアップグレード用に設計している場合、少なくともファームウェアにコンパイルされているバージョンファームウェアを知りたいが、フィールドアップグレードを行う前に、これが特定のプラットフォーム/ボードであるかどうかを確認する必要がある場合がある/適切なファームウェアやフィールドプログラミングのニュアンスなど)を使用するので、VPDを保護するだけでなく、そのファームウェアのアップグレードを可能にする設計の一部としてVPD情報が必要になる場合があります。
old_timer

3

すべての製品に固有のコードを使用することは、可能性が高く実行可能です。それを行う1つの方法は、プログラムされたすべてのデバイスのファームウェア識別番号を連続的に変更するソフトウェアプログラミングシステムを持つことです。一部のシステムでは、これは簡単です。たとえば、一部のマイクロコントローラーには、IDを保存するために予約されたeepromの場所があります。

別の方法は、一意のハードウェアIDを追加することです。この例としては、ダラスセミ(現在のマキシム・インテグレーテッド)シリコンのシリアル番号集積回路(DS2401)があります。このデバイスはシリアル番号を提供し、一意であることを保証します。このシリアル番号を使用して、特定の製品の一意のアドレスを推測できます。


2

大量生産されたネットワークカードは、製造中にフラッシュ/ EEPROMにプログラムされたハードウェア(MAC)アドレス形式のシリアル番号を持っています。

ステッカーとして製品のケーシングに付けられたシリアル番号は削除または再適用できますが、シリアル番号を特定のボードに焼き付けると、ボードの使用状況を追跡する別の方法が発生します。ほとんどの場合、このシリアル番号は医療文書に印刷され、どのデバイスが医療診断または操作に使用されたかを正確に追跡します。


2

...これは簡単に達成できるものですか、それとも独自の製造プロセスを開発する必要がありますか?

約10年前、私はクライアントの1人のために開発した医療機器のファームウェアと同様の状況にありました。これはクラス2デバイスであり、水準を引き上げました。生産量は数百単位でした。

シリアル番号を自動または半自動で書き込むことができる市販のプログラマーは見つかりませんでした。回避策を行いました。キャリブレーションとテストに使用される工場ファームウェアがありました。この工場出荷時のファームウェアは、シリアルポートを介して他のテスト機器と通信しました。このテストの一環として、マイクロコントローラーのEEPROMに保存されているシリアル番号をダウンロードします。(工場出荷時のファームウェアは、フィールドファームウェアによって上書きされました。)


0

SEGGERプロダクションプログラマーは、MCUへの固有のシリアル番号のフラッシュをサポートしています。


0

これに関する多くのオプションがある場合(この回答から取得したものもあります):

  1. 使用可能な場合は、マイクロコントローラーの一意のIDを使用します。
  2. 専用I / Oに外部ジャンパーを設定して、一意のアドレスを選択します。
  3. 生産中にUIDをフラッシュまたはEEPROMにプログラムします。ファームウェアファイル自体は、シリアル化によって変更できます。アセンブリラインにこの機能がなくてもカスタマイズできる場合は、16進エディターでファームウェアファイルのオフセットを見つけ、お気に入りのスクリプト/言語を使用してファイルを変更することで簡単に行えます。場合によっては、リンカースクリプトを使用してこのアドレスを「修正」できます。
  4. UIDを提供する外部チップを推論します。
  5. サービスインターフェイスまたはブートローダーで内部フラッシュ/ EEPROM(利用可能な場合)を構成します。これは、テスト中に行われる場合もあります(場合によっては、「生産ライン」ではありません)。一部のデバイスにはこのサービスインターフェイスがあり、認定された技術者の製造者のみが値を変更できます。この値は変更不可能である必要があるため、コードが変更された値にフラグを立て、それ以上の変更を禁止していることを確認してください。ブートローダーがある場合は、フィールドアップグレードでこのセクションが上書きされないようにしてください。

0

優れたハードウェアRNGと16バイトの追加の永続ストレージにアクセスできる場合、生産プロセスをあまり変更しない1つの方法は、最初の起動時にv4 GUIDを生成して保存することです。実行後のプログラミング後のテスト中に、ファームウェアにシリアルにダンプさせることができます。それはシーケンシャルではありませんが、それはほとんどのアプリケーションにとって重要ではありません。


0

各PCBでのRFIDまたはスマートタグの使用が要件を満たしている場合、それは実装の最も簡単な方法になります-あなたの制御下で。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.