ARMマイクロコントローラの優れた初心者向けの本を探しています。CPUアーキテクチャとブートシーケンス、そして理想的にはアセンブラ、Cおよび周辺機器もカバーする必要があります。
私はこのような本をAVR用に持っていますが、Atmelチップにはいくつかの良い選択肢があるようです。ARMランドスケープはより複雑で、複数のベンダーといくつかのクラスのチップがあります。Amazonを見ても、明確なお気に入りは明らかになりませんでした。いくつかの推奨事項をいただければ幸いです。
ARMマイクロコントローラの優れた初心者向けの本を探しています。CPUアーキテクチャとブートシーケンス、そして理想的にはアセンブラ、Cおよび周辺機器もカバーする必要があります。
私はこのような本をAVR用に持っていますが、Atmelチップにはいくつかの良い選択肢があるようです。ARMランドスケープはより複雑で、複数のベンダーといくつかのクラスのチップがあります。Amazonを見ても、明確なお気に入りは明らかになりませんでした。いくつかの推奨事項をいただければ幸いです。
回答:
ARMインフォメーションセンターに行くことをお勧めします。私が懸念している限り、それは良いスタートです。1つのMCUからARMに移行する場合でも、多くの情報が提供されます。http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dai0211a/index.html また、ARMチップのATMELサイトも非常に役立ちます。優れたドキュメントと多数のアプリケーションノート。ではごきげんよう。
ARM ARM、ARM Architectural Referenceマニュアルを検索してください。ブートプロセス、アーキテクチャ、アセンブリ(ARM、thumbおよびthumb2)、すべてをカバーしています。ARM ARMは汎用です。興味のある特定のコアについては、TRM(テクニカルリファレンスマニュアル)もあります。これらのドキュメントはすべて、ARMのWebサイトから無料で入手できます。TRMは、特に新しいCortex-M3ベースのマイクロコントローラーの1つを使用する場合、ブートシーケンス、または例外テーブルが従来のARMとは異なる場合にTRMが必要な場合、そのコアの特定の詳細を取得しますCortex-M3を使用して情報を見つけます。
キャッシュまたはmmuを備えたアームになった場合は、ARMのWebサイトからそのためのTRMも取得する必要があります。特定のベンダーチップに組み込まれている特定のコアを知る必要があります。たとえば、PL310 r2p0はr3p0と異なる場合があります。ベンダーはこの情報を持っている必要があり、通常はアームドキュメントへのリンクまたはアームドキュメントを直接提供する場合があります。通常、アームドキュメントは独自のドキュメントに埋め込まれません。ARMはその方法を好むと思います。
Cに関する限り、それはCであり、特別なものではありません。ARMは、メインストリームコンパイラ、gcc、llvm、Keil(現在はARMが所有)、IAR、グリーンヒルなどでサポートされています。しかし)。ARMにとって特別なことはありませんが、特定のコンパイラとそのリンクのニュアンスを知る必要があります。Code Sourceryは、gccベースのARMコンパイラをすぐに使用できるようにするための手段です。LITEバージョンは無料でダウンロードして使用できます。サポートが必要な場合はバージョンに料金がかかります(google.com読む時間があります)。コードソースの前には、emdebianは行くべき場所でしたが、yagartoとdevkitarmとwinarmはすべてソリューションを使用する準備ができていました(組み込み用であり、必ずしもLinuxではありません、Linux用クロスコンパイルしたい場合はCode Sourceryまたはemdebian)。
実際にはブログではないいくつかのブログがありますが、いくつかのサンプルプログラムと、いくつかの異なるARMベースのマイクロコントローラーを起動する方法に関する情報を掲載しています。一部のC、一部の古いブログでは、独自のgccベースのクロスコンパイラを構築する方法を示しています。私はllvm情報も持っているかもしれません(thumbulatorにはいくつかの例がありますが、文書化されていません)、すぐにllvmをいくつかのプラットフォームのクロスコンパイラとして使用できます.gccのようなターゲットにビルドする必要はありません。また、llvmのコード生成はgcc 4.xに追いついています(gcc 4.xは必ずしもgcc 3.xよりも優れているとは限らず、gccもllvmもARM独自のコンパイラーのような他の高価な支払いほど優れていません)。
http://stm32stuff.blogspot.com/
そこから私のプロフィールをクリックして、lpc、lmi(luminary micro、stellarisパーツ、現在tiが所有)sam7の同様の情報を見つけることができます。私はlpcファミリーのファンではありませんが、mbed2は痛みを伴う青いLED以外は大丈夫です。現在、12ドルのstm32ベースのボードがあり、いくつかの発見があり、すぐに使用できます。coridiumには、mapleと同様にarduinoフットプリントに一致するボードがあり、sparkfun(sparkfunでたくさんのグッズ)を取得できます。より強力なものを探している場合、ビーグルボードはインターフェースの欠如のために苦痛でした、同じ価格の中国語版は優れています(1〜2週間で表示されますが、追跡情報はありません)、イーサネットとネジ止めされていないシリアルポート。私はタカボードが好きですが、設計ガイドに従わなかったため、omapに問題があるかもしれません。プラグコンピューティングの人々のopenrdが好きでしたが、プラグバージョンは嫌いでした。openrdにはボード上にSATA電源とデータコネクタがあり、ハードドライブを接続するだけで、このクラスの他のボードはフラッシュベースのものを強制的に実行します(読み取り:非常に遅い)。いずれにせよ、マーベルのコアは現在、ティオマップの周りを回っています。
または、サムシミュレーター(github)の親指命令セットシミュレーターを無料で試してみてください。ただし、親指だけで腕はありません(コードを$ 12のようにstm32ボードに渡すことができます)。gdbやその他の場所にあるarmulatorはおそらく使用するのに苦痛がありますが、腕と親指をサポートします。シリアルポート出力以外のコードの動作を確認することに興味がない場合は、qemuは使いやすいです。qemuは腕、親指、親指2をサポートしています。1つまたは2つの星型ボードがモデル化されていると思います。
AVRアセンブラーを既に知っている場合、それはそれほど優れた命令セット(一部より優れている、他より劣る)ではないので、ARMまたは親指に問題はないはずです。同様に、AVRで埋め込みC(サンドボックスの外側)を実行した場合、ARMは同じかより簡単になります。mbedまたはmapleを使用すると、簡単に開始できるサンドボックスが用意されているので、自分で冒険したい場合は、多くのトラブルなしに対応できます。mbedでは、.binを仮想フラッシュドライブにコピーするだけです。Mapleのローダーまたはdfu-utilを使用する場合は、覚えていないようなものです。
ARMに関する優れた書籍は次のとおりです。
スティーブ・ファーバーによる「ARM SOC Architecure」
Andrew Sloss、Dominic Symes、Chris Wrightによる「ARMシステム開発者ガイド」
ARMによる「ARMアーキテクチャリファレンスマニュアル」
最後のものはARMのサイトで無料で入手できます。
Sloss、Symes、Wrightは、特に木から離れて森を見たい場合、特に組み込みシステムの作業が必要な場合に優れています。
Furberは、元のARMアーキテクトの1人であり、ARMの設計の理論的根拠と、ARMプロセッサコアの一般的な動作を説明する素晴らしい仕事をしています。
もちろん、上記のすべては私の個人的/主観的な意見に基づいた単なる推奨事項であり、特定の製品または著者のプラグと見なされることはありません。
Hitexには、ダウンロードできる次の書籍があります。
「GNUを使用したベアメタルARMシステムの構築」という名前の良いシリーズチュートリアルがあります。