それはたくさんの質問です!ここにいくつかの答えがあります:
コンパイルされたバイナリをARMプロセッサに取り込むにはどうすればよいですか?
それは多くの要因によって異なります。
JTAGは通常の方法ですか(私の研究が示しているのはそれだと思います...)?
ほとんどの(おそらくすべての)最新のARMベースのデバイスには、オンチップデバッグに接続するためのJTAGインターフェイスが含まれています(FPGA上のソフトコアはおそらく例外です)。これは通常、オンチップまたは外部フラッシュをプログラムしたり、RAMに直接ロードしたりするために使用できます。JTAGインターフェイスは、オンチップのデバッグおよびトレース機能へのインターフェイスでもあります。一部のデバイスには、たとえばARMのSWDなど、追加のデバッグ/プログラミングインターフェイスがあります。
それが唯一の方法ですか?
ある場合には。一部のARMベースのマイクロコントローラには、シリアル、USB、またはオンチップフラッシュをプログラミングするその他の手段をサポートするオンチップブートローダーROMが含まれています。このような機能は非常に単純で、RAMから実行され、実際のフラッシュプログラミングを実行するセカンダリブートローダーをロードして実行することだけを目的としている場合があります。
それが有効な方法である場合、正確にどのようにそのように使用しますか?
適切なホストソフトウェアを使用する。JTAGは非常にシンプルなインターフェイスであり、特定の機能を定義するのではなく、データ転送の手段のみを定義します。通常、プログラミングソフトウェアは、通信しているデバイスを知る必要があり、フラッシュメモリがオンチップでない場合は、フラッシュデバイスとそのアドレスを知る必要があります。多くの場合、開発ツールチェーンには、特にオンチップメモリを備えたデバイスのデバイスプログラミングのサポートが含まれます。GNUツールチェーンを使用している場合は、OpenOCDを使用して、デバイスのプログラミングとGNUデバッガーのインターフェイスの両方を行うことができます。
そうでない場合、それは何ですか/どうすればよいですか?
ターゲットがCOTSの場合、たとえばUSB、シリアル、またはイーサネットを介したソフトウェア更新をすでに許可しているブートローダーが含まれている可能性があります。
さらに、Arduinoなどを使用して即席のJTAGインターフェイスを作成できます(それが実際にARMデバイスのプログラミングに必要な場合)。。。?
おそらく、JTAG自体の実装は簡単だと言ったように、問題は、使用するホストソフトウェアと互換性を持たせること(またはソフトウェアを互換性を持たせること)です。最も単純な「ウィグラー」JTAGアダプターは、PCのパラレルポートI / Oを使用して実装されます。特に高速ではありませんが、機能します。
私は基本的に質問しています:JTAGはARMの世界のデバイスプログラマーですか?
もともとはバウンダリスキャンテストインターフェイスとして定義されていましたが、現在では、オンチップデバッグとプログラミングを含むほとんどのマイクロプロセッサとマイクロコントローラで広く使用されています。
Arduino(Arduino wiggler Clone oo)でスプーフィングできますか?JTAGがそうでない場合、それは何ですか、そして私はそれをスプーフィングできますか?
「なりすまし」の問題ではなく、インターフェイスはさまざまな方法で実装できます。どのように実装するかは、主にインターフェイスの速度に影響します。16 MHzを達成することはできますが、より単純なパラレルポートウィグラーはおそらく500kHz以下を維持します。これは同期インターフェイスであるため、可変クロックレートは問題になりません。
ああ...そして、JTAGがどのように機能するかについてのより良い説明が必要かもしれません。
私はウィキペディアのJTAGでの説明よりもうまくやることはできないと確信しています。ただし、ターゲットデバイスでの実装については、パーツのリファレンスマニュアル/データシートを参照してください。
私は古いPalmDevice(LifeDrive)を持っています。これにはXScalePXA270プロセッサが搭載されていると思います。
「信じる」だけではおそらく十分ではありません。あなたは知る必要があるでしょう。JTAGピンはボード上でも露出していますか?消費者向け製品では、実際のJTAGコネクタを省略するのが一般的です。ある場合でも、それは独自のコネクタとピン配置である可能性があります(JTAG自体はどちらも定義せず、ARM用に定義されたものもいくつかありますが、開発ボードにあるものは最終的な消費者製品に含まれない場合があります。
基本的に、これは、本質的に大量のセンサーやその他のさまざまな入力と出力を試してみたり、ARMアセンブリ言語に慣れたりするための良い方法です。
露出したI/Oピンとインターフェイスを備えた既製の開発ボードを入手することをお勧めします。民生用製品では、ターゲットアプリケーションに必要なピンのみが露出する可能性があり、それでもBGAデバイスに接続されている場合はアクセスできない可能性があります。また、XScaleはARMデバイスの複雑な端にあります(ほぼARM9とARM11の間にあります))、PLLクロック制御、SDRAM制御とタイミング、MMU構成などのデバイスに慣れていない場合は、もっと簡単なものを検討することをお勧めします。それだけでなく、フラッシュとRAMの両方がオフチップになるため、メモリやその他の外部デバイスのアドレスマッピングの詳細、および必要なSDRAMタイミングの詳細が必要になります。消費者向けデバイスであるため、このような詳細はリバースエンジニアリング以外では利用できない場合があります。
とはいえ、ブートローダーに関する以前のコメントに関して、Palmはデバイスにユーザーがインストール可能なROMアップデートを提供するため、ブートローダーが必要です。ただし、画像ファイル形式とデータ転送プロトコルの詳細が必要です。これらが公開される可能性は低く、リバースエンジニアリングが難しい可能性があります。
組み込みプログラミングをいじりたいだけなら、代わりにArduinoでやります。)
低コストのARM開発ボードがたくさんあります。たとえば、 Olimexを試してみてください。低コストの「Wiggler」クローンJTAGアダプターもあります。