14

わかりました。ARMプロセッサのプログラミングについて少し混乱しています。質問時間の集中砲火:

  • コンパイルされたバイナリをARMプロセッサに取り込むにはどうすればよいですか?
  • JTAGは通常の方法ですか(私の研究が示しているのはそれだと思います...)?
  • それが唯一の方法ですか?
  • それが有効な方法である場合、正確にどのようにそのように使用しますか?
  • そうでない場合、それは何ですか/どうすればよいですか?

さらに、Arduinoなどを使用して即席のJTAGインターフェイスを作成できます(それが実際にARMデバイスのプログラミングに必要な場合)。。。?

コードなどをテストするためにQEMUを既にセットアップしましたが、実際にコードを物理領域に取り込む方法がわかりません。

私は基本的に質問しています:JTAGはARMの世界のデバイスプログラマーですか?Arduino(Arduino wiggler Clone oo)でスプーフィングできますか?JTAGがそうでない場合、それは何ですか、そして私はそれをスプーフィングできますか?

ああ...そして、JTAGがどのように機能するかについてのより良い説明が必要かもしれません。

ここで少し背景情報を説明します。
私は古いPalmDevice(LifeDrive)を持っています。これには、XScalePXA270プロセッサが搭載されていると思います。活発なコミュニティ開発はもう行われていないようで、私はもうほとんど役に立たないので、ちょっと遊んだり、いじったりしたいと思います。基本的に、これは、本質的に大量のセンサーやその他のさまざまな入力と出力を試してみたり、ARMアセンブリに慣れたりするための良い方法です。

私が間違ったアプローチを取っているかどうかを自由に教えてください、しかし少なくとも代替案を提供してください(私は特にLifeDriveをいじることにかなり設定されていますが、組み込みプログラミングをいじりたいだけなら、代わりにArduinoでそうします。)

ほぼ今、すべてが暗闇の中でのショットです。どこにも行かないのに少しうんざりしているので、投稿しました。

4

3 に答える 3

18

それはたくさんの質問です!ここにいくつかの答えがあります:

コンパイルされたバイナリを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デバイスの複雑な端にあります(ほぼARM9ARM11の間にあります))、PLLクロック制御、SDRAM制御とタイミング、MMU構成などのデバイスに慣れていない場合は、もっと簡単なものを検討することをお勧めします。それだけでなく、フラッシュとRAMの両方がオフチップになるため、メモリやその他の外部デバイスのアドレスマッピングの詳細、および必要なSDRAMタイミングの詳細が必要になります。消費者向けデバイスであるため、このような詳細はリバースエンジニアリング以外では利用できない場合があります。

とはいえ、ブートローダーに関する以前のコメントに関して、Palmはデバイスにユーザーがインストール可能なROMアップデートを提供するため、ブートローダーが必要です。ただし、画像ファイル形式とデータ転送プロトコルの詳細が必要です。これらが公開される可能性は低く、リバースエンジニアリングが難しい可能性があります。

組み込みプログラミングをいじりたいだけなら、代わりにArduinoでやります。)

低コストのARM開発ボードがたくさんあります。たとえば、 Olimexを試してみてください。低コストの「Wiggler」クローンJTAGアダプターもあります。

于 2011-01-18T00:56:14.600 に答える
1

JTAGは、RAMまたはフラッシュから実行するためにボードに乗る最も簡単な方法です。これは、CPUのすべての内部レジスタの読み取りと書き込み、およびすべてのI/Oピンの制御を可能にするデバッグツールです。最新のCPUのほとんどはJTAGをサポートしています。

パラレルポートビットバンガー(リグラー)や高価な専用ビルドハードウェアのように単純な場合があります。このように始めるためだけに小さなUSBデバイスを購入しますこの男はPXA270でそれを使用しました。

OpenOCDに関連するすべてのものについては、ここにアクセスしてください。これはデバッグとプログラミングに役立ち、あらゆる種類の単純なJTAGハードウェアが一覧表示されます。

お持ちのプロセッサに関するメモ。広く支持されているようには見えません。おそらく、より広くサポートされているプロセッサを備えた安価な開発ボードを検討する必要があります。

于 2011-01-18T08:13:14.337 に答える
0

具体的にはお役に立てませんが、ARMを使用しています。これは、ARMコンパイラとリンカを使用し、デバイス用に特別に設計されたデバッガを使用してテストします。その後、デバイスがネイティブに実行するメディアにコードがフラッシュされます。

したがって、Palmで実行できるメディアに情報をフラッシュする方法が必要になるか、テスト用のソフトウェアエミュレータが必要になります。Palmについてもっと知りたいのですが、私はもっとゲーム開発の側面にいます:) JTAGはある種のx86エミュレーターのように思われるので、おそらくそこから始めます。

于 2011-01-17T01:12:01.963 に答える