組み込みシステムでは、プログラム コードやキャリブレーション データなどの情報を、システムの電源が切断された後も利用できるように永続的に保存する必要があります。これを実現するために、PROM、EPROM、EEPROM、フラッシュ メモリなど、複数のメモリ デバイスとテクノロジが利用可能です。メモリ デバイスは製造当初は空の状態であるため、インストールしたシステムを使用する前にプログラムする必要があります。
現在の世代のマイクロコントローラには通常、フラッシュ メモリが含まれており、メイン コードがインストールされるとメモリの小さなブロックを再プログラムできますが、「空の」デバイスをプログラムするには、外部プログラマーが必要です。
PAL、PLA、PLD、CPLD、GAL、FPGAなどの頭字語で知られるその他の集積回路は、入力されるデータによってソフトウェア命令ではなく組み合わせロジック回路が定義されるプログラマブル ロジック デバイスです。これらのデバイスも、使用する前にプログラムする必要があります。これを実現する装置は、「デバイス プログラマー」、「チップ プログラマー」、「回路プログラマー」、「ICプログラマー」、「EPROMバーナー」など、さまざまな名前で呼ばれます。ただし、どのような名前であっても、それは単にデータをプログラム可能なICに転送するためのハードウェアです。
図1: FPGA用のユニバーサル プログラマー。出典: ラティスセミコンダクター
デバイス プログラマーには、一般的に次の4つの種類があります。
1) ギャングプログラマー: 大量生産時に複数の回路をプログラミングする場合。
2) ユニバーサルプログラマー: 開発および小規模生産向け。3) ポケットプログラマー: 開発およびフィールドサービス用のポータブルプログラマー。
4) 専用プログラマー: 特定の回路タイプ専用、例: EPROMプログラマー。この記事では、複数の種類のデバイスをプログラミングできるユニバーサル プログラマーについて具体的に説明します。これは非常に便利な機能です。なぜなら、最初のEPROMが発売されたのは1971年ですが、その後数十年にわたって、さまざまなプログラム可能なデバイスと、それらをプログラムする方法が数多く存在してきたからです。
プログラミング方法はすべて、1つの基本的な手順に従います。つまり、プログラムするデバイスをプログラマーのソケットに差し込むか、デバイスが搭載されているボードにアダプターを介してプログラマーを接続することで、デバイスをプログラマーに接続します。それが起こると、ピンドライバ回路を使用して接続ピンに信号を適用することにより、データがデバイスに転送されます。
ただし、この基本的な手順内でも、デバイス間で多くの違いが存在します。まず、プログラミング ピンには標準的なピン配置が1つもありません。次に、一部のデバイスではシリアル入力経由のデータが必要であり、一部のデバイスではパラレル入力経由のデータが必要です。デバイスは異なる電源電圧で動作し、プログラミングには別の電圧を使用します。
その結果、ユニバーサル プログラマーの各I/Oピンは、0 ~ 25 Vの範囲の電圧、最大40 MHzのクロック レート、および調整可能なしきい値を持つロジック入力を適用できる必要があります。そしてもちろん、増え続けるさまざまなパッケージについても忘れてはいけません。これらは通常、以下に示すようにソケット アダプターで対応されます。
図2: ユニバーサル プログラマ ソケット アダプタ。(出典:ラティスセミコンダクター)
ソフトウェアに関しては、バイナリ データ用のさまざまなファイル形式(モトローラSレコード、Intel HEX形式など)があり、ユニバーサル プログラマーはこれらも考慮する必要があります。多くのメーカーは、自社製品ラインのすべてのデバイスに対応するユニバーサル プログラマーを製造しており、設計者はさまざまなベンダーのデバイスで動作するユニバーサル プログラマーを入手することもできます。こうしたデバイスの1つは、332社のICメーカーの92,000種類のデバイスで動作すると主張しています。
可能な組み合わせが非常に多いため、さまざまなメモリ テクノロジを使用するラボでは、ユニバーサル プログラマーが不可欠なツールとなります。